我有几个 KVM 来宾使用 libvirt 在 Ubuntu 14.04 上运行。他们的表现很差。在简单的基准测试中具有数量级可变性的差性能的间歇性性质以及活动对其他 VM 的明显影响强烈表明问题在于主机中的资源争用。对来宾的 Sar 监控揭示了 virtblk 磁盘必须等待很长时间才能为 I/O 请求提供服务的问题。例如
00:00:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
00:05:01 dev253-0 0.10 0.00 1.39 14.34 0.00 682539.72 0.14 0.00
Run Code Online (Sandbox Code Playgroud)
等待时间一直非常高,所有客人的等待时间都相似。
典型的磁盘配置是
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/Base-dev-0002-clone.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)
已经在来宾上尝试了许多事情,包括驱动程序行中的缓存设置和 io=native,从原始 img 文件存储克隆到逻辑卷,电梯=截止日期,virtio_blk.use_bio=1 但没有任何显着影响。
我知道虚拟磁盘必须对性能造成影响,但这是极端的。
KVM 来宾的典型等待时间是多少?
记住我的资源争用声明,可能需要在主机上分配哪些资源、ulimit 等?主机资源充足,没有明显的问题迹象。