1. 课程导论与性能基准

1.1 为什么需要内核性能优化?

Linux 内核是操作系统的心脏,负责进程调度、内存管理、I/O 栈、网络协议栈等核心子系统。在默认发行版配置下,内核为了兼容性牺牲了大量极致性能。通过定制编译选项与运行时参数调校,可以在不更换硬件的前提下,将系统吞吐量提升 20%~50%,将尾延迟降低一个数量级。

优化收益概览(典型场景)
场景默认内核优化内核提升幅度
高并发 Web 服务10 万 QPS15 万 QPS+50%
数据库 OLTP 事务5000 TPS7200 TPS+44%
视频转码(H.264)45 fps58 fps+29%
网络包转发(DPDK 旁路)1.2 Mpps2.8 Mpps+133%

1.2 核心性能指标

性能优化必须基于可量化的指标。本课程聚焦三个黄金维度:

  • 吞吐量(Throughput):单位时间内完成的工作量。例如:每秒请求数(RPS)、每秒事务数(TPS)、磁盘 IOPS。
  • 延迟(Latency):从请求发出到收到响应的时间间隔。重点关注平均延迟、P99(99% 分位)延迟、P999 尾延迟。
  • CPU 利用率(CPU Utilization):CPU 处于非空闲状态的时间百分比。需区分用户态(%usr)、内核态(%sys)、软中断(%softirq)、硬中断(%hardirq)和等待 I/O(%iowait)。
性能三角法则:吞吐量、延迟、CPU 利用率三者相互制约。盲目提升吞吐量可能导致延迟飙升;过度降低延迟可能浪费 CPU 资源。优化目标是找到业务可接受的最优平衡点。
性能指标三角关系 吞吐量 Throughput 延迟 Latency CPU利用率 Utilization 三者相互制约:提升吞吐量可能增加延迟,降低延迟可能降低 CPU 利用率

1.3 性能基准测试工具

本课程将深度使用以下三款工具进行基准测试与瓶颈定位:

工具主要用途测量指标典型命令
perf CPU 性能计数器分析、采样、跟踪 CPI、缓存命中率、分支预测错误率、上下文切换 perf stat -e cycles,instructions,cache-misses ./workload
stress-ng 压力测试、稳定性验证、极限负载模拟 最大并发数、错误率、系统崩溃阈值 stress-ng --cpu 8 --io 4 --vm 2 --hdd 1 --timeout 60s
sysbench 数据库、CPU、内存、文件 I/O 基准测试 TPS、QPS、平均延迟、95% 分位延迟 sysbench --test=cpu --cpu-max-prime=20000 run

1.4 工具工作流程

性能优化遵循“测量→分析→调校→验证”的闭环。下图展示了基准测试工具在优化流程中的位置:

性能优化闭环工作流程 基准测量 perf / sysbench 瓶颈分析 perf report / flamegraph 参数调校 sysctl / kernel config 压力验证 stress-ng / sysbench 虚线表示迭代反馈:每次调校后重新测量,直到性能指标满足目标

1.5 快速上手:一次完整的基准测试

以下命令序列演示了如何使用 sysbench 对 CPU 进行基准测试,并用 perf 采集性能计数器:

# 1. 使用 sysbench 进行 CPU 基准测试(素数计算)
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

# 2. 使用 perf stat 采集关键硬件事件
perf stat -e cycles,instructions,cache-references,cache-misses,branch-misses \
  sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

# 3. 使用 stress-ng 进行稳定性压力测试(8 个 CPU 压力线程,持续 60 秒)
stress-ng --cpu 8 --timeout 60s --metrics-brief
注意事项:基准测试必须在系统空闲状态下进行,避免其他进程干扰。建议每次测试至少重复 3 次,取中位数作为基准值。测试前关闭 CPU 频率缩放(cpupower frequency-set -g performance)和 Turbo Boost,以获得可复现的结果。

1.6 本章小结

  • 内核性能优化可带来 20%~133% 的性能提升,是性价比最高的系统调优手段。
  • 吞吐量、延迟、CPU 利用率是三大核心指标,三者之间存在权衡关系。
  • perf 用于微观架构分析,stress-ng 用于极限压力测试,sysbench 用于宏观基准评分。
  • 优化流程遵循“测量→分析→调校→验证”的闭环迭代模式。