(一)常见的性能指标及USE分类法
1.CPU 性能指标
- 1.1 CPU 使用率
- 用户 CPU
- 系统 CPU
- IOWAIT
- 软中断
- 硬中断
- 窃取 CPU
- 客户 CPU
- 1.2 上下文切换
- 自愿上下文切换
- 非自愿上下文切换(CPU抢占)
- 1.3 平均负载
- 1.4 CPU 缓存命中率
2.内存性能指标
-
2.1 系统内存指标
已用内存
剩余内存
可用内存
-
缺页异常
主缺页异常 次缺页异常
-
缓存 / 缓冲区
使用率 命中率
Slabs
-
2.2 进程内存指标
虚拟内存(VSS)
常驻内存(RSS)
按比例分配共享内存后的物理内存(PSS)
独占内存(USS)
共享内存
SWAP 内存
-
缺页异常
主缺页异常 次缺页异常
-
2.3 SWAP
- 已用空间
- 剩余空间
- 换入速度
- 换出速度
3. IO性能指标
- 3.1 文件系统
存储空间容量、使用量以及剩余空间
索引节点容量、使用量以及剩余数量
-
缓存
页缓存 目录项缓存 索引节点缓存 具体文件系统的缓存(如 ext4 的缓存)
IOPS(文件 I/O)
响应时间(延迟)
吞吐量(B/s)
- 3.2 磁盘
使用率
IOPS
吞吐量(B/s)
响应时间(延迟)
缓冲区
-
相关因素
读写类型(如顺序还是随机) 读写比例 读写大小 存储类型(如 RAID 级别,本地还是网络)
4.网络性能指标
- 4.1 应用层
- QPS(每秒请求数)
- 套接字缓冲区大小
- DNS 解析路径
- 响应时间
- 错误数
- 4.2 传输层
-
TCP 连接数
全连接 半连接 TIMEWAIT
连接更总数
重传数
跟踪数
丢包数
延迟
-
- 4.3 网络层
- 丢包数
- TTL
- 拆包
- 4.4 链路层
- PPS(每秒网络帧数)
- BPS(Byte/s)
- 丢包数
- 错误数
5.常见指标分类(USE法)
USE分类: 使用率、饱和度、错误数
资源 | 类型 | 性能指标 |
---|---|---|
CPU | 使用率 | CPU 使用率 |
CPU | 饱和度 | 运行队列长度或平均负载 |
CPU | 错误数 | 硬件 CPU 错误数 |
内存 | 使用率 | 已用内存百分比或 SWAP 用量百分比 |
内存 | 饱和度 | 内存换页量 |
内存 | 错误数 | 内存分配失败或 OOM |
存储设备 I/O | 使用率 | 设备 I/O 时间百分比 |
存储设备 I/O | 饱和度 | 等待队列长度或延迟 |
存储设备 I/O | 错误数 | I/O 错误数 |
文件系统 | 使用率 | 已用容量百分比 |
文件系统 | 饱和度 | 已用容量百分比 |
文件系统 | 错误数 | 文件读写错误数 |
网络 | 使用率 | 带宽使用率 |
网络 | 饱和度 | 重传报文数 |
网络 | 错误数 | 网络收发错误数、丢包数 |
文件描述符 | 使用率 | 已用文件描述符数百分比 |
连接跟踪 | 使用率 | 已用连接跟踪数百分比 |
连接数 | 饱和度 | TIMEWAIT 状态连接数 |
(二)常见性能工具
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) |