sadf用于批量转换sysstat归档的二进制磁盘数据(/var/log/sysstat/sadd)为csv/json/xml等结构化格式,需先确保sysstat启用、cron定时采集正常且sadd文件存在;支持按日期、设备、指标(如await)导出、筛选与绘图。

要用 sadf 导出长期磁盘性能报告,核心不是“实时导出”,而是基于 sysstat 已归档的二进制数据(/var/log/sysstat/saDD)批量转换为结构化格式,再做汇总或绘图。
确认磁盘历史数据已持续采集
没有 saDD 文件,sadf 就无源可导。必须先确保:
- sysstat 服务已启用并运行:
sudo systemctl is-active sysstat返回active - 定时任务正常:检查
/etc/cron.d/sysstat中有类似*/10 * * * * root /usr/lib/sa/sa1 -S DISK 1 1的行(-S DISK表示启用磁盘统计) - 磁盘数据实际存在:运行
ls -lt /var/log/sysstat/ | grep sa,确认近期有sa28、sa29、sa30等文件(10月对应sa10)
用 sadf 提取指定日期的磁盘指标为 CSV
sadf 支持直接将二进制日志转成 CSV、JSON 或 XML,方便导入 Excel 或 Grafana。查磁盘 I/O 最常用的是 -d(设备级)和 -D(分区级):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 导出 10 月 5 日所有磁盘设备的吞吐与延迟(CSV 格式):
sadf -d -s 00:00:00 -e 23:59:59 -d /var/log/sysstat/sa05 -- -p - 导出 10 月 1–7 日每日平均 await(平均 I/O 响应时间):
for d in $(seq -w 01 07); do echo "202610$d:"; sadf -d /var/log/sysstat/sa$d -- -p | awk '$NF ~ /^[0-9.]+$/ {sum += $NF; n++} END {print n>0 ? sum/n : "N/A"}'; done
结合 sar 与 sadf 定向提取关键磁盘指标
sadf 本身不计算峰值或趋势,需配合 shell 处理。例如识别持续高延迟(await > 10ms)的时段:
- 先用
sar -d -f /var/log/sysstat/sa05确认字段含义(通常第 7 列是await) - 再用 sadf 输出带时间戳的原始数据:
sadf -d -p /var/log/sysstat/sa05 | awk -F';' '$8 > 10 {print $1,$2,$8}'(假设第 8 列为 await) - 若要导出含时间戳+await+svctm+r/s+w/s 的完整表:
sadf -d -p /var/log/sysstat/sa05 > disk_20261005.csv
生成可视化图表(可选但实用)
sadf 自带 -g 参数可直接调用 gnuplot 绘图,适合快速查看趋势:
- 画出 10 月 3 日 sda 设备的 await 曲线:
sadf -d -g /var/log/sysstat/sa03 -- -p | grep sda - 更推荐导出 CSV 后用 Python/Pandas 或 LibreOffice 绘图,控制力更强、支持多日叠加










