TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.

下面是使用top命令来进行性能检测的截图:

 

linux ios tps居高不下 linux top load_linux ios tps居高不下

 

各参数含义

一、top前5行统计信息

第1行: top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30 第1行是任务队列信息,其参数如下:

 

内容

含义

05:43:27

表示当前时间

up 4:52

系统运行时间 格式为时:分

2 users

当前登录用户数

load average: 0.58, 0.41, 0.30

系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第2行: Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie 第3行: %Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 第2、3行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行,其参数如下:

 

内容

含义

159 total

进程总数

1 running

正在运行的进程数

158 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

37.0 us

用户空间占用CPU百分比

3.7 sy

内核空间占用CPU百分比

0.0 ni

用户进程空间内改变过优先级的进程占用CPU百分比

59.3 id

空闲CPU百分比

0.0 wa

等待输入输出的CPU时间百分比

0.0 hi

硬中断(Hardware IRQ)占用CPU的百分比,CPU服务于硬中断所耗费的时间总额

0.0 si、0.0 st

CPU服务于软中断所耗费的时间总额、Steal Time

 

第4行: KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers 第5行: KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem 第4、5行为内存信息
其参数如下:

 

内容

含义

KiB Mem: 1530752 total

物理内存总量

1481968 used

使用的物理内存总量

48784 free

空闲内存总量

70988 buffers

用作内核缓存的内存量

KiB Swap: 3905532 total

交换区总量

267544 used

使用的交换区总量

3637988 free

空闲交换区总量

617312 cached Mem

缓冲的交换区总量。

上述最后提到的缓冲的交换区总量,这里解释一下,所谓缓冲的交换区总量,即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

计算可用内存数有一个近似的公式:
第四行的free + 第四行的buffers + 第五行的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

任务标志

默认情况下仅显示比较重要的 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 键可以将当前的排序倒转.

 

三、 使用技巧

1.top命令默认值显示前面一部分的进程,若是想要查看全部的进程信息,则需要使用命令:top -ab -n 1,在这个命令中,a表示按内存倒序排列,b表示将所有列输出,n表示只执行一次。

 

2.在使用top -ab -n 1将所有进程信息输出之后,可以使用AWK等类似工具统计信息,例如:统计出COMMAND为httpd的所有进程占用的内存。

3.也可以使用命令top -an -n 1 | grep httpd,查看所有httpd的进程信息,如下图:

linux ios tps居高不下 linux top load_显式_02

4. 常用命令

top   // 每隔5秒显式所有进程的资源占用情况
top -d 2  // 每隔2秒显式所有进程的资源占用情况
top -c  // 每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789// 每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 // 每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数