建立linux性能基线是持续性工作,需明确业务/资源/混合场景目标,严格控制变量,采集完整指标并长期归档,定期验证更新,支撑故障排查、容量规划与优化。

建立 Linux 性能基线不是一次性的“测完就扔”,而是为后续故障排查、容量规划和优化验证提供可比对的参照系。关键在于环境可控、指标明确、方法一致。
明确测试目标与场景
基线不是越“高”越好,而是要匹配实际负载特征:
- 业务型基线:模拟真实服务(如 Nginx + PHP-FPM 处理 HTTP 请求、PostgreSQL 执行 OLTP 查询),记录响应延迟、吞吐量、CPU/内存/IO 分布;
-
资源型基线:聚焦底层能力,例如用
fio测磁盘随机读写 IOPS 和延迟,用sysbench cpu或stress-ng测 CPU 稳定性,用memtester验证内存可靠性; - 混合型基线:在稳定后台负载(如数据库)上叠加突发请求(如批量导入),观察系统抖动、队列堆积、上下文切换等间接指标。
控制变量,确保可复现
同一台机器多次测试结果差异大?大概率是干扰未清除:
- 关闭非必要服务(
systemctl list-units --type=service --state=running筛查); - 禁用 CPU 频率调节器:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; - 清空页缓存、dentries 和 inodes:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches(仅限测试前,勿在生产执行); - 使用
cset或taskset隔离测试进程 CPU 核心,避免调度干扰; - 记录内核版本、发行版、SELinux/AppArmor 状态、CPU governor、透明大页(THP)开关等环境元数据。
采集核心指标并长期归档
基线价值取决于数据是否完整、可追溯:
- 必须采集项:CPU 使用率(user/system/iowait/steal)、内存使用量与缺页率(pgpgin/pgpgout)、磁盘 IOPS/吞吐/await/r_await/w_await、网络收发包速率与丢包、平均负载(load average);
- 推荐附加项:上下文切换(cs)、进程创建速率(proc/s)、软中断(si)、硬中断(hi)、cgroup 资源限制触发次数(如 memory.limit_exceeded);
- 用
vmstat 1 60、iostat -x 1 60、mpstat -P ALL 1 60等组合定时采样,输出重定向保存; - 将原始数据(含时间戳、命令参数、环境快照)按日期归档,便于回溯对比 —— 不要只留一张“平均值截图”。
建立基线不是终点,而是起点
基线需要持续维护和验证:
- 每次内核升级、硬件更换、关键配置调整(如 sysctl 参数、文件系统挂载选项)后,重新跑对应场景基线;
- 每月或每季度对稳定环境做一次轻量回归测试(如 5 分钟 fio 随机读),确认无缓慢退化;
- 当线上出现性能问题时,优先比对当前指标与同场景基线的偏离度(例如 iowait 从 2% 升至 45%,await 从 0.3ms 跳到 28ms),快速定位异常维度;
- 把基线数据接入监控系统(如 Prometheus + Grafana),设置偏离阈值告警,让基线真正“活”起来。











