常见指标分类(USE法)




| 资源 |
类型 |
性能指标 |
| CPU |
使用率 |
CPU使用率 |
| CPU |
饱和度 |
运行队列长度或平均负载 |
| CPU |
错误数 |
硬件cpu错误数 |
| 内存 |
使用率 |
已用内存百分比或SWAP用量百分比 |
| 内存 |
饱和度 |
内存换页量 |
| 内存 |
错误数 |
内存分配失败或OOM |
| 存储设备I/O |
使用率 |
设备I/O事件百分比 |
| 存储设备I/O |
饱和度 |
等待队列产犊或延迟 |
| 存储设备I/O |
错误数 |
I/O错误数 |
| 文件系统 |
使用率 |
已用容量百分比 |
| 文件系统 |
饱和度 |
已用容量百分比 |
| 文件系统 |
错误数 |
文件读写错误数 |
| 网络 |
使用率 |
带宽使用率 |
| 网络 |
饱和度 |
重传报文数 |
| 网络 |
错误数 |
网卡收发错误数、丢包数 |
| 文件描述符 |
使用率 |
已用文件描述符数百分比 |
| 连接跟踪 |
使用率 |
已用连接跟踪数百分比 |
| 连接数 |
饱和度 |
TIMEWAIT状态连接数 |
常见性能工具
在系统性能优化时通常有两个阶段:一个是性能剖析(performance profiling),另一个是性能优化。性能剖析的目标是找到性能瓶颈,查找引发性能问题的根源。在性能剖析阶段,需要借助一些性能分析工具。
CPU性能工具
| 性能指标 |
性能工具 |
说明 |
| 平均负载 |
uptime、top、/proc/loadavg |
uptime最简单;top提供更全的指标;/proc/loadavg常用于监控系统 |
| 系统CPU使用率 |
vmstat, mpstat, top, sar, /proc/stat |
top、vmstat、mpstat只可以动态查看,而sar还可以记录历史数据;/proc/stat是其他性能工具的数据来源,也常用于监控 |
| 进程CPU使用率 |
top, ps, pidstat, htop, atop |
top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程;htop和atop以不同颜色显示更直观 |
| 系统上下文切换 |
vmstat |
除了上下文切换次数,还提供运行状态和不可中断状态的进程数 |
| 进程上下文切换 |
pidstat |
注意加上-w参数 |
| 软中断 |
top, mpstat, /proc/softirqs |
top提供软中断cpu使用率,而/proc/softirqs和mpstat提供了各种软中断在每个CPU上的运行次数 |
| 硬中断 |
vmstat, /proc/interrupts |
vmstat提供总的中断次数,而/proc/interrupts提供各种中断在每个CPU上运行的累计次数 |
| 网络 |
dstat, sar, tcpdump |
dstat、sar提供总的网络接受和发送情况,而tcpdump则是动态抓取正在进行的网络通讯 |
| I/O |
dstat, sar |
dstat和sar都提佛那个了I/O的整体情况 |
| CPU缓存 |
perf |
使用perf stat子命令 |
| CPU数 |
lscpu, /proc/cpuinfo |
lscpu更直观 |
| 事件剖析 |
perf, 火焰图, execsnoop |
perf和火焰图用来分析热点函数以及调用栈,execsnoop用来监测短时进程 |
| 动态追踪 |
ftrace, bcc, systemtap |
ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核>=4.1) |
内存性能工具