如何利用cpuinfo优化centos系统
小樊
44
2025-12-13 15:30:06
利用 cpuinfo 获取硬件画像
- 使用以下命令快速梳理 CPU 拓扑与特性,作为后续调优依据:
- 查看型号与主频:cat /proc/cpuinfo | grep -E “model name|cpu MHz” | head -n 2
- 物理 CPU 数量:cat /proc/cpuinfo | grep “physical id” | sort -u | wc -l
- 每颗物理 CPU 的物理核心数:cat /proc/cpuinfo | grep “cpu cores” | sort -u
- 逻辑 CPU 数量:cat /proc/cpuinfo | grep “processor” | wc -l
- 是否支持超线程 HT:cat /proc/cpuinfo | grep -m1 “flags” | grep -q ht && echo “HT: enabled” || echo “HT: disabled”
- 是否 64 位:grep -m1 “lm” /proc/cpuinfo && echo “x86_64: yes” || echo “x86_64: no”
- 结构化查看:lscpu(更直观地展示架构、NUMA 节点、缓存层级等)
- 判读要点:逻辑 CPU 数通常等于“物理 CPU × 每颗核心数”,若更大说明启用了超线程;关注 model name、cpu MHz、cache size、flags 以决定调度、编译与绑核策略。
基于 CPU 画像的优化路径
- 性能模式与调度
- 安装工具:yum install -y cpupowerutils
- 查看与切换:cpupower -c all frequency-info;cpupower -c all frequency-set -g performance(低延迟/高吞吐场景常用)
- 超线程取舍
- 判断:grep -m1 “flags” /proc/cpuinfo | grep -q ht
- 影响:计算密集型任务有时关闭 HT 更稳;存储/吞吐型负载通常开启更优。变更 HT 需重启并在 BIOS/内核启动参数层面设置,变更前务必基准测试。
- NUMA 与绑核
- 拓扑与策略:numactl --hardware 查看节点;对延迟敏感或内存带宽敏感负载,优先采用“进程绑定 + 内存亲和”(numactl --cpunodebind=… --membind=… your_app)以减少跨 NUMA 访问;若应用对 NUMA 不友好且难以改造,可在测试验证后考虑在 BIOS 或内核启动参数层面关闭 NUMA(如 numa=off),但需权衡跨节点带宽损失。
- 透明大页 THP
- 查看:cat /sys/kernel/mm/transparent_hugepage/enabled 与 defrag
- 策略:数据库、JVM、低延迟服务常建议设为 madvise 或 never,避免合并/分裂带来的抖动;通用场景可先 madvise 观察再决定是否彻底关闭。
- 编译与运行期优化
- 构建阶段:依据 /proc/cpuinfo 的 model/family/flags 选择合适的 -march/-mtune(如支持 SSE/AVX/AVX2),在保证可移植性的前提下获取更高指令级并行;发行版默认 -O2/-O3 配合合理架构标志通常更稳妥。
- 运行阶段:对 CPU 绑定敏感的服务,使用 taskset/numactl 固定 CPU 亲和;对热点路径或延迟敏感服务,结合 perf record/report 定位热点函数与调度抖动来源。
快速检查清单与常用命令
- 快速巡检
- CPU 负载与热点:top/htop;必要时 perf top/record/report 做火焰图与热点定位
- I/O 压力:iostat -x 1 5(关注 %util 接近 100% 的磁盘瓶颈)
- 内存与换页:free -m;结合 vmstat 观察 si/so 与回收压力
- 文件句柄:ulimit -n;系统级:cat /proc/sys/fs/file-max;永久:/etc/security/limits.conf 与 /etc/sysctl.conf
- 常用命令速查
- lscpu、cat /proc/cpuinfo、cpupower、numactl、taskset、perf、iostat、vmstat、free、ulimit。
注意事项
- 变更 BIOS/内核参数(如 HT、NUMA)务必在维护窗口进行,并保留回退方案;任何参数调整前先做基线测试(如 sysbench、fio、业务基准),变更后再比对 P95/P99 延迟、吞吐与错误率。
- 生产环境优先采用“渐进式调优”:先性能模式与绑核,再 THP 与 NUMA,最后才是编译选项与深度内核参数;每一步都配合监控与 A/B 测试验证收益与回归。