kvm 低 io 性能

phh*_*hhe 6 performance hard-drive libvirt kvm-virtualization

我的设置的性能非常好(geekbench,感觉如何,...)甚至磁盘吞吐量(原始 lvm 分区上的 libvirt)也非常接近服务器上的原始性能)IOP/s 低至100-200 来宾端(与 ~1000 主机端相比)在 linux 和 Windows 来宾上。
这是一件可以忍受的事情(kvm 不能做得更好)还是我做错了什么?

有趣的是,我能够通过更改设置(qcow2 vs raw-image vs raw-partition)或配置(缓存或 io-scheduling)和变化来影响吞吐量,但 IOP 保持在所有这些相同的低点组合。

硬件#

• supermicro dual xeon E5520 with 24GB RAM
• 2x seagate constellation 1TB(RAID1 on Adaptec 3405)
• 2x seagate cheetah(RAID1 on Adaptec 6405)。

软件

• ubuntu 11.10 3.0.0-13-server
• kvm/QEMU 模拟器版本 0.14.1 (qemu-kvm-0.14.1)
• 对来自主机和来宾的磁盘(bonnie++、hdparm)进行基准测试(windows 上的 bonnie++、hdparm、hdtune) )

配置

我测试了几种光盘配置,当前设置是:

linux 主机

(他们只是“不需要”高 IO 性能,所以我保留了更舒适的
磁盘文件)• 我星座上 lvm 上的 qcow2 磁盘文件
• qemu/ide

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/media/vm/images/mex/mex_root.qcow2'/>
  <target dev='hda' bus='ide'/>
  <address type='drive' controller='0' bus='0' unit='0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

windows主机###

(运行 SQL-Server 和远程桌面服务,所以在这里我肯定需要一个好的 IO 性能)
• 我的猎豹上的原始 lvm 分区
• virtio

<emulator>/usr/bin/kvm</emulator>
<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/Cheetah/mts'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

dya*_*sny 8

最佳配置(通常)如下:

  1. 在主机上,设置 elevator=deadline
  2. 使用 virtio 并且只使用 virtio
  3. 尽可能使用原始 LV。Qcow2 给出了开销。FS 上的文件也有开销
  4. 在 VM 中使用 elevator=noop
  5. 在主机和虚拟机中,noatime,nodiratime尽可能在 fstab 中使用
  6. 确保 virtio 驱动程序是最新的,尤其是 windows 驱动程序。
  7. 基于 Debian 的发行版(可以说)不如用于 QEMU/KVM 的 Fedora 和 RHEL。不是要开火,但大部分开发和测试都是在 Fedora 和 RHEL 上完成的,根据我自己的经验,Ubuntu 和 Debian 上存在很多我无法在 Fedora 和 RHEL 上重现的问题。如果你愿意,你可以忽略这个特定的项目符号,但如果你正在寻找解决方案,另一个发行版的快速基准通常值得一试


the*_*bit 1

在启动 KVM 之前,尝试将“deadline”设置为主机磁盘的I/O 调度程序:

 for f in /sys/block/sd*/queue/scheduler; do echo "deadline" > $f; done
Run Code Online (Sandbox Code Playgroud)

如果您有 I/O 限制负载,那么它可能是您的最佳选择,正如这篇 IBM 论文所建议的那样。