系统信息
第一行:top - 11:11:17 up 15:18, 4 users, load average: 0.26, 0.19, 0.20
字段 | 字段代表的含义 |
---|---|
top - 11:11:17 | 系统当前的时间 |
up 15:18 | 服务器到目前为止已运行的时间(自己登录的时间) 格式为时:分 |
4 users | 当前服务器登录用户数 |
load average: 0.26, 0.19, 0.20 | 系统负载,任务队列的平均长度; 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 |
系统负载解释:
- 对于单核服务器而言
Load<1:没有等待
Load==1:系统已无额外的资源跑更多的进程了
Load>1:进程都堵着等待资源 - 不同Load值说明的问题
1)1分钟Load>5,5分钟Load<1,15分钟Load<1
短期内繁忙,中长期空闲,是拥塞前兆
2)1分钟Load>5,5分钟Load>1,15分钟Load<1
短期内繁忙,中期内紧张,是拥塞的开始
3)1分钟Load>5,5分钟Load>5,15分钟Load>5
短中长期都繁忙,系统正在拥塞
4)1分钟Load<1,5分钟Load>1,15分钟Load>5
短期内空闲,中长期繁忙,不用紧张,系统拥塞正在好转
查看系统负载vmstat
- 进程数procs
r :运行和等待cpu的进程数,当这个值超过了cpu个数,就会出现cpu瓶颈,说明cpu不足,需要增加cpu。
b : 等待IO的进程数量 - 内存memory
swpd:正在使用虚拟的内存大小(kb)
free:空闲内存大小(kb)
buff:buffer cache的内存大小,对块设备的读写进行缓冲。
cache: page cache的内存数量,文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好 - swap
si:每秒从交换区写入内存的大小(单位:kb/s)
so:每秒从内存写到交换区的大小(单位:kb/s) - io
bi: 读入数据的总量(读磁盘)(每秒kb)
bo: 写入数据的总量(写磁盘)(每秒kb) - system
in:每秒中断数,包括时钟中断
cs:每秒上下文切换数,例如 cs 比磁盘 I/O 和网络信息包速率高得多 - cpu
us:用户进程执行消耗cpu时间
sy:系统进程消耗cpu时间。如果us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
wa:等待IO时间,Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
id:空闲时间(包括IO等待时间)
进程信息
第二行:Tasks: 142 total, 3 running, 139 sleeping, 0 stopped, 0 zombi
字段 | 字段代表的含义 |
---|---|
142 total | 所有启动的进程数:142 |
3 running | 正在运行的进程数:3 |
139 sleeping | 挂起的进程数:139 |
0 stopped | 停止的进程数:0 |
0 zombi | 僵尸进程数:0 |
CPU信息
第三行:%Cpu(s): 1.2 us, 2.5 sy, 0.0 ni, 96.0 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
字段 | 字段代表的含义 |
---|---|
1.2 us | 用户空间占用CPU百分比:1.2 |
2.5 sy | 内核空间占用CPU百分比:2.5 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比:0 |
96.0 id | 空闲CPU百分比:96 |
0.2 wa | 等待输入输出的CPU时间百分比:0.2 |
0.0 hi | 硬中断占用CPU百分比:0 |
0.1 si | 软中断CPU百分比:0.1 |
0.0 st | 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间:0 |
关键字段解释
- 统计使用的是CPU需要用1-%id获取。或者us+sy+si.
- wa:使用率过高的时候,我们需要考虑IO的性能是否有瓶颈,可以在使用iostat、sar等命令做进一步分析;
- hi: 使用率过高时,表示当前硬件中断占用很大的百分比。一般硬件中断我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮系统打散优化系统的硬件中断。
- si:Linux kernel通过用一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断。常见的软件中断一般都是和网络有关。从网卡到IP层的数据报文收发都是si处理的,长时间写日志也可能产生软件中断。
当软中断出现瓶颈的时候,系统有个进行叫ksoftirqd,每个CPU都有自己对应的ksoftirqd/n(n为CPU的逻辑ID),每个ksoftirqd的内核线程都会去运行对应的ksoftirqd(函数)来处理自己的中断队列上的软件中断。所以,当网络出现阻塞的时候,软件中断程序ksoftirqd肯定会出现瓶颈。此时我们可以通过ps aux|grep ksoftirqd查看ksoftirqd的瓶颈
Mem内存信息
第四行:KiB Mem : 8006816 total, 7250680 free, 204584 used, 551552 buff/cache
字段 | 字段代表的含义 |
---|---|
8006816 total | 物理内存总量:8006816 |
7250680 free | 空闲内存总量:7250680 |
204584 used | 使用的物理内存总量:204584 |
551552 buff/cache | 用作内核缓存的内存量:551552 |
交换区信息
第五行:KiB Swap: 0 total, 0 free, 0 used. 7549656 avail Mem
字段 | 字段代表的含义 |
---|---|
0 total | 交换区总量 |
0 free | 闲交换区总量 |
20 used | 已使用交互区总量 |
7549656 avail Mem | 缓冲的交换区总量 |
进程信息
-
PID:进程ID USER:进程所有者 PR:优先级 NI:nice值。负值表示高优先级,正值表示低优先级
-
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
-
RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
-
SHR:共享内存大小,单位kb
-
S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
-
%CPU:上传更新到现在的CPU时间占用百分比
-
%MEM:进程使用的物理内存百分比
-
TIME+:进程使用的CPU时间总计,单位1/100秒
-
COMMAND:命令名/命令行