sar -b IO 总览行

tps 是每秒 IO 请求数,rtps/wtps 是读写请求速率,bread/s、bwrtn/s 是扇区吞吐;适合快速判断压力方向。

sar -b 是什么

sar -b 报告块设备层的 IO 总览行,按秒统计系统里所有设备的合计请求数与扇区吞吐,不区分具体设备。tps 是每秒 IO 请求数,rtps、wtps 分别是读写请求速率,bread/s、bwrtn/s 是每秒读写扇区数。它回答的是「压力方向是读多还是写多、是小 IO 还是大 IO」,定位到设备要靠 sar -d。

基本信息

适用平台Linux(sysstat 包)
基本用法sar -b 1 3:每 1 秒采一次共 3 次
历史回放sar -b -f /var/log/sysstat/sa<DD> -s HH:MM:SS -e HH:MM:SS
关键列tps、rtps、wtps、bread/s、bwrtn/s
数据口径所有块设备的合计值,无法直接看出是哪块盘

典型使用场景

  • 判断压力方向:写多还是读多,决定后续是查日志刷盘还是查回源读取
  • 识别 IO 模式:tps 高而扇区速率低说明小 IO 密集,常见于随机读写型数据库
  • 容量规划:对比多天同一时段的 tps 峰值,判断是否需要分盘或扩容
  • 变更验证:调整刷盘策略前后取同一时段数据做对比
  • 故障时间窗复盘:配合 -s/-e 缩小到分钟级,避免在整天的数据里翻找

常用命令

常用命令
sar -b 1 3                      # 实时采样:1 秒一次共 3 次
sar -b -s 09:00:00 -e 10:00:00  # 只看指定时间段的整机 IO
sar -f /var/log/sysstat/sa12 -b # 从历史文件回放当天的 IO 总览
sar -d -p 1 3                   # 继续下钻:定位到具体设备

关键判读组合

指标组合含义下一步
tps 高 + bread/s 低以小 IO 为主查应用 IO 模式与队列深度
tps 低 + bread/s 高以单次大 IO 为主关注顺序吞吐与带宽上限
wtps 持续偏高写压力集中结合 sar -d 定位设备与进程
rtps 与 wtps 同时偏高读写混合负载确认是否存在读写争抢同一设备

判读步骤

  • 先看趋势再看数值:连续多个采样同时抬升才说明是持续压力
  • 把 tps 与扇区速率配对看,单独看任一项都会误判 IO 模式
  • 确认压力方向后再用 sar -d 定位设备,最后用 pidstat 定位进程
  • 结合业务时间线判断,凌晨的写入高峰往往来自备份而不是故障
tps 与吞吐是两个维度:一次 1MB 的顺序写与一千次 4KB 的随机写,tps 相差三个数量级而吞吐相当。判断瓶颈要靠两者组合,单看 tps 会误导优化方向。
扇区按 512 字节换算:bread/s 乘 512 得到字节数,再与网卡或磁盘标称带宽比较才有意义;直接拿扇区数当字节数会差一个数量级。

易错点

  • tps 高不代表吞吐高,大量小 IO 场景下只报 tps 会误导优化方向
  • 整机合计值无法定位设备,必须与 sar -d 联动才能找到具体盘
  • 扇区数与字节数混淆,换算倍数错误导致结论偏差一个数量级
  • 用实时采样代替历史回放,故障已经过去时无法复现当时的真实压力
  • 忽略统计里包含分区与设备映射层,人工加总时容易重复计数

数据来源与参考

  • sysstat 文档 sar(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌