温馨提示×

怎样优化centos的cpuinfo性能

小樊
38
2025-12-13 15:24:03
栏目: 智能运维

优化 CentOS 的 CPU 性能

一 基线评估与瓶颈定位

  • 采集硬件与拓扑信息:使用 lscpucat /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
    • 建议:数据库、虚拟化、低延迟场景优先设为 madvisenever,避免合并/分裂带来的抖动与 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/内核参数与调度策略前务必在测试环境验证,并做好回滚与监控基线留存。

0