原文地址:http://www.cnblogs.com/txw1958/archive/2012/07/25/linux-top-command.html
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
top可以显示CPU占用率为前几位的进程,并提供CPU的实时活动情况
语法:top [-s time] [-d count] [-q] [-u] [-h] [-n number] [-f filename]
-s time 设置屏幕刷新的延时,单位为秒,默认值5秒
-d count 设置屏幕刷新的次数,刷新显示完count次后退出
-q 如果经过nice授权,使用-q可以使top运行的更快一些
-u 用显示User ID代替username,提高命令运行速度
-h 当系统由多个CPU时,个别CPU的状态信息被隐藏,只显示平均状态值
-n number 设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效
-f filename 输出重定向到给定的文件名,默认为16个进程信息
1: top - 09:20:44 up 1:49, 1 user, load average: 0.07, 0.02, 0.00
2: Tasks: 67 total, 1 running, 64 sleeping, 2 stopped, 0 zombie
3: Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
4: Mem: 514280k total, 313348k used, 200932k free, 20480k buffers
5: Swap: 2008116k total, 0k used, 2008116k free, 217160k cached
6:
7: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8: 1 root 16 0 1696 552 472 S 0 0.1 0:00.57 init
9: 2 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
10: 3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
11: 4 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
12: 5 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
13: 6 root 5 -10 0 0 0 S 0 0.0 0:00.00 events/0
14: 7 root 5 -10 0 0 0 S 0 0.0 0:00.00 events/1
15: 8 root 5 -10 0 0 0 S 0 0.0 0:00.00 khelper
16: 9 root 15 -10 0 0 0 S 0 0.0 0:00.00 kacpid
统计信息区(前五行)
第一行:任务队列信息,同 uptime 命令的执行结果。其内容如下:
09:20:44 当前时间
up 1:49 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.07, 0.02, 0.00
系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行:进程信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
67 total 进程总数
1 running 正在运行的进程数
64 sleeping 睡眠的进程数
2 stopped 停止的进程数
0 zombie 僵尸进程数
第三行:CPU的信息。当有多个CPU时,可能不止一行。内容如下:
0.0% us (user mode)用户占用CPU百分比
0.0% sy (system mode)系统占用CPU百分比
0.0% ni (low priority user mode (nice))低优先级用户占用CPU百分比
100.0% id (idle task)空闲任务占CPU百分比
0.0% wa (I/O waiting)等待输入输出的CPU时间百分比
0.0% hi (servicing IRQs)硬件中断占CPU百分比
0.0% si (servicing soft IRQs)软件中断占CPU百分比
有些系统还可以看到st(Steal Time)
%st(steal)用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间
IBM’s definition of steal time is actually pretty good:
Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.
A high steal percentage may mean that you may be outgrowing your virtual machine with your hosting company. Other virtual machines may have a larger slice of the CPU’s time and you may need to ask for an upgrade in order to compete. Also, a high steal percentage may mean that your hosting company is overselling virtual machines on your particular server. If you upgrade your virtual machine and your steal percentage doesn’t drop, you may want to seek another provider.
A low steal percentage can mean that your applications are working well with your current virtual machine. Since your VM is not wrestling with other VM’s constantly for CPU time, your VM will be more responsive. This may also suggest that your hosting provider is underselling their servers, which is definitely a good thing.
第四行:物理内存信息
最后两行为内存信息。内容如下:
514280k total 物理内存总量
313348k used 使用的物理内存总量
200932k free 空闲内存总量
20480k buffers 用作内核缓存的内存量
第五行:交换内存信息
2008116k total 交换区总量
0k used 使用的交换区总量
2008116k free 空闲交换区总量
217160k cached 缓冲的交换区总量
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
列名 含义
PID 进程id
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。