Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息,并且每5秒钟刷新一次。它会显示CPU使用量、内存使用量、交换内存、缓存大小、缓冲区大小、流程PID、用户、命令等。
说明:
前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果。
11:18:26:当前系统时间,根据该值的变化差,可以计算top的刷新间隔秒数。
up 15 days,18:35:系统运行的时间。
1 user :当前登录用户数。
load average:0.00, 0.00, 0.00 系统负载,即任务队列的平均长度。是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行Tasks是进程信息。
118 total :进程总数。
1 running :正在运行的进程数。
117 sleeping 睡眠的进程数。
0 stopped 停止的进程数。
0 zombie 僵尸进程数。
第三行Cpu(s)是cpu信息。注:按“1”键可以显示所有cpu信息。
0.0%us:用户态使用CPU所占时间比。
0.1%sy:系统态使用CPU所占时间比。
0.0% ni:用做nice加权的进程使用的用户态cpu时间比。nice:进程优先级修正值,可正可负,新的优先级=原优先级+nice修正值。
99.9%id:空闲的CPU时间比。
0.0%wa:等待输入输出的CPU时间比。如果一台机器wa过高,则可能是磁盘I/O出现问题,使用iostat进一步分析。
0.0%hi:硬中断占用CPU时间比。
0.0%si:软中断占用CPU时间比。如果程序都没什么问题,那么是没有hi和si的。
0.0%st:虚拟机偷取的时间。一台物理是可以虚拟化出多台虚拟机,在其中一台虚拟机上用top查看发现st不为0,就说明本来有这么多个cpu时间是安排给我这个虚拟机的,但是由于某种虚拟技术,把这个cpu时间分配给了其他的虚拟机了。这就叫做偷取。详见:http://melody-dc.com/2015/11/21/%E7%90%86%E8%A7%A3CPU-steal-time/
最后两行为内存信息。
Mem:
8061376k total :物理内存总量。Total = used + free。
1298152k used:使用的物理内存总量。
6763224k free:空闲的物理内存总量。
296192k buffers:用作内核缓存的内存量。
Swap:
6709240k total:交换区内存总量。
0k used:使用的交换区总量。如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
6709240k free:空闲的交换区总量。
332452k cached:缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
进程信息区
PID |
进程ID |
PPID |
父进程ID |
USER |
进程所有者的用户名 |
PR |
优先级 |
NI |
nice值,即优先级修正值,负代表高优先级,正代表低优先级 |
VIRT |
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES |
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR |
共享内存大小,单位kb |
S |
进程状态。 R:TASK_RUNNING可执行状态(正在运行+可执行但未被执行的进程) S:可中断的睡眠状态 D:不可中断的睡眠状态 T:暂停状态或跟踪状态(信号) Z:退出状态,进程成为僵尸进程 X:退出状态,进程即将被销毁 详见:http://blog.chinaunix.net/uid-28811518-id-4099248.html |
%CPU |
上次更新到现在的CPU时间占用百分比 |
%MEM |
进程使用的物理内存百分比 |
TIME+ |
进程使用的CPU时间总计,单位1/100秒 |
CODE |
可执行代码占用的物理内存大小,单位kb |
DATA |
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
COMMAND |
命令名/命令行 |
按“f”键可以选择显示的内容,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。