当前位置: 首页 > news >正文

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. 参考

  • Sysstat Features(官方特性页):https://sysstat.github.io/features.html
  • 各工具 man 页:man sarman iostatman mpstatman pidstatman sadcman sadf
http://www.dtcms.com/a/572802.html

相关文章:

  • 纯flex布局来写瀑布流
  • 智能网联汽车与低空经济‌:结合5G技术拓展新兴产业
  • RDD的特点、算子与创建方法
  • 删除小目标 cocojson
  • 汽车EDI:基于知行之桥的 Gnotec EDI解决方案
  • 垂直行业门户网站建设方案自己做的网站被黑了怎么办
  • 地图可视化实践录:leaflet学习之综合示例工程设计
  • 《Python工匠》第二章 数值与字符串 关键知识摘录与梳理
  • QuickSSO 与 ECreator 实操应用案例手册
  • Flutter Android Kotlin 插件编译错误完整解决方案
  • 网站设计问题网站开发包含的项目和分工
  • FPGA—ZYNQ学习UART环回(五)
  • 电动汽车充电云与移动应用基础设施的漏洞识别、攻击实验及缓解策略
  • PFMEA中的预防措施和探测措施区别
  • 做钢材的网站php 7 wordpress
  • 告别繁琐手工录入:智能银行票据套打软件,让制单效率飞跃
  • 【Java】理解 Java 中的 this 关键字
  • 在编译OpenHarmony遇到third_party/libnl编译报错的修复办法
  • 建c2c网站俄罗斯乌克兰为什么打仗
  • vue在获取某一个div的大小,怎么确保div渲染好,内容撑开后才去获取大小
  • ITIL 4 复习练习及解题思路
  • 数据结构:单链表(2)
  • MYSQL数据库--索引、视图练习
  • 2.2.5 运算方法和运算电路【2011统考真题】
  • 前端上传图片加裁剪功能
  • DevEco Studio 鸿蒙 引入lib中的文件
  • 简述数据库设计--范式、ER图
  • 【Linux】权限(1):初识权限与使用理解
  • 深圳专业做网站的公司河南企业建站系统信息
  • 企业门户网站设计报告wordpress接口