top
是Linux/Unix中最常用的观察性能的工具之一,但是有很多使用技巧和观察原理值得仔细研究。
一个简单的案例
top - 22:48:55 up 51 days, 8:47, 1 user, load average: 10.79, 10.45, 16.44
Tasks: 5971 total, 20 running, 5948 sleeping, 0 stopped, 3 zombie
Cpu(s): 8.8%us, 7.4%sy, 0.0%ni, 82.9%id, 0.3%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 263819896k total, 100621984k used, 163197912k free, 1986536k buffers
Swap: 0k total, 0k used, 0k free, 30298168k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20855 root 20 0 1308m 1.1g 6276 S 100.6 0.4 852:57.14 qemu-kvm
9830 root 20 0 8770m 8.3g 5544 S 58.3 3.3 2471:14 qemu-kvm
2955 root 20 0 1321m 1.1g 5340 S 42.0 0.4 5627:29 qemu-kvm
- 第一行
- 显示当前时间(
22:48:55
),系统启动时间(up 51 days, 8:47
),当前用户数量(1 user
),以及1分钟,5分钟和15分钟的平均负载10.79, 10.45, 16.44
- 显示当前时间(
有关平均负载的详细解释见 系统负载Load Averages的含义
-
第3行
us
sy
ni
-nice
表示CPU调度优先级,数值越高(+19)表示的优先级越低,而数值越低(-20)则表示优先级越高。可以通过nice
命令来启动一个进程或者在进程运行时通过renice
命令来调整。只有root
用户可以增加一个进程的优先级。
-
第7行字段
PID
进程唯一IDUSER
进程ownerPR
进程优先级(priority)NI
进程NICE值VIRT
进程使用的虚拟内存大小RES
进程使用的物理内存大小SHR
进程使用的共享内存(shared memory)大小S
进程的状态(status): S=sleep R=running Z=zombie%CPU
进程使用的CPU百分比%MEM
进程使用的内存百分比TIME+
进程运行的时间COMMAND
进程的命令
batch mode
是指批量处理无需人工交互的模式,适合脚本调用以及将输出记录到日志文件或通过其他工具进一步处理。 -b
就是Batch mode
top -b -n 5 > top.log
不过,上述top
命令输出5次显示的是所有进程的性能,有可能只需要统计前10项,所以采用head -17
过滤输出(top
命令的前7行是性嫩统计摘要,所以10+7
取了前17行)
top -b -n 5 | head -17 > top.log
-n 5
表示采样5次
以下命令指定对进程7890
进行20次采样,采样间隔时间是0.5
秒
top -d 0.5 -b -n 20 -p 7890
-d 0.5
表示采样间隔0.5
秒
找出最消耗CPU资源的5个进程:
ps aux | sort -nrk 3,3 | head -n 5
或者
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
在top
中,可以通过<
和>
来使用不同的列进行排序。不过不是很直观操作。
可以按下shift+O
来进入排序的子菜单,然后按下k
表示按照%CPU
排序,然后打一下Enter
回车退出菜单。
按下f
来进行字段添加或删除
使用-u
参数显示特定用户进程
top -u tecmint
在top
中,按下z
,则会高亮显示正在运行的进程
启动top -H
,则显示完整线程。如果要观察指定进程的线程,则使用top -H -p <pid>
默认启动只显示一个短命令作为进程展示,要显示完整的路径命令,只要按下c
默认top采样延迟时间是3秒,可以按下d
键来指定采样延迟时间
使用k
来杀死指定进程
按下Shift+P
按照 每个 CPU 使用率来排序进程
按下Shift+M
按照内存使用率来排序进程
使用r
可以更改进程的优先级,也称为renice
按下Shift+W
可以保当前的top配置
t
按键可以切换top的多处理器显示方式,按一次t
切换到多处理器SMP显示模式,再按一次t
会以柱状图显示CPU的繁忙程度