qemu各种存储类型io大比拼

qemu是linux的虚拟机,负责虚拟化一个机器出来,包括cpu,内存,pci,存储,网卡之类的,但是纯模拟效率比较低,所以,一般和kvm配合,
kvm负责虚拟内核,然后qemu继续负责外围,所以,qemu-kvm是linux平台的主流虚拟机,性能也是相当高

今天就来介绍一下,qemu的各种io类型的跑分,首先,先说结论,virtIO的性能也是非常好的,可以做到够用,但是想要强,还是要PCI passthough,花不多说,上图吧

talk is cheap,show me the benchmark

这些图片是引用了一个up主的视频Adding VirtIO and passthrough storage in Virtual Machine Manager

这些跑分应该这样解读,顺序读写看着很快,其实只有大文件读写才用得到,主要还是看4k的速度,4k的速度,单线程和多线程都很重要,上面两个是顺序,下面两个是4k,
所以,virtio默认带缓存的时候,看起来顺序读写很吓人,其实没太大用处

  1. all表示执行全部任务
  2. SEQ1M|Q8T1表示顺序读写,位深1024K,1线程8队列的测试速度
  3. SEQ1M|Q1T1表示顺序读写,位深1024K,1线程1队列测试速度
  4. RND4K|Q32T16表示随机读写,位深1024*4K,16线程32队列的测试速度
  5. RND4K|Q1T1表示随机读写,位深1024*4K,一线程一队列的测试速度

SATA模式

装机的时候,可以直接识别,不需要驱动安装

LNU passthrough

virtIO模式

需要驱动

PCI passthrough

不需要驱动

自己机器的PCI passthrough

总结

简要总结,sata怎么样都不行,LNU passthrough还是不行,只有virtIO最好,当然passThrough才是最强王者

平常使用的时候,virtIO就可以了,有条件一定要passThrough

模式 成绩 注意事项
sata 装系统的时候不要驱动,但是性能不行,我还是装驱动吧,不过它也有自己的场景,适用于有些系统无法装驱动,比如说qemu装androidx86的时候,就无法装virtIO驱动,所以只能使用这种方式
lnu passthrough 较差 可以利用一个分区,但是性能还是不行,我这样用还不如用virtIO的文件
virtIO 可以,顺序读写不差多少,但是4k读写一半左右的性能,还不错,其实已经够用,在虚拟机里面算水平很高了
PCI passthrough 只能一个sdd整个一起用,但是性能非常好,能达到80-90%的性能,有条件一定要整

用PCI passthrough的时候,可以看到sata的ssd速度能达到原生的80-90%(4k的多线程读写,up主80%没,我的是90%,平常还是用读的比较多),但是NVME的ssd性能损耗比较大,因为本来就很快,即便降低了1/3,
其实还是比普通的sata的ssd快,还是比较可惜,PCI passthough需要开启IOMMU,而且只能一下用整个存储,但是我还是推荐你使用,性能非常好