top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,可以说是一个“强化版的Windows任务管理器”。 top是能够动态显示过程,可以通过用户按键来不断刷新当前状态。输入q 退出top命令。
命令格式:
top [参数]
-c 显示完整的命令
-p<进程号> 指定进程
命令功能:
显示当前系统正在执行的进程的相关信息,包括进程ID、CPU占用率、内存占用率等
运行界面如下:
前面的五行为系统整体的统计信息:
第1行:当前系统时间,运行时间,登陆用户数,系统负载(分别为1分钟、5分钟、15分钟的平均值)。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第2行:进程总数,运行中的,睡眠中的,停止的,僵死的。
第3行:用户占用资源,系统内核占用资源,改变过优先级的进程(ni),空闲的资源(id), IO等待(wa),硬中断(Hardware IRQ)(hi),软中断(Software Interrupts)(si),虚拟服务占用的CPU时间百分比(steal time)(st)。
此行数据均为CPU数据并以百分比格式显示,例如”93.4 id”意味着有93.4%的CPU资源正在空闲中。
第4行:物理内存总量,使用量,空闲量,作为内核缓存的内存量。
第5行:虚拟内存(交换区)总量,使用量,空闲量,已被提前加载的内存数据。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:972108k +928k+320844k 。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
上图中表头的含义如下:
PID————– 进程ID
USER ———– 进程所有者
PR ————– 进程优先级
NI—————-nice值。负值表示高优先级,正值表示低优先级
VIRT————- 进程使用的虚拟内存总量,单位kb。(VIRT=SWAP+RES)
RES ————–进程使用的、未被换出的物理内存大小,单位kb。(RES=CODE+DATA)
SHR ————–共享内存大小,单位kb
S —————–进程状态。(D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程)
%CPU————上次更新到现在的CPU时间占用百分比
%MEM———–进程使用的物理内存百分比
TIME+ ———- 进程使用的CPU时间总计,单位1/100秒
COMMAND —–进程名称(命令名/命令行)
例1:top运行界面中输入1,可以对系统多U多核CPU进行监控/取消监控
例2:top运行界面中输入b,可以标注/取消标注当前运行进程
例3:进程是按照CPU的占用量来排序的,输入x标注或取消标注排序列(下图1),使用”shift + <”或”shift + >”可以向左或向右改变排序列(下图2)