sysstat 概览与使用:sar/iostat/mpstat/pidstat(含基础原理)
sysstat 概览与使用:sar/iostat/mpstat/pidstat(含基础原理)
面向运维与性能分析的速览与实操指南;覆盖 sysstat 的组件、指标维度、采集原理、常见用法与数据导出。
参考:sysstat 官方特性页(https://sysstat.github.io/features.html)。
1. sysstat 是什么
- sysstat 是一组系统性能监控与统计工具的集合,涵盖 CPU、内存、I/O、网络、进程/任务、负载等多维度指标。
- 核心工具族:
sar/sadc/sadf:通用系统统计采集与报表(按时间序列)iostat/tapestat/cifsiostat:块设备与文件系统 I/Ompstat:多处理器/每 CPU/NUMA 的统计pidstat:每任务(每 PID)级别的统计
- 特性要点:
- 支持大量指标;支持 UP/SMP/多核/超线程、热插拔 CPU、tickless。
- 可导出为
CSV/XML/JSON/SVG等格式,能生成图(SVG)。 - 可保存历史数据并轮转;支持国际化与自动选择单位显示(
--human)。 - 采集开销很低(C 语言实现),适用于长期驻留监控。
2. 采集原理与数据来源(基础原理)
- 数据来源主要来自内核暴露的接口与伪文件系统:
/proc/stat、/proc/interrupts、/proc/meminfo、/proc/diskstats、/proc/net/*、/sys/class/*等。- 最新 sysstat 在某些维度(如中断统计)切换至更准确的数据源(例如从
/proc/stat到/proc/interrupts)。
- 采样模型:
sadc周期性采集系统快照(计数器与状态),sar展示区间平均与速率(对计数器做差分/归一化)。- 大部分指标按采样周期计算平均值或速率(例如每秒页面错误、每秒读写 KB)。
- 架构支持与低开销:
- 通过轻量轮询与内核接口读取实现;支持 32/64 位与多架构;适应 tickless/nohz。
3. 指标维度速览(按工具族)
sar(系统整体/时间序列):- CPU(全局/每 CPU/NUMA)、内存与交换、虚拟内存/分页/缺页、进程创建、上下文切换、队列与负载、软中断与硬中断、网络协议(SNMPv2)、NFS、套接字等。
iostat/tapestat/cifsiostat:- 设备/分区/网络文件系统的吞吐与 IOPS、平均请求大小与队列时间、等待比例等。
mpstat:- 每 CPU 的使用率(user/system/irq/softirq/iowait/steal/idle)、均衡与热点定位。
pidstat:- 每任务(每 PID)CPU、内存、缺页、I/O、线程统计(及其子进程的汇总)。
4. 安装与数据采集(以常见发行版为例)
- 安装:
- Debian/Ubuntu:
sudo apt-get install sysstat - CentOS/RHEL:
sudo yum install sysstat - Arch:
sudo pacman -S sysstat
- Debian/Ubuntu:
- 启用历史采集:
- 确认
sysstat服务或cron任务开启(如/etc/cron.d/sysstat、/etc/default/sysstat)。 - 采集文件通常位于
/var/log/sa/(如saXX、sarXX,XX 为日期)。
- 确认
5. sar:系统时间序列统计
- 即时查看(每 1 秒输出 5 次):
sar -u 1 5:CPU 使用率(user/system/iowait/idle 等)sar -r 1 5:内存与交换空间统计sar -S 1 5:交换使用sar -q 1 5:运行队列与负载sar -n DEV 1 5:网络接口吞吐;sar -n TCP,UDP 1 5:协议统计
- 历史文件回放:
sar -f /var/log/sa/saXX或sar -A -f /var/log/sa/saXX(查看当日全部项)
- 常用选项:
-A全部指标、-P ALL每 CPU、-bI/O 传输统计、-p吞吐单位人性化。
6. iostat:块设备/文件系统 I/O
- 查看设备的吞吐与队列:
iostat -xz 1:扩展输出(利用率、平均队列时间、等待比例等),每 1 秒刷新iostat -d 1 5:每设备读写速率与 IOPS
- 分区与网络文件系统:
iostat -p ALL、iostat -N(不同版本支持);部分 CIFS/NFS 需cifsiostat或nfsstat。
7. mpstat:每 CPU/NUMA 观察
- 全 CPU 概览:
mpstat -P ALL 1 5 - 关注特定核心:
mpstat -P 3 1 10 - 观察软/硬中断热点:与
sar -I、/proc/interrupts联动分析。
8. pidstat:每任务级统计
- 基础用法:
pidstat 1 5:按 1 秒采样输出 5 次每任务 CPU 使用率pidstat -r 1 5:每任务内存与缺页统计pidstat -d 1 5:每任务 I/O 统计(读写量与等待)pidstat -T ALL 1 5:线程维度统计
- 指定进程或模式:
pidstat -p <PID> -r -d 1 5、pidstat -C <comm_pattern> 1 5
9. sadc/sadf:采集与导出
- 手动采集:
sadc 1 300 /var/log/sa/sa$(date +%d):每 1 秒采集,共 300 次
- 数据导出:
sadf -d /var/log/sa/saXX -- -u -r -q > sysstat.csv(CSV)sadf -j /var/log/sa/saXX -- -u -r -q > sysstat.json(JSON)sadf -x /var/log/sa/saXX -- -A > sysstat.xml(XML)sadf -g /var/log/sa/saXX -- -A > sysstat.svg(SVG 图形)
- 与 PCP:
sadf支持将数据导出为 Performance Co-Pilot (PCP) 归档以联动更强分析工具。
10. SVG 图生成与查看
- 使用
sadf -g生成图表(SVG),可直接在浏览器查看,也可转换为 PNG。 - 示例:
sadf -g /var/log/sa/saXX -- -u > cpu.svg→ 浏览器打开cpu.svg
11. 原理与实践建议
- 采样周期选择:
- 强交互系统建议
1s~5s采样;批处理系统可加大周期减少开销。
- 强交互系统建议
- 历史轮转与容量:
- 配置保留周期与空间大小,防止
/var/log/sa占用过多磁盘。
- 配置保留周期与空间大小,防止
- 与故障排查协同:
- D 状态与 I/O:
iostat/pidstat -d与sar -b联合定位; - 软/硬中断:
mpstat结合/proc/interrupts与sar -I; - 网络与协议:
sar -n与ss/netstat联动。
- D 状态与 I/O:
- 开销与权限:
- Sysstat 开销低但仍需合理采样;某些报表需 root 权限以读取更详细信息。
12. 注意事项与局限
- 不同内核版本或发行版的字段与来源路径可能有差异(如中断来源切换);请以本机
man页与/proc实际为准。 - 某些指标依赖内核启用的统计与配置;容器场景下命名空间可能影响视图一致性。
13. 参考
- Sysstat Features(官方特性页):https://sysstat.github.io/features.html
- 各工具
man页:man sar、man iostat、man mpstat、man pidstat、man sadc、man sadf
