优化目标与思路
围绕 CPUInfo 的优化,核心在于:准确读取并解读 CPU 拓扑与特性,确保频率策略与功耗策略匹配业务负载,减少跨 NUMA 访问与不必要的上下文切换,并通过绑定与调度提升缓存命中与稳定性。
一 基线采集与体检
- 采集关键指标:使用 lscpu、cat /proc/cpuinfo、dmidecode -t processor 获取物理/逻辑核心数、是否开启 超线程 HT、微架构与缓存层级;用 numactl --hardware 查看 NUMA 节点与内存分布;用 cpupower frequency-info 或查看 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 确认当前调频策略与可用策略。
- 快速体检示例:
- 查看是否开启超线程:grep -q ‘ht’ /proc/cpuinfo && echo “HT enabled” || echo “HT disabled”
- 查看当前频率策略:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 查看 NUMA 节点:numactl --hardware
- 观察实时频率波动:watch -n 0.5 “grep ‘cpu MHz’ /proc/cpuinfo”
这些步骤能快速判断是否存在节能策略导致的降频、HT 配置是否合适、NUMA 不均衡等问题。
二 频率与电源策略优化
- 将调频策略设为性能模式:安装并使用 cpupowerutils,执行 cpupower -c all frequency-set -g performance;验证:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor。对延迟敏感/批处理场景收益明显。
- 如需固定频率或做上限/下限控制:cpupower -c all frequency-set -f 2.30GHz(示例);或设置上下限后再选择 conservative/userspace 等策略。
- 若驱动为 intel_pstate 且需使用 acpi-cpufreq 策略:在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 中添加 intel_pstate=disable,执行 grub2-mkconfig -o /boot/grub2/grub.cfg 重启后生效,再用 cpupower 验证。
- 也可使用 tuned 管理服务:yum install tuned && systemctl enable --now tuned,切换预设 tuned-adm profile performance(或 power-save)。
以上措施可减少降频与策略抖动,提升吞吐与可预期性。
三 NUMA 与 CPU 亲和性优化
- 评估是否关闭或放宽 NUMA:用 dmesg | grep -i numa 与 numactl --hardware 检查;若应用对跨 NUMA 访问敏感(如数据库、部分存储/缓存服务),可在 OS 层临时放宽内存交错:numactl --interleave=all;或在 BIOS 层关闭 NUMA(注意:在部分平台 BIOS 关闭 NUMA 可能带来 QPS 下降 15–30% 的副作用,需压测验证)。
- 进程绑定与隔离:对关键进程使用 numactl --cpunodebind=N --membind=N 或 systemd 的 CPUAffinity= 将进程固定到指定 NUMA 节点与核心,减少跨节点访问与抖动;用 taskset -pc 校验。
- 适用场景:数据库、消息队列、高并发网络/存储服务等对内存局部性与调度抖动敏感的工作负载。
四 透明大页 THP 与内存子系统配合
- 检查与调整 THP:cat /sys/kernel/mm/transparent_hugepage/enabled 与 defrag;对延迟敏感/高并发服务,建议设为 madvise(仅对显式 madvise 的程序启用)或 never(完全关闭),以避免合并/分裂大页带来的 CPU 抖动与延迟尖峰。
- 与 NUMA/绑定的协同:在关闭或放宽 NUMA 交错后,再结合 THP 策略,能进一步降低跨节点访问与页管理开销。
- 变更前建议基线压测,变更后复核延迟与吞吐。THP 的影响与收益依赖具体负载特征。
五 验证与回退
- 频率与策略验证:watch -n 0.5 “grep ‘cpu MHz’ /proc/cpuinfo” 观察是否维持高频;cpupower frequency-info 与 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 校验策略生效。
- 拓扑与亲和性验证:lscpu、numactl --hardware、taskset -pc 校验绑定是否按预期生效。
- 快速回退:将 scaling_governor 改回 powersave 或 ondemand;tuned-adm profile balanced/power-save;必要时移除 grub 启动参数并重新生成配置后重启。
- 风险提示:调频、NUMA、THP 与亲和性调整可能影响稳定性与功耗,务必在非生产环境充分压测并保留回退方案。