Linux 系统负载查看之top 指令
2016-07-31
top
指令是最常用的系统负载查看工具了
展示与说明
top - 23:39:49 up 5 min, 1 user, load average: 0.40, 0.23, 0.13
Tasks: 489 total, 1 running, 488 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 3.4 sy, 0.0 ni, 49.4 id, 47.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 4033728 total, 776172 used, 3257556 free, 107240 buffers
KiB Swap: 4192252 total, 0 used, 4192252 free. 273948 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2604 root 20 0 4380 1772 1592 D 7.3 0.0 0:01.87 updatedb.mlocat
7 root 20 0 0 0 0 S 1.0 0.0 0:01.21 rcu_sched
9 root 20 0 0 0 0 S 1.0 0.0 0:00.67 rcuos/1
1597 sphinx 20 0 48272 11964 7128 S 0.7 0.3 0:01.61 searchd
1525 redis 20 0 37004 8800 2420 S 0.3 0.2 0:00.48 redis-server
1540 mysql 20 0 689952 61964 10660 S 0.3 1.5 0:01.42 mysqld
1624 root 20 0 163644 7064 6264 S 0.3 0.2 0:00.49 vmtoolsd
2443 tony 20 0 29420 3372 2576 R 0.3 0.1 0:00.17 top
1 root 20 0 33776 4340 2668 S 0.0 0.1 0:02.95 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.12 ksoftirqd/0
这是我的系统的top指令的部分结果
第一行:
表示的是当前系统已经运行的时间, 已登录的用户数量和系统负载的情况
load average 后面的三个值, 分别表示最近一分钟,最近5分钟,最近15分钟的负载情况
一般来说, 当这些数值的值与CPU的数量相同时, 就表示系统已经满载运行了, 如果更高, 则表示系统超负荷运行了, 这种时候就表示要立即对系统进行干预, 查找原因,降低负载, 否则,系统将可能因为负载过高而无法提供正常的服务
第二行:
Tasks 所在的行表示当前系统运行的进程的统计,比如这里我们可以看出, 系统总共有489个进程, 其中一个正在runing
的状态, 488在sleeping
状态, 0个stopped
状态,0个zombie
状态
runing
表示当前cpu
正在处理的进程,sleeping
表示正在等待cpu
进行处理的进程,stopped
表示cpu
不会进行处理的进程,zombie
是一个无法进行处理的进程(僵尸进程),这种进程都是异常进程
第三行:
%Cpu(s): 这一行表示cpu的平均负载情况说明
0.2 us, 3.4 sy, 0.0 ni, 49.4 id, 47.0 wa, 0.0 hi, 0.0 si, 0.0 st
cpu 被占用时, 各个阶段所占用的时间百分比,比如这里就是: 系统平均使用 0.2%
于用户进程,0.4%
于系统进程, 49.4%
处于空闲, 47.0%
的时间正在进行I/O
操作
从这里可以看出, 目前这个系统的 I/O
操作比较频繁
第四行:
这一行表示系统的内存情况说明,
第五行:
这一行是系统的swap
空间的情况说明
这里讲第四行和第五行一起说明一下:
系统内存的实际可用的空间的计算方法应该是Mem的Free + Mem的buffers + Swap 的cached
, 并不是直接的Free
剩下的部分就是各个进程的运行的情况了,包括了内存空间, cpu, 进程优先级等等信息, 可以直观的看出来
这里展示一条
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1597 sphinx 20 0 48272 11964 7128 S 0.7 0.3 0:01.61 searchd
依次是
1597(进程id)
sphinx(进行运行用户)
20(进程优先级)
0(nice 值,会影响进程的优先级)
48272(进程的虚拟内存空间)
11964(进程实际占用的物理内存空间)
7128(进行占用的共享内存空间)
S(进程处于sleeping 状态)
0.7(进程占用了0.7%的cpu处理时间)
0.3(进程占用的内存空间的百分比)
0:01.61 (进程已经运行的时间)
command (进程启动命令)
关于虚拟内存,物理内存和共享内存之间的关系, 可以查看 http://blog.csdn.net/rebirthme/article/details/50402082
里面进行了比较简单的描述
另外: 进入top
状态后还可以通过一些快捷键对展示的内容进行操作,比如按数字1
,就能把上面第三行内容展开,查看各个cpu
的运行状态. P(大写)
就可以将下面的进程按照占用CPU的倒序进行排列,M
是按照占用内存倒序排列.等等