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/O
    • mpstat:多处理器/每 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
  • 启用历史采集:
    • 确认 sysstat 服务或 cron 任务开启(如 /etc/cron.d/sysstat/etc/default/sysstat)。
    • 采集文件通常位于 /var/log/sa/(如 saXXsarXX,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/saXXsar -A -f /var/log/sa/saXX(查看当日全部项)
  • 常用选项:
    • -A 全部指标、-P ALL 每 CPU、-b I/O 传输统计、-p 吞吐单位人性化。

6. iostat:块设备/文件系统 I/O

  • 查看设备的吞吐与队列:
    • iostat -xz 1:扩展输出(利用率、平均队列时间、等待比例等),每 1 秒刷新
    • iostat -d 1 5:每设备读写速率与 IOPS
  • 分区与网络文件系统:
    • iostat -p ALLiostat -N(不同版本支持);部分 CIFS/NFS 需 cifsiostatnfsstat

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 5pidstat -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 -dsar -b 联合定位;
    • 软/硬中断:mpstat 结合 /proc/interruptssar -I
    • 网络与协议:sar -nss/netstat 联动。
  • 开销与权限:
    • Sysstat 开销低但仍需合理采样;某些报表需 root 权限以读取更详细信息。

12. 注意事项与局限

  • 不同内核版本或发行版的字段与来源路径可能有差异(如中断来源切换);请以本机 man 页与 /proc 实际为准。
  • 某些指标依赖内核启用的统计与配置;容器场景下命名空间可能影响视图一致性。

13. 参考

相关推荐
@HNUSTer1 个月前
基于 GEE 的 Sentinel-2 光谱、指数、纹理特征提取与 Sentinel-1 SAR 数据处理
云计算·sentinel·数据集·遥感大数据·gee·云平台·sar
aini_lovee1 个月前
射频噪声干扰、调频调幅干扰仿真及SAR成像实现
sar
冲上云霄的Jayden1 个月前
Ubuntu 磁盘 I/O 监控完全指南
ubuntu·vmstat·磁盘监控·iostat·磁盘io·iotop·dstat
@HNUSTer1 个月前
基于 GEE 平台用 Sentinel-1 SAR 数据实现山区潜在滑坡检测
云计算·sentinel·数据集·遥感大数据·gee·云平台·sar
叶余2 个月前
FFmpeg原始帧处理-滤镜设置视频宽高比
sar·宽高比·par·dar·setsar滤镜·aspect ratio
岚天start3 个月前
Linux sar命令详细使用指南
linux·运维·服务器·负载·sar·磁盘io·sysstat
码字的字节4 个月前
Hadoop磁盘I/O瓶颈的监控与优化:从iostat指标到JBOD vs RAID的深度解析
大数据·hadoop·分布式·raid·iostat·磁盘i/o·jbod
cui_win5 个月前
【磁盘】每天掌握一个Linux命令 - iostat
linux·运维·服务器·iostat·磁盘io
你是一个铁憨憨1 年前
在ArcGISPro中使用 SAR 数据和深度学习绘制洪水地图
深度学习·arcgis·制图·sar