4.2 CPU 监测工具
目录
本节我们来介绍 CPU 相关的监测工具,这类工具属于我们前面所说的第一类计数器类命令。
1. 命令总览
下面的图片摘录自极客时间专栏-Linux性能优化实战,分别从下面 3 个方面总结了 CPU 相关的性能检测工具:
- 从 CPU 的性能指标出发,根据指标找工具
- 从工具出发,根据工具找指标
- 根据工具指标之间的内在联系,掌握 CPU 分析的套路
有些工具是通用的分析工具,后面会在单独的章节中详细说明他们的使用。本节会介绍 CPU 专用的分析工具的使用
Linux | Solaris | 作用 | 说明 |
---|---|---|---|
uptime | uptime | 平均负载 | |
vmstat | vmstat | 系统范围的CPU平均负载 | |
mpstat | mpstat | 单个CPU统计信息 | |
time | ptime | 命令计时,带CPU用量分解 | |
dstat | 等于 vmstat + iostat + ifstat 可同时观察CPU、磁盘 I/O、网络以及内存使用情况 |
通用命令,位于独立的一节中 | |
sar | sar | 可统计包括内存,磁盘,中断等各种信息 | 通用命令,位于独立的一节中 |
ps | ps | 进程状态 | 通用命令,位于独立的一节中 |
top | prstat | 监控每个进程的基本信息 | 通用命令,位于独立的一节中 |
pidstat | prstat | 统计每个进程的内存,IO,上下文切换等信息 | 通用命令,位于独立的一节中 |
stap,perf | Dtrace | CPU剖析和跟踪 | 通用命令,位于独立的一节中 |
perf | cpustat | CPU性能计数器分析 | 通用命令,位于独立的一节中 |
除了上述命令之外,还包括以下内容:
- CPU 调度延迟统计
- CPU 的调优手段
2. CPU 统计工具
2.1 uptime
|
|
输出:
- top - 14:58:20: 系统当前时间
- up 4:33: 系统已运行时间
- 3 users:当前在线用户
- load average:平均负载:最近1分钟、5分钟、15分钟系统的平均负载
说明:
- 平均负载:平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数
- 可运行状态:正在使用 CPU 或者正在等待 CPU 的进程,对应 ps R 状态(Running 或 Runnable)进程
- 不可中断状态:正处于内核态关键流程中的进程,并且这些流程是不可打断的,对应 ps D 状态(Uninterruptible Sleep,也称为 Disk Sleep)进程
2.2 vmstat
|
|
vmstat [t [n]]
- 作用: 虚拟内存统计命令
- 说明: 完成的使用方法见内存相关部分的内容,CPU 中重点关注 procs 中 r 值的输出
- 参数:
- -t:采样间隔
- -n:采样次数,可选,默认值是1
- -S: -Sm 以MB 为单位显示结果
- -a: 输出非活动和活动页缓存的明细
- -s: 以列表显示内存统计信息
- -w: 以整齐格式显示
- 输出:
- system:
- in: 硬中断次数
- cs: 上下文切换次数
- procs:
- r: 可运行线程数,所有等待加上正在运行的线程数,不包括处于不可中断睡眠状态的线程
- b: 等待IO的进程数量
- cpu:
- 系统全局范围内的平均负载
- 第一行统计的系统启动以来的平均负载 – 新版本可能不会显示
- 其余行统计的是时间间隔周期内的平均负载
- memory:
- swpd: 交换出的内存量
- free: 空闲可用内存
- buff: 用于缓冲缓存的内存
- cache: 用于页缓存的内存
- swap:
- si: 换入的内存
- so: 换出的内存
- system:
2.3 mpstat
|
|
mpstat [t [n]]
- 作用: 报告每个 CPU的统计信息
- 参数:
-P {cpu [,...] | ON | ALL}
: 指示要报告统计信息的处理器编号,从 0 开始- ON: 表示在线的 CPU
- ALL: 表示所有 CPU
I {SUM | CPU | ALL}
: 报告中断统计信息- 使用SUM关键字,mpstat命令报告每个处理器的软中断总数
- 使用CPU关键字,显示CPU或CPU每秒接收的每个中断的数量
- ALL关键字等效于指定上面的所有关键字,因此显示所有中断统计信息。
-A
: 等效于mpstat -I ALL -u -P ALL
-u
: 报告CPU使用率,默认参数
2.4 time
time command
- 作用: 运行命令并报告 CPU用量
- 其他:
/usr/bin/time -v command
可以输出更详细的信息
|
|
3. CPU 延时统计
getdelays.c
4. CPU 调优
4.1 sysbench
CPU 性能测试
4.2 chrt
nice/renice
系统调用:
- setpriority(): 调整优先级
- sched_setscheduler(): 设置优先级和调度策略
4.3 调度器选项
/proc/sys/sched
4.4 进程绑定
taskset