建立linux cpu性能基线需结合工作负载、系统配置与可观测性数据,确保可复现、可对比、可回溯;须明确测试目标、隔离干扰、组合使用sysbench/perf/stress-ng等工具,并定义含吞吐、延迟、throttling次数的阈值指标。

建立Linux CPU性能基线是调优的前提——不是跑一次sysbench cpu就算完事,而是要结合工作负载特征、系统配置和可观测性数据,形成可复现、可对比、可回溯的基准。
明确测试目标与场景
CPU基准测试必须锚定真实用途。通用计算、高并发Web服务、实时音视频处理、科学计算对CPU的压力模式差异极大:
- 通用服务器:关注单核/多核吞吐、上下文切换开销、调度延迟(可用
cyclictest测) - 数据库类应用:侧重短时突发负载下的响应一致性,需配合
perf sched latency观察调度抖动 - 容器化环境:除宿主机指标外,还需采集cgroup v2下的
cpu.stat(如nr_throttled)、cpu.pressure
控制变量,确保可复现性
一次无效的基准测试,往往源于未隔离干扰项:
- 关闭非必要服务:
systemctl isolate multi-user.target,停用NetworkManager、bluetooth、snapd等后台进程 - 固定CPU频率:禁用cpupower动态调频,设为performance策略:
cpupower frequency-set -g performance - 绑定测试进程到指定CPU核:
taskset -c 0-3 sysbench cpu --threads=4 run,避免跨NUMA节点迁移 - 清空缓存干扰:
echo 3 > /proc/sys/vm/drop_caches(仅用于内存敏感型对比,CPU纯算力测试影响较小)
选择合适工具并记录完整上下文
单一工具无法覆盖全部维度,建议组合使用:
-
sysbench cpu:快速评估整数/浮点计算吞吐,重点看
events per second及标准差(波动>5%需排查) -
perf stat:抓取底层事件,例如:
perf stat -e cycles,instructions,cache-references,cache-misses,context-switches -r 3 ./your_workload -
stress-ng:模拟特定压力类型(如
--cpu 4 --cpu-method fft压浮点单元),适合验证微架构瓶颈 - 务必记录:内核版本(
uname -r)、CPU型号(lscpu | grep "Model name")、BIOS设置(如C-states是否禁用)、编译器及优化选项(若自建二进制)
定义基线指标与验收阈值
基线不是一串数字,而是一组带边界的判断依据:
- 核心指标至少包含三项:平均吞吐(如每秒指令数)、99分位延迟(如
cyclictest -l 10000 -m -n -i 1000输出的max latency)、CPU throttling发生次数(cat /sys/fs/cgroup/cpu/mygroup/cpu.stat | grep nr_throttled) - 允许波动范围需基于历史数据或硬件规格设定。例如:同配置下三次重复测试,吞吐标准差应<2%,最大延迟增幅不应超过标称值的10%
- 保存原始数据+命令行+环境快照(
lshw -short、cat /proc/cmdline、cpupower info),推荐用tar打包归档,命名含日期、场景、内核版本
不复杂但容易忽略:基线不是调优终点,而是每次变更(内核升级、BIOS更新、应用版本迭代)前后的比对起点。定期重跑,才能让优化有据可依。











