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 得到字节数,再与网卡或磁盘标称带宽比较才有意义;直接拿扇区数当字节数会差一个数量级。