杆子博客

杆子博客

博采众长 一诺千金!
当前位置: 首页 > 网络 > 正文

Proxmox 性能调优全攻略

cover_image

一、调优基本原则

  1. 先测量,再调优
    • 没 baseline 就没调优
  2. 一次只改一个参数
    • 否则无法归因
  3. 关注瓶颈
    • CPU 不是瓶颈时调 CPU 没意义
  4. 记录每次变更
    • 方便回滚

瓶颈定位工具链

top / htop / atop             # 概览
mpstat -P ALL 1               # CPU
free -h / slabtop             # 内存
iostat -xz 1 / iotop          # 磁盘
iftop / sar -n DEV 1          # 网络
dstat -tcmnd 1                # 综合

二、CPU 调优

2.1 CPU Type 选择

类型适用性能
kvm64最大兼容
x86-64-v2-AES2012+ CPU
x86-64-v3Haswell+较高
host直接透传物理 CPU最高

推荐:集群 CPU 一致用 host,否则用 x86-64-v3。

2.2 NUMA 配置

qm set 100 --numa 1 --sockets 2 --cores 8

2.3 CPU Pinning (极致)

绑定 VM 到特定物理核,避免调度抖动。代价:失去灵活性,不能自由迁移。仅用于 DB 等关键应用。

2.4 vCPU 超分比例

业务比例
CPU 密集 (编码/DB)1:1
Web 应用1:2 - 1:4
办公/测试1:4 - 1:8

监控 pve_cpu_ready,持续 > 5% 说明超分过度。

三、内存调优

3.1 Ballooning

开启可动态回收未用内存。DB/JVM 应用禁用(否则 GC 抖动)。

3.2 HugePages

echo "vm.nr_hugepages = 16384" >> /etc/sysctl.conf
sysctl -p
qm set 100 --hugepages 1024

3.3 KSM

类似 VMware TPS,默认开启。CPU 有开销,内存充足时可关。

3.4 系统参数

sysctl vm.swappiness=10
echo never > /sys/kernel/mm/transparent_hugepage/enabled

四、磁盘 I/O 调优

4.1 存储后端性能对比

后端顺序读4K 随机延迟
Local NVMe7 GB/s600Kµs
Local SATA SSD500 MB/s80Kms
Ceph 25GbE6 GB/s200K2-5ms
Ceph 10GbE1.2 GB/s60K5-10ms
NFS 10GbE1 GB/s30K3-8ms

4.2 VM 磁盘缓存策略

Cache性能安全说明
none推荐默认
writethrough最高DB 用
writeback最高非关键 + UPS

4.3 SCSI Controller

qm set 100 --scsihw virtio-scsi-single
qm set 100 --scsi0 local-zfs:vm-100-disk-0,iothread=1,ssd=1,discard=on

4.4 ZFS 专项

zfs set recordsize=16K pool/vm   # DB 小块
zfs set recordsize=128K pool/vm  # 通用

# ARC 限制 16GB
echo "options zfs zfs_arc_max=17179869184" > /etc/modprobe.d/zfs.conf
update-initramfs -u

4.5 IO 调度器

# NVMe 用 none, SSD 用 mq-deadline, HDD 用 bfq
echo none > /sys/block/nvme0n1/queue/scheduler
echo mq-deadline > /sys/block/sda/queue/scheduler

五、网络调优

5.1 MTU Jumbo

ip link set eno1 mtu 9000

链路全程必须都支持 9000。

5.2 VirtIO 多队列

qm set 100 --net0 virtio,bridge=vmbr0,queues=8
# VM 内
ethtool -L eth0 combined 8

5.3 内核网络参数

net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_congestion_control = bbr

5.4 SR-IOV

echo 4 > /sys/class/net/eno1/device/sriov_numvfs
qm set 100 --hostpci0 0000:01:10.0

性能等同物理网卡,但失去迁移能力。

六、Guest OS 内调优

6.1 Linux VM

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo kvm-clock > /sys/devices/system/clocksource/clocksource0/current_clocksource
systemctl enable --now irqbalance
apt install qemu-guest-agent

6.2 Windows VM

  • 安装 virtio-win 最新驱动
  • 关闭可视特效
  • 关闭 Windows Search / Superfetch
  • 电源"高性能"
  • 安装 QEMU Guest Agent

七、性能基准测试

# CPU
sysbench cpu --threads=8 --time=60 run

# 内存
sysbench memory --memory-block-size=1M --memory-total-size=100G run

# 磁盘 4K 随机
fio --name=rand --rw=randrw --bs=4k --size=10G --numjobs=8 --iodepth=32 --runtime=60 --direct=1

# 网络
iperf3 -c -P 8 -t 60

八、典型场景调优

8.1 MySQL/PostgreSQL DB

CPU: host, 1:1 不超分, NUMA 开
内存: 无 balloon, HugePages 开
磁盘: cache=none, iothread=1, Local NVMe
网络: VirtIO, 多队列, jumbo frame

8.2 高密度 Web

CPU: 1:4 超分, x86-64-v3
内存: balloon 可开
磁盘: cache=writeback(有 UPS)

8.3 Jenkins/CI

CPU: 1:2, host
内存: > 32GB
磁盘: Local NVMe + writeback, iothread

8.4 GPU 计算

CPU: host, pinning
PCI 直通: GPU passthrough
IOMMU: 启用
内存: HugePages, balloon 关

性能调优不是拼参数,是拼对瓶颈的判断。先测量、再调优、一次一个变量 —— 这三条做到了,调优效果不会差。

打赏支持
支付宝打赏 支付宝打赏
微信打赏 微信打赏

「请 GANZI 喝杯咖啡作为鼓励」~

您可能还会对这些文章感兴趣!

导航
侧边栏