![Linux top - 一叶偏舟 - jiangcheng 的博客 Linux top - 一叶偏舟 - jiangcheng 的博客](http://img.ph.126.net/bDDlU5W3VCHn5w6uVbVRsQ==/2182275494537840959.jpg)
top 是linux系统中查看CPU使用情况命令,其中第三行、四行是各CPU的使用情况(多核CPU,进入top视图后按“1”)。
us:表示用户进程处理所占的百分比。
sy:表示系统内核线程处理所占的百分比。
ni:表示被"nice"命令改变优先级的任务所占百分比。
id:表示空闲时间所占的百分比。
wa:表示在执行过程中等待IO所占的百分比。
hi:表示硬件中断所占的百分比。
si:表示软件中断所占百分比。
PS:Llinux(Linux System and NetWork Performance Monitoring)
建议用户进程的CPU消耗比率应该在 65%-70%
内核的CPU消耗比率应该为30%-35%
us
us 值过高,表示运行的应用消耗了大部分的 CPU ,如下是找出具体消耗 CPU 的线程的办法:
首先通过 top 或 pidstat 命令找出消耗 CPU 严重严重的线程及其 ID ,将些 ID 转化为十六进制的值。之后通过kill -3 [javapid] 或 jstack 的方式 dump 出应用的 java 线程信息,通过之前转化的十六进制的值找到对应的 nid 值的线程。该线程即为消耗 CPU 的线程。可多执行几次上述过程,以确保找到真实的消耗 CPU 的线程。
sy
sy 值高时,表示系统花费了更多的时间在进行线程切换, JAVA 应用造成这种现象的主要原因是启动的线程比较多,且这些线程多数都处于不断的阻塞和执行状态的变化过程中,导致系统不断的切换线程,产生大量的上下文切换。