利用 cpuinfo 获取硬件真相,按“识别—配置—验证”闭环落地,能稳定提升 CentOS 的 CPU 性能表现。
一、用 cpuinfo 准确识别硬件特征
- 基础识别
- 查看型号与架构:cat /proc/cpuinfo | grep -E “model name|cpu MHz|cache size|flags|lm”
- 结构化总览:lscpu(更清晰地展示架构、核心/线程、NUMA 节点等)
- 关键指标与命令
- 物理/逻辑核心数:grep ‘physical id’ /proc/cpuinfo | sort | uniq | wc -l;grep ‘cpu cores’ /proc/cpuinfo | uniq
- 是否开启超线程:grep -E ‘^flags.*ht’ /proc/cpuinfo(flags 中出现 ht 表示支持/开启)
- 是否 64 位:grep ‘lm’ /proc/cpuinfo(lm=long mode)
- 频率与缓存:cat /proc/cpuinfo | grep -E “cpu MHz|cache size”
- 作用
- 决定后续策略:如 governor 选择、是否做 CPU 绑定、是否启用 NUMA 亲和、线程池/连接数上限等。
二、基于识别结果的可落地优化
- 频率与功耗策略
- 安装工具:yum install -y cpupowerutils
- 查看与切换:cpupower frequency-info;cpupower -c all frequency-set -g performance(低延迟/高吞吐场景优先)
- 模式要点:performance(最高频)、powersave(最低频)、ondemand/schedutil(按需/调度器驱动)、conservative(更平滑的按需)
- 线程与 CPU 亲和
- 减少抖动与迁移:使用 taskset 将关键进程固定到指定核心或核心集合
- NUMA 亲和:numactl --cpunodebind=0 --membind=0 your_app(将进程绑定到指定 NUMA 节点,降低跨 NUMA 访问时延)
- 负载特征与超线程取舍
- 计算密集且高度并行:可尝试关闭超线程(HT off)以减少争用(需重启,变更 BIOS 启动参数)
- 存储/网络 I/O 密集:通常保持 HT 开启更利于吞吐(以实际压测为准)
- 运行时验证
- 实时频率观察:watch -n 0.5 “cat /proc/cpuinfo | grep -m1 ‘cpu MHz’”
- 调度与负载:top/htop、mpstat -P ALL 1、perf top/record/report(定位热点函数与瓶颈)
三、面向常见工作负载的推荐配置
| 场景 |
cpuinfo 判据 |
建议动作 |
| 低延迟交易/数据库 |
逻辑核多、缓存大、NUMA 节点清晰 |
governor=performance;关键进程 taskset 绑定;numactl 绑定本地 NUMA;减少不必要后台服务 |
| 高吞吐 Web/微服务 |
多核/HT 开启、频率较高 |
适度超线程;按 CPU 核数配置 worker 数;必要时绑定 CPU 减少迁移 |
| 存储/日志密集 |
读写 I/O 占比高 |
保持 HT;NUMA 亲和;结合块设备调度与中断绑定的系统级调优 |
| 批处理/离线计算 |
长时满载、可容忍功耗 |
governor=performance 或 conservative;绑定核心减少调度开销;结合 cgroups 做资源隔离 |
说明:表中动作均建立在 cpuinfo/lscpu 的准确识别之上,变更前建议在测试环境验证并保留回退方案。
四、安全变更与回退建议
- 变更前
- 备份关键配置(如 grub、sysctl、服务配置);记录基线指标(吞吐、P95/P999 延迟、CPU 频率与温度)
- 变更中
- 频率/亲和:先小范围灰度(单实例/单节点),观察稳定性与性能收益
- HT/BIOS:变更需重启,先在维护窗口执行,并准备回退启动项
- 变更后
- 验证:对比前后延迟/吞吐、错误率、温度与降频日志(如 dmesg 中 CPU 降频提示)
- 回退:cpupower -c all frequency-set -g ondemand(或原策略);taskset/numactl 调整回退;BIOS 恢复
五、快速检查清单
- 使用 lscpu/cat /proc/cpuinfo 确认:物理/逻辑核心、HT、缓存、架构与 64 位支持
- 安装 cpupowerutils,查看当前 governor 并切换到 performance(或按需选择 schedutil/ondemand)
- 对延迟敏感进程执行 taskset/numactl 绑定,减少跨核与跨 NUMA 开销
- 用 top/mpstat/perf 验证优化成效,并保留基线以便回滚与对比