Linux中在使用top命令的时候会看到这么一行:linux
里面的各个值分别是什么意思呢?ios
今天被问到这个问题,发现答的不是很清楚。果真啊,每天用最多的top命令都还没摸透。。。惭愧。。。因而就查了些资料:spa
Cpu(s)表示的是cpu信息。各个值的意思是:.net
好了,若是说列出上面的条条框框说我懂了,那真是自欺欺人了。下面是我本身的理解翻译
好比一秒内有100个cpu时间片,这个cpu时间片就是cpu工做的最小单位。那么这100个cpu时间片在不一样的区域和目的进行操做使用,就表明这个区域所占用的cpu时间比。也就是这里得出的cpu时间百分比。unix
好比下面一个程序:code
将文件从磁盘的src位置拷贝到磁盘的dst位置。文件会从src先读取进入到内核空间,而后再读取到用户空间,而后拷贝数据到用户空间的buf上,再经过用户空间,内核空间,数据才到磁盘的dst上。htm
因此从上面这个程序来看,cpu消耗在kernel space的时候就是sy(系统态使用的cpu百分比),cpu消耗在user space的时候就是us(用户态使用的cpu百分比)。blog
若是程序都没什么问题,那么是没有hi和si的,可是实际上有个硬中断和软中断的概念。好比硬中断,cpu在执行程序的时候,忽然外设硬件(好比硬盘出现问题了)机器须要马上通知cpu进行现场保存工做。这个时候会cpu会出现上下文切换。就是cpu会有一部分时间会被硬中断占用了,这个时间就是hi。相相似,si是软中断的cpu占用时间,软中断是由软件的指令方式触发的。进程
相关软中断和硬中断的概念能够参考:
http://blog.csdn.net/pxz_002/article/details/7327668
ni是nice的意思,nice是什么呢,每一个linux进程都有个优先级,优先级高的进程有优先执行的权利,这个叫作pri。进程除了优先级外,还有个优先级的修正值。即好比你原先的优先级是20,而后修正值为-2,那么你最后的进程优先级为18。这个修正值就叫作进程的nice值。
ni是指用作nice加权的进程使用的用户态cpu时间比,个人理解就是一个进程的所谓修正值就意味着多分配一些cpu时间给这个进程的用户态,这个中间所多分配的cpu时间就是咱们这里的ni。(这个理解没啥把握,若是有错误麻烦帮忙指出下)
wa指的是CPU等待磁盘写入完成的时间,就是说前提是要进行IO操做,在进行IO操做的时候,CPU等待时间。好比上面那个程序,最后一步,从系统空间到dst硬盘空间的时候,若是程序是阻塞的,那么这个时候cpu就要等待数据写入磁盘才能完成写操做了。因此这个时候cpu等待的时间就是wa。
st的名字很生动,偷取。。。是专门对虚拟机来讲的,一台物理是能够虚拟化出几台虚拟机的。在其中一台虚拟机上用top查看发现st不为0,就说明原本有这么多个cpu时间是安排给我这个虚拟机的,可是因为某种虚拟技术,把这个cpu时间分配给了其余的虚拟机了。这就叫作偷取。
剩下的id就是除了上面那么多cpu处理上下文之外的cpu时间片。固然在这些时间片上,cpu是空闲的。
题外话,有个dstat命令也是能够查看cpu的信息的。下图就是dstat -c的显示
其中能够很容易将usr和us,sys和sy,idl和id,wai和wa,hig和hi,siq和si对应起来
可是能够观察到dstat是没有st,ni的统计的,并且它的全部部分加起来总和可能没有100,这就说明dstat实际是没有对st,ni作cpu统计的。使用的时候要注意下这个。
http://hi.baidu.com/higkoo/item/70600834426247483075a1df
http://blog.csdn.net/codestinity/article/details/7496962