CentOS虚拟机CPU性能调优指南
使用cpustat(sysstat组件)监控CPU状态,识别瓶颈。安装与使用方法:
sudo yum install sysstat(CentOS 7及更早)或sudo dnf install sysstat(CentOS 8及以上);cpustat(显示用户态%usr、系统态%sys、空闲%iowait等指标);cpustat -c 5;cpustat -p 0。根据应用需求合理分配CPU资源,避免过度或不足:
egrep '(vmx|svm)' /proc/cpuinfo有输出),提升CPU虚拟化效率。cpufrequtils工具,设置性能模式(优先保证性能):sudo yum install cpufrequtils # CentOS 7
sudo dnf install cpufrequtils # CentOS 8+
sudo cpufreq-set -g performance # 设置所有CPU核心为performance模式
/etc/sysctl.conf:net.ipv4.tcp_migration_cost_ns = 5000000 # 减少TCP进程迁移成本
net.ipv4.tcp_autogroup_enabled = 0 # 关闭自动分组(避免进程组调度竞争)
执行sudo sysctl -p使更改生效。nice(启动时设置)或renice(运行时调整)命令,提高关键进程的CPU优先级(值越小优先级越高):nice -n -5 ./critical_process # 启动时设置高优先级(-20~19,-20最高)
renice -n -5 -p 1234 # 调整PID为1234的进程优先级
cgroups(控制组)限制进程最大CPU占用(如限制某进程最多使用20% CPU):sudo cgcreate -g cpu:/mygroup
echo 20000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us # 20% CPU(quota/us=20000,period/us默认100000)
sudo cgexec -g cpu:mygroup ./problematic_process
systemctl停止并禁用无用服务(如firewalld、NetworkManager,若不需要):sudo systemctl stop firewalld
sudo systemctl disable firewalld
```。
virsh命令:virsh vcpuinfo <vm_name> # 查看虚拟机vCPU信息
virsh pin vcpu <vm_name> 0 0 # 将虚拟机vCPU 0绑定到宿主机物理核心0
writeback(提升写性能,适用于写多场景):virsh edit <vm_name> # 编辑虚拟机XML配置
# 找到<disk>标签,修改<driver>的cache属性为"writeback"
/sys/kernel/mm/ksm/run值为0)。