基于 cpuinfo 的 CentOS CPU 性能优化方法
一、基线采集与特征识别
- 采集硬件与拓扑信息:使用命令查看处理器型号、架构、频率、缓存、是否支持超线程与 NUMA 拓扑,为后续策略提供依据。
- 命令示例:
- cat /proc/cpuinfo(型号、频率、flags 等)
- lscpu(结构化 CPU 拓扑)
- grep ‘physical id’ /proc/cpuinfo | sort | uniq | wc -l(物理 CPU 数)
- grep ‘cpu cores’ /proc/cpuinfo | uniq(每物理 CPU 核心数)
- grep ‘model name’ /proc/cpuinfo;grep ‘cpu MHz’ /proc/cpuinfo;grep ‘cache size’ /proc/cpuinfo
- grep ‘flags’ /proc/cpuinfo | grep ht(是否支持超线程)
- numactl --hardware;grep -i numa /var/log/dmesg(NUMA 状态)
- 识别要点:确认是否存在超线程、物理/逻辑核心数、各级缓存大小、NUMA 节点数,据此决定绑核、调度与内存策略。
二、电源与频率策略优化
- 选择性能模式:将 CPU 调频策略设置为 performance,避免降频带来的抖动与延迟。
- 安装工具:yum install -y cpupowerutils
- 查看与设置:
- cpupower -c all frequency-info
- cpupower -c all frequency-set -g performance
- 或写入 sysfs:echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
- 驱动与策略选择:
- 查看驱动:cpupower frequency-info(常见为 acpi-cpufreq 或 intel_pstate)
- 如需使用 acpi-cpufreq 的完整策略集,可在 GRUB 禁用 intel_pstate:
- /etc/default/grub 增加:GRUB_CMDLINE_LINUX=“… intel_pstate=disable”
- 生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg(或 /boot/efi/EFI/centos/grub.cfg)
- 重启后验证:cpupower frequency-info
- 场景建议:批处理/低延迟/数据库等稳态负载优先使用performance;若需节能再评估 ondemand/conservative。
三、拓扑感知的亲和性与调度
- 进程绑定与隔离:减少跨核迁移与缓存失效,提升局部性与可预测性。
- 绑定进程到指定核心:taskset -pc 1-2
- 使用 cgroups 限制/隔离 CPU 资源(适合多租户或关键业务独占核组)
- NUMA 亲和与内存本地性:
- 查看拓扑:numactl --hardware
- 内存交错分配:numactl --interleave=all
- 绑定进程到节点:numactl --cpunodebind=0 --membind=0
- 优先级与调度控制:
- 调整优先级:nice / renice
- 实时需求:chrt 设置实时优先级(谨慎使用)
- 超线程取舍:计算密集型且高度争用场景下,可评估关闭超线程;存储/吞吐型负载通常受益。BIOS 与内核启动参数层面可控制,变更需充分压测。
四、负载特征分析与瓶颈定位
- 快速巡检:
- top/htop(总体占用、僵尸、平均负载)
- vmstat 2(r/b/si/so、cs、us/sy/id/wa)
- pidstat -u 1(按进程看 usr/sys)
- 软中断与网络:
- cat /proc/softirqs(关注 NET_RX/NET_TX 增长)
- 结合 sar/tcpdump 定位网络瓶颈
- 性能剖析:
- perf record -g;perf report(热点函数与调用栈)
- 结论用法:
- %us 高:应用计算密集,考虑绑核、并行度、编译器优化
- %sy 高:内核/驱动/中断密集,检查软中断、驱动与系统调用
- %wa 高:I/O 瓶颈,转向存储/文件系统/网络栈优化
五、系统化调优与持续验证
- 使用 tuned 统一电源与调度策略:
- 安装与启用:yum install -y tuned;systemctl enable --now tuned
- 选择配置:tuned-adm profile throughput-performance 或 tuned-adm profile latency-performance
- 应用与工作负载配置:
- Web/DB:按 CPU 核数与负载类型调整工作进程/连接数/缓存;保持软件版本更新以获取性能修复
- 变更流程与回滚:
- 原则:先监控基线→小步变更→验证指标(吞吐、延迟、抖动、功耗)→记录与回滚
- 风险提示:调频、绑核、实时优先级与 BIOS 参数变更可能影响稳定性与兼容性,务必在测试环境验证并备份。