top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
- d:改变显示的更新速度;
- q:没有任何延迟的显示速度;
- c:切换显示模式,要么显示完整路径/要么显示名称
- S:累计模式,会将已经完成或消失的子进程的CPU time累计起来。
- s:安全模式,不可使用交互式命令。
- i:不显示任何闲置或无用的进程。
- n:更新次数,完成后会退出 top。
- b:搭配参数n一起使用,可以用来将top的结果输出到文件。
常用的性能分析工具,能够实时显示(动态刷新)系统中各个进程的资源占用情况,类似任务管理器。
【前五行】当前系统情况整体的统计信息:
- 任务队列信息。当前系统时间;系统运行时间;当前登录用户数;load average:1 分钟 5 分钟 15 分钟 负载情况。(使用率,如果是多核,要处理逻辑核心数)
如果这个数除以逻辑 CPU 的数量,一般应该在 1 以下,结果高于 5 的时候就表明系统在超负荷运转了,0.05 表示从当前时间到过去的15分钟内大概有0.05个进程(线程)在等待 CPU 资源,CPU 有 95% 的时间是闲着的,如果这个值为5,代表5倍CPU处理能力的进程(线程)在等待CPU资源,但不代表CPU满负荷运行。
- 任务。系统总进程数;处于 running 的进程数;sleeping 进程数(等待事件完成);stoped 状态进程数;zombie 状态进程数(父进程没有获取子进程的退出状态,子进程为僵尸状态);
- CPU 信息(利用率)。us - 用户空间占用 CPU 百分比(<0.6);sy - 内核空间占用 CPU 百分比(us+sy<0.8);ni - 改变过优先级的进程占用 CPU 的百分比;id - CPU 空闲时的百分比; wa - IO 等待占用 CPU 的百分比(<0.3);hi - 硬中断占用 CPU 的百分比 si - 软中断占用 CPU 的百分比;
- 内存。
- SWAP 交换分区。
CPU Load average 低 CPU 利用率 低 - CPU资源良好,系统运行正常
CPU Load average 低 CPU 利用率 高 - 确认是否程序有问题,少量进程消耗大量资源
CPU Load average 高 CPU 利用率 低 - CPU不再处理资源,文件IO和网络IO操作较多,IO瓶颈,程序虽然占着时间片/CPU,但是在等待IO,CPU不工作
CPU Load average 高 CPU 利用率 高 - CPU 资源不足
【第六行】None
【第七行】各进程的状态监控
- PID - 进程 id
- USER - 进程所有者
- PR - 进程优先级
- NI - nice 值。负值表示高优先级,正值表示低优先级
- VIRT - 进程使用的虚拟内存总量,kb,VIRT=SWAP+RES
- RES - 进程使用的、未被换出的物理内存大小 kb,
- SHR - 共享内存大小,kb
- S - 进程状态。D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程, I 是 Idle 的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。
- %CPU - 上次更新到现在的 CPU 时间占用百分比
- %MEM - 进程使用的物理内存百分比
- TIME+ - 进程使用的 CPU 时间总计,1/100 秒(1秒=1000毫秒(ms), 1毫秒=1/1000秒(s);)
- COMMAND - 进程名称(命令名/命令行)
小技巧
- 键盘数字 1,监控每个逻辑 CPU 的状况。
- 键盘字母 b,打开/关闭高亮效果,显示当前运行进程
- 键盘字母 x,显示当前排序依据。默认进入top时,各进程是按照CPU的占用量来排序的
- 通过”shift + >”或”shift + <”可以向右或左改变排序列
-
top -c
显示完整命令
-
top -p xxx
显示指定进程
- top 的交换命令
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中