用 CPUInfo 洞察硬件,按硬件特性做针对性优化,可以显著提升 Ubuntu 性能。下面给出从信息收集到落地的完整流程。
一、用 CPUInfo 收集关键硬件特征
- 查看 CPU 架构与拓扑:逻辑处理器数量、核心/线程、插槽、NUMA 节点等
- 查看每个逻辑处理器的详细标志与频率:是否支持 SSE/AVX/AVX2/AVX-512、当前 MHz 等
- 查看处理器型号与特性(DMI 表):更友好的型号、微码、缓存等
- 命令:sudo dmidecode -t processor
- 监控工具用于验证优化效果:CPU、内存、IO 与上下文切换
- 工具:top/htop、vmstat、pidstat、strace、perf
以上命令能帮助你明确:CPU 型号与微架构、是否支持向量化、超线程/SMT、可用核心数、当前频率策略与波动,从而决定后续策略(如调频、并行度、亲和性、内核参数)。
二、基于 CPUInfo 的优化动作
- 调频策略
- 安装工具:sudo apt-get install cpufrequtils
- 查看与切换策略:
- 查看:cpufreq-info
- 全局设为性能:sudo cpufreq-set -g performance
- 指定核心:sudo cpufreq-set -c 0 -g performance
- 验证:cat /sys/devices/system/cpu/cpu/cpufreq/scaling_governor*
- 可选:固定频率需先切到 userspace,再设定频率(如:sudo cpufreq-set -c 0 -f 2.0GHz)。
说明:性能模式会提高基准频率与响应,代价是功耗与温度上升;笔记本或散热受限场景可改用 ondemand/conservative。
- 并行编译与任务调度
- 依据逻辑核心数设置并行任务数:
- 全部核心:make -j$(nproc)
- 留 1 核给系统:make -j$(( $(nproc) - 1 ))
- 服务器多任务可保留更多余量,避免资源争用。
- 进程与中断亲和性
- 将关键实时/低延迟任务绑定到独立核心,减少调度与缓存失效:
- 查看进程当前亲和性:taskset -p
- 绑定到核心 0-2:taskset -cp 0-2
- 中断绑定(减少共享核心抖动):先观察 /proc/interrupts,再用 smp_affinity 将高负载中断绑定到空闲核心(需 root)。
- 内存与交换策略
- 降低 swappiness 以减少换页(编译/数据库/容器场景常用):
- 临时:sudo sysctl -w vm.swappiness=10
- 永久:写入 /etc/sysctl.conf 并执行 sudo sysctl -p
- 验证:cat /proc/sys/vm/swappiness
说明:swappiness 越小越倾向使用物理内存;过小可能导致内存紧张时 OOM,需结合负载测试。
- 可选:CPU 在线/离线与固定频率
- 临时关闭核心(热插拔):echo 0 | sudo tee /sys/devices/system/cpu/cpu2/online
- 重新启用:echo 1 | sudo tee /sys/devices/system/cpu/cpu2/online
- 固定频率需使用 userspace 策略后设定具体频率。
提示:在虚拟化/云环境中,部分操作可能受限或无意义,需以宿主机策略为准。
三、按 CPU 特性选择策略
- 支持 AVX/AVX2/AVX-512:优先编译启用向量化(如 -O3 -mavx2),并尽量使用支持 SIMD 的库(如数值/图像处理库),可显著加速计算密集型任务。
- 超线程/SMT 开启:将高负载、轻线程任务分散到不同物理核心上,避免同核超线程争用;对实时/低抖动任务优先独占物理核心。
- 大缓存/多核:增大应用数据局部性(分块、缓存友好访问),并提升并行度(线程数≈物理核心数或略高,视负载而定)。
- 老旧或移动平台:优先稳定性与温度,选择 ondemand/conservative 或适度降低最高频率,避免降频与热降频影响。
四、验证与回退
- 频率与策略验证
- 当前策略:cat /sys/devices/system/cpu/cpu/cpufreq/scaling_governor*
- 实时频率:cat /proc/cpuinfo | grep MHz
- 负载与瓶颈验证
- 系统级:top/htop、vmstat 1、pidstat -u 1
- 热点与调用:perf top/record/report、strace -c
- 回退与持久化
- 调频回退:sudo cpufreq-set -g ondemand(或 powersave)
- 并行度回退:将 -j 调整为更小值
- 亲和性回退:taskset -cp ffffffff (全核心)
- 持久化建议:将关键命令加入开机脚本或 systemd 服务,确保重启后仍为期望策略。
五、注意事项
- 性能与功耗/温度强相关:高性能模式会增加 功耗与发热,注意散热与降频阈值;笔记本用户可权衡续航与性能。
- 云/虚拟化环境:调频、离线核心、中断绑定等可能受 宿主机策略 限制;以平台文档为准。
- 变更前先基线测试:记录优化前后的吞吐、延迟、温度与功耗,避免“看似优化、实则退化”。
- 谨慎固定频率:可能导致无法降频、温度过高等问题;优先使用 performance/ondemand 等调节器。