外观
性能调优
调优之前
先测量,再调优
「感觉慢」不是可以行动的信息。先确定是 CPU、内存、磁盘 IO 还是网络的问题:
sh
top
iostat -x 2 5
free -h大部分「PVE 性能不好」的实际原因是很基础的东西:虚拟机磁盘在机械盘上、客户机没装 VirtIO 驱动、存储池写满了、多个备份任务同时跑。这些先排除掉,再谈调优。
收益最大的几项(按顺序)
- 磁盘用 SCSI + VirtIO SCSI single,勾上 IO thread。
- 客户机装 VirtIO 驱动。 模拟设备的开销是数量级的差别。
- CPU Type 选
host(单机环境没理由不用)。 - 存储池别写太满。 ZFS 超过 80% 后写入性能明显下降。
- 错开备份时间,避免 IO 打满。
做完这五条,再考虑 CPU 固定(pinning)、NUMA、大页内存这类微调,见下面的分主题文章。
关于缓存
不要为了性能把 Cache 改成 writeback
Writeback 确实更快,但宿主机突然断电时,已经「写入成功」的数据可能还在内存里没落盘,客户机文件系统会损坏。
默认的 No cache 是安全的选择。真要改,先确保有 UPS,并且理解你在拿什么换性能。详细的风险说明和各缓存模式对比见磁盘 IO 调优。
本章文章
| 文章 | 讲什么 |
|---|---|
| CPU 绑核、NUMA 与大页内存 | 什么硬件和负载用得上,以及各自的代价 |
| 磁盘 IO 调优:IO thread、缓存模式与 aio | cache/aio/iothread 参数详解,writeback/unsafe 的掉电风险 |
| 网络性能:multiqueue 与 vhost-net | multiqueue 什么时候有用、什么时候只是增加负载 |
| 内存:ballooning、KSM 与 ZFS ARC | 三种内存机制怎么分配、怎么互相打架 |
| 基准测试方法:fio 与 iperf3 | 改动前后怎么量化对比,fio 写测试的安全边界 |