怎样优化centos的cpuinfo性能
小樊
38
2025-12-13 15:24:03
优化 CentOS 的 CPU 性能
一 基线评估与瓶颈定位
- 采集硬件与拓扑信息:使用 lscpu、cat /proc/cpuinfo 查看物理/逻辑核心、频率、缓存、是否启用 HT/SMT、NUMA 节点等,为后续亲和性与调度提供依据。
- 快速健康检查:用 uptime 观察 load average 与 CPU 数量关系;用 vmstat 2 3 关注 r(运行队列)、us+sy(CPU 使用)、wa(I/O 等待)、si/so(swap 换入换出);必要时配合 iostat 判断是否为 I/O 引起的 CPU 假空闲。
- 定位热点与调用栈:用 top/pidstat 找高占用进程,用 perf record -g && perf report 做热点函数与调用路径分析,确认是计算密集、锁竞争还是系统调用开销。
- 原则:先“测再调”,以数据驱动优化,避免凭经验改动。
二 CPU 频率与电源策略
- 将 CPU 调频策略设为 performance,避免频繁升降频带来的抖动:
- 安装工具:yum install -y cpupowerutils
- 查看与设置:
- cpupower -c all frequency-info
- cpupower -c all frequency-set -g performance
- cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 适用场景:低时延/批处理/高吞吐服务;笔记本或节能场景不建议长期 performance。
三 超线程 HT/SMT 与 NUMA 绑定
- 判断是否启用 HT/SMT:
- grep ‘flags’ /proc/cpuinfo | tail -1 | grep ht
- dmidecode -t processor | grep HTT
- 影响与取舍:计算密集型应用有时关闭 HT 可提升吞吐;存储/并行 I/O 场景通常受益。变更 HT 需重启,建议在 BIOS 层设置并充分回归测试。
- NUMA 优化思路:
- 查看:numactl --hardware、grep -i numa /var/log/dmesg
- 策略:若应用对跨 NUMA 访问敏感,优先采用进程/内存绑定(如 numactl --cpunodebind、–membind),或在 BIOS 关闭 NUMA 并在 OS 层验证;注意不同层级关闭对性能的影响差异。
- 亲和性落地:对关键服务用 numactl 或 systemd 的 CPUAffinity 固定到目标 NUMA 节点/核心,减少跨节点访问与缓存失效。
四 透明大页 THP 与调度相关优化
- 透明大页 THP:
- 查看:cat /sys/kernel/mm/transparent_hugepage/enabled|defrag
- 建议:数据库、虚拟化、低延迟场景优先设为 madvise 或 never,避免合并/分裂带来的抖动与 CPU 占用;通用场景可先评估再决定。
- 调度与并行:
- 减少不必要的上下文切换与中断干扰,必要时用 taskset 为关键进程固定 CPU 集合;对实时性要求高的任务可评估 SCHED_FIFO/RR(谨慎使用,避免饿死普通任务)。
- 内存子系统协同:若观察到 %wa 偏高或 si/so 不为 0,优先排查 I/O 与内存瓶颈,再回到 CPU 调优。
五 一键检查与常用命令清单
- 基线采集:
- lscpu;cat /proc/cpuinfo | egrep ‘processor|model name|cpu MHz|cache size|flags’
- uptime;vmstat 2 3;iostat -x 1(配合判断 I/O)
- 频率与电源:
- cpupower -c all frequency-info;cpupower -c all frequency-set -g performance
- 拓扑与绑定:
- numactl --hardware;taskset -pc ;systemctl show | grep CPUAffinity
- 热点分析:
- perf record -a -g sleep 10;perf report
- 风险提示:变更 BIOS/内核参数与调度策略前务必在测试环境验证,并做好回滚与监控基线留存。