KVM 来宾性能受 virtblk 磁盘等待时间过长的影响

Puk*_*eko 6 performance kvm virtualization

我有几个 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 等?主机资源充足,没有明显的问题迹象。

chr*_*1x2 2

我最近有同样的问题

# iostat -dx 60
Linux 3.13.0-32-generic (hostname)  Wednesday, 04 March, 2015   _x86_64_    (6 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     2.46   51.49    4.12  1742.66   325.36    74.38     0.05  770.46  487.83 4300.67   0.15   0.81
scd0              0.00     0.00    0.08    0.00     0.31     0.00     8.00     0.00    0.73    0.73    0.00   0.73   0.01

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.03    0.02    0.20     0.13     0.93     9.85     0.00 35787.38    4.00 38769.33   0.31   0.01
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
Run Code Online (Sandbox Code Playgroud)

升级内核并在 KVM 来宾上安装 linux-headers 和 linux-headers-generic 修复了我的 I/O 问题。安装后重新启动。

# aptitude install linux-headers-3.13.0-46 linux-headers-3.13.0-46-generic linux-image-3.13.0-46-generic
Run Code Online (Sandbox Code Playgroud)

安装后:

# iostat -dx 60
Linux 3.13.0-46-generic (hostname)  Wednesday, 04 March, 2015   _x86_64_    (6 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.36   19.36    0.42   227.23     4.51    23.44     0.01    0.50    0.45    2.92   0.14   0.28
scd0              0.00     0.00    0.04    0.00     0.18     0.00     8.00     0.00    0.36    0.36    0.00   0.36   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
Run Code Online (Sandbox Code Playgroud)