linux性能分析利器(一)——top命令分析CPU和内存

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认linux操作系统提供。

在命令行中直接敲入top回车,即可实时显示系统中各个进程的资源占用状况。如下图:

top命令图

其中各参数含义分别如下:

第一行top:显示了系统当前时间、系统运行了多长时间、当前登录用户、以及系统在1分钟/5分钟/15分钟内的平均负载

第二行tasks:显示了当前进程数是124个,以及有1个正在运行状态、有123个进程在休眠、0个停止运行、0个处于僵尸状态

第三行cpu(s):显示CPU的状态,分别代表的含义是:

0.2% us — 用户空间占用CPU的百分比。

0.3% sy — 内核空间占用CPU的百分比。

0.0% ni — 改变过优先级的进程占用CPU的百分比

99.5% id — 空闲CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

0.0% si — 软中断(Software Interrupts)占用CPU的百分比

0.0% st — Steal Time,分配给运行在主机上其它虚拟机的任务的实际CPU时间,一般只有在虚拟机OS中才有此项

第四行Mem:显示了当前的内存状态,服务器总内存8061564k,已使用7921840k,剩余139724k,缓冲226728k

第五行Swap:显示了交换分区的状态,服务器配置交换分区8208380k,已使用6028k,剩余8202352k,缓存了5963968k

其中关于buffer和cache的区别可以看看以前的一篇文章《linux下的free命令含义详解

下面列表中各列的含义分别是:

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 — 进程名称(命令名/命令行)

在top命令试图中,有些选项特别有用:

1:按核显示CPU状态(数字1)

k:按k之后会出现PID to kill,输入进程pid即可杀死该进程

c:切换显示完整的COMMAND

m:切换是否显示Mem

H:按线程查看CPU和内存的使用情况(此时PID为线程ID)

P:按照CPU使用排序

M:按照内存使用排序

T:根据时间/累计时间进行排序

f或o:选择列表中需要显示的字段(比如显示进程使用的SWAP、CODE、DATA等)

F或O:选择某个字段排序