Linux性能优化之 CPU 篇 (在公司整理,发布出来记录一下)
1 工欲善其事,必先利其器(常用工具介绍)
1.1 top
top 工具大家都不陌生,但是都有认真看过每个输出参数吗?
上图,是top命令输出的简单示例
最上面5行,是对整个系统的一个概要输出,紧接着空行后面,是对当前系统每个进程数据详细输出
第一行:
参数(输出) | 含义 |
---|---|
14:57:10 | 系统当前时间 |
up 51 days, 19:47 | 系统运行时长 |
11 users | 当前登录用户数 |
load average | 平均负载,有三个数值,分别表示过去 1,5,15各种系统平均负载 |
平均负载:活跃进程数的指数衰减平均值。直观理解成平均活跃进程数就可以了,指单位时间内,活跃进程数。
第二行:进程状态汇总
参数(输出) | 含义 |
---|---|
550 total | 总任务数(总进程数) |
1 running | R 状态进程数 |
549 sleeping | S 状态进程数 |
0 stopped | s 状态进程数 |
0 zombie | Z 状态进程数 |
进程常见状态:
R:running/runnable,运行状态或者可运行状态(就绪队列排队)
S:可中断睡眠状态
D:不可中断睡眠
Z:僵尸
T:跟踪状态
s:停止状态
第三行:cpu使用情况
参数(输出) | 含义(百分比) |
---|---|
us | 用户态程序占用cpu |
sy | 系统或内核态占用cpu |
ni | 低优先级进程占用cpu(nice进程) |
id | idle,空闲 |
wa | 等待IO的cpu时间百分比 |
hi | 硬中断 |
si | 软中断 |
st | stealing(类似提供给虚拟机) |
第四行:内存使用情况
参数(输出) | 含义 |
---|---|
total | 系统总内存 |
free | 空闲内存 |
used | 已使用 |
buff/cache | buff+cache 总量 |
第五行:swap使用情况
参数(输出) | 含义 |
---|---|
total | 总大小 |
free | 空闲大小 |
used | 已使用 |
avail mem | 缓存的大小 |
接下来是针对每个进程的输出,表头常见的字段含义
字段名 | 含义 |
---|---|
NI | nice值(-19-20),数值越小,优先级越高 |
PR | 进程调度优先级,普通调度时,显示数字 NI+20, 实时调度时,显示rt |
VIRT | 进程使用的虚拟内存总量(RES+SWAP)单位kb |
RES | 进程使用的物理内存大小(不包括换出的)单位kb |
SHR | 共享内存大小,单位kb |
S | 进程状态(上文说到的 R D Z S等) |
CPU% | cpu占用率 |
MEM% | 物理内存占用率 |
TIME+ | 进程使用cpu时间总计,单位 10ms |
最后在top界面输入 F,可以自定义想要输出的字段,具体含义可以 man 解决。
类似一些常用快捷键,都可以 man 解决(比如 s 设置时间间隔,b 加高亮,P 按cpu使用率排序,M 按内存使用排序,数字 1, 2, 3 显示逻辑CPU使用情况等)
1.2 vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计