I/O Performance Test

#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org

测试环境

host

Fedora
17
Kernel
3.5.3-1.fc17.x86_64
FS
ext4

guest

Ubuntu
12.04, x86_64
Kernel
3.2.0-23
bonnie++
1.96

Other

在每次测试的时候, 在 Guest 和 Host 上都执行以下指令, 把缓存清空

$ echo 3 > /proc/sys/vm/drop_caches

测试结果

启动参数

$ qemu -drive file=~/dunrong/Images/ubuntu.raw,if=ide # ide-raw 的启动参数
$ qemu -drive file=~/dunrong/Images/ubuntu.qcow2,if=ide # ide-qcow2 的启动参数
$ qemu -drive file=~/dunrong/Images/ubuntu-scsi.raw,if=scsi # scsi-raw 的启动参数
$ qemu -drive file=~/dunrong/Images/ubuntu-scsi.qcow2,if=scsi # scsi-qcow2 的启动参数
$ qemu -drive file=~/dunrong/Images/ubuntu-virtio.raw,if=virtio # virtio-raw 的启动参数
$ qemu -drive file=~/dunrong/Images/ubuntu-virtio.qcow2,if=virtio # virtio-qcow2 的启动参数

bonnie++

$ bonnie++ -d log -s 4096 -u root # 默认每次读写块大小 8k

格式 (read M/s,cpu%) (write M/s,cpu%)

     
  RAW QCOW2
IDE (305,66) (134,18) (271,54) (84,12)
SCSI (331,51) (83,12) (326,54) (75,11)
VIRTIO (695,51) (76,8) (616,40) (92,10)

dd

$ dd if=/dev/zero of=/test.db bs=8k count=524288 # 4G
$ dd if=/dev/sda1 of=/dev/null bs=8k count=524288 # 4G

格式 (read M/s,writeM/s)

     
  RAW QCOW2
IDE (123,115) (122,97)
SCSI (128,102) (118,98)
VIRTIO (100-400,128) (100-400,127)

结论

  • 在严格的磁盘读写, 即忽略缓存的影响的情况下, virtio 比 非 virtio 的 磁盘接口 读写速度都快, 但是差别不大, 比如用 dd 测试的时候. raw 格式比 qcow2 格式快
  • 在正常使用中的读写, 使用缓存的情况, virtio 的读速度完爆 非 virtio 磁盘接口的读速度, 这个重读就可以测试出来的, 或者上面的 bonnie++ 的结果, 我是估计内部没有忽略缓存的影响.
  • VirtIO 在磁盘方面似乎没有传说中的那么强悍

Other

其实最影响磁盘测试的应该是 QEMU Image 的 cache 策略的设置, 比如把 cache 设置为 Writeback, 那么完全不考虑数据是否已经真正写入缓存, 这样损失了安全性, 但是大 大提高了 Guest 的 I/O.

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦