qemu全方位优化指南
qemu全方位优化指南
qemu优化和不优化差距很大,优化好了,几乎和真机一样的体验
本篇文章的每一个章节,铺开了讲,都能写好几章,所以,这里不涉及原理,只提供思路和参考,具体的实践,你还要通过多搜一下才能达到
优化的思路
一个电脑快,到底是什么促成了一个电脑快,首先cpu强大,再内存够用,然后存储的io跟的上,然后网络要快,2d和3d的性能要强劲,总共就这几个方向
- cpu强大
- 内存够用
- 存储io要快
- 网络io要快
- 图形性能要强大,包括2d和3d的支持
qemu优化
- cpu pin
- cpu数量优化
- 使用huagepages
- hyperv相关优化
- 安装virtio-win驱动,改善易用性,相当于vmware或者virtualbox的增强工具
- 有机后了,如果你一个集显,一个独显,可以显卡passthough,补上虚拟机3d性能的遗憾
cpu优化
cpu pin
cpu pin以后,可以让cpu和线程绑定起来,然后减少上下文切换
这里以我的cpu为例,i5-9600k,总共6个核心,我给他们分配了4个,剩下2个,一个分给了emulatorpin,
一个分给了iothreadpin,实际使用了还是6个核心,具体cpu pin,需要看自己的cpu数量和是否支持超线程来定,
还是比较复杂的,这里给了是一个示例
1 | <domain> |
cpu核心数量确定
1 | <domain> |
内存优化
使用hugepages,使用连续的内存,同时减少查询的次数
开启1g大页内存,数量为8,grub的增加GRUB_CMDLINE_LINUX_DEFAULT以下内容
1 | GRUB_CMDLINE_LINUX_DEFAULT="default_hugepagesz=1G hugepagesz=1G hugepages=8" |
挂载分区,/etc/fstab,加以下内容
1 | none /mnt/huge hugetlbfs pagesize=1G,size=8G 0 0 |
虚拟机配置使用,使用默认的大页内存,我们开了8个1g的大分页,总共8g内存
1 | <domain> |
io优化
存储类型选择virtIO驱动,网络类型也选择virtIO模式
针对windows的虚拟机优化
这是微软为了提高windows在hyper模式下所做的优化,windows知道自己是作为虚拟机了,主动做的一些优化,qemu也支持
1 | <domain> |
3d性能优化
安装virtio-win里面驱动,里面包含了virtIO的驱动,同时也包含了spice-guest-tools,可以增加一些2d的性能,包含少量的3d性能,如果想要增加3d
性能,只能pcie passthough了,就是直接分配给虚拟机一块显卡,然后虚拟机装上驱动,就可以差不多拥有和真机一样的3d性能,因为此时,已经完整的包含了一张
显卡设备
总结
上面几个看似不起眼的优化,其实每个对性能的提升都是非常巨大的,基本上你按照以上的优化实施以后,虚拟机可以达到真机的水平,尤其是显卡 passthough
以后,虚拟机最后一个3d的短板也被修补上,将会非常流畅
经过这些优化,没错,你的虚拟机可以直接玩3d游戏了(需要显卡passthough),也会不卡