作为IT工程师,优化CPU利用率是提升系统性能的重要工作。以下是Linux系统下CPU利用率优化的多种方法:
首先需要监控当前CPU使用情况:
# 实时监控工具
top
htop
glances
# 统计工具
vmstat 1 # 每秒刷新一次
mpstat -P ALL 1 # 查看每个CPU核心的使用率
sar -u 1 3 # 收集CPU使用率统计
# 进程级监控
pidstat -u 1 # 查看各进程CPU使用率
# 查看当前调节器
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 设置为性能模式(高性能但耗电)
sudo cpupower frequency-set -g performance
# 设置为节能模式(适用于服务器空闲时段)
sudo cpupower frequency-set -g powersave
# 查看当前调度策略
chrt -p <pid>
# 设置实时优先级(1-99,数字越大优先级越高)
sudo chrt -f -p 99 <pid>
# 创建cgroup
sudo cgcreate -g cpu:/mygroup
# 限制CPU使用(这里限制为50%)
sudo cgset -r cpu.cfs_quota_us=50000 mygroup
sudo cgset -r cpu.cfs_period_us=100000 mygroup
# 将进程加入cgroup
sudo cgexec -g cpu:mygroup /path/to/command
# 将进程绑定到特定CPU核心
taskset -c 0,1 /path/to/command
# 为已运行进程设置CPU亲和性
taskset -pc 0,1 <pid>
# 启动时设置优先级(-20最高,19最低)
nice -n -10 /path/to/command
# 修改运行中进程优先级
renice -n -10 -p <pid>
# 调整进程调度参数
sudo sysctl -w kernel.sched_min_granularity_ns=10000000
sudo sysctl -w kernel.sched_wakeup_granularity_ns=15000000
# 禁用NUMA平衡(在某些工作负载下可能提升性能)
sudo sysctl -w kernel.numa_balancing=0
# 调整虚拟内存参数
sudo sysctl -w vm.swappiness=10 # 减少交换倾向
# 安装perf工具
sudo apt install linux-tools-common linux-tools-generic
# 系统级分析
sudo perf top
# 进程级分析
sudo perf stat -p <pid>
sudo perf record -p <pid> -g
# 使用bpftrace分析CPU使用
sudo bpftrace -e 'profile:hz:99 { @[ustack] = count(); }'
通过以上方法的组合应用,可以显著提升Linux系统的CPU利用率,使系统性能达到最优状态。