top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
top - 01:06:48 up??1:22,??1 user,??load average: 0.06, 0.60, 0.48Tasks:??29 total,? ?1 running,??28 sleeping,? ?0 stopped,? ?0 zombie
Cpu(s):??0.3% us,??1.0% sy,??0.0% ni, 98.7% id,??0.0% wa,??0.0% hi,??0.0% si
Mem:? ? 191272k total,? ?173656k used,? ? 17616k free,? ? 22052k buffers
Swap:? ?192772k total,? ?? ???0k used,? ?192772k free,? ?123988k cached
PID USER? ?? ?PR??NI??VIRT??RES??SHR S %CPU %MEM? ? TIME+??COMMAND
1379 root? ?? ?16? ?0??7976 2456 1980 S??0.7??1.3? ?0:11.03 sshd
14704 root? ?? ?16? ?0??2128??980??796 R??0.7??0.5? ?0:02.72 top
1 root? ?? ?16? ?0??1992??632??544 S??0.0??0.3? ?0:00.90 init
2 root? ?? ?34??19? ???0? ? 0? ? 0 S??0.0??0.0? ?0:00.00 ksoftirqd/0
3 root? ?? ?RT? ?0? ???0? ? 0? ? 0 S??0.0??0.0? ?0:00.00 watchdog/0
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
最后两行为内存信息。内容如下:
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程xCOMMAND命令名/命令行yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名zFlags任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
?
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。