yksam 发表于 2022-5-7 22:39:09

VM管理器 KVM cpu核心数问题和ovs网络下流量异常

本帖最后由 yksam 于 2022-5-7 22:42 编辑

本教程针对有一定基础的用户,不是保姆级教程。真·小白问题,比如“ssh是什么”之类的请求助百度

VM管理器中创建Windows虚拟机时,有可能出现虚拟机只认出两个核心的情况,这个问题只发生在消费级Windows系统(比如Win10)中,Windows Server和Linux发行版则不会发生。

问题的成因在于默认情况下KVM会把每个核心都配成一个CPU插槽,而消费级Windows系统只支持两个CPU插槽(在任务管理器中能看到认成了两个插槽),而Windows Server和Linux对CPU插槽的上限更高,如Windows Server 2022支持64插槽,跑在J4125上的KVM根本撞不到这个瓶颈。

解决方法是手动指定CPU拓扑。
ssh登陆UNAS,切换root账号,注意以下要在目标虚拟机关机状态下操作
virsh edit <虚拟机名>
比如:
virsh edit Win11

找到<cpu>标签,加一条手动指定拓扑(topology那条,上下内容可能有其他配置而不太一样)。各项配置什么意思自行百度,只需要注意这里的sockets*dies*cores*threads不要超过之前设置的虚拟内核数,如果和你的宿主机设置一致(似乎)能获得更好性能。
保存退出
<cpu mode='host-model' check='partial'>
<topology sockets='1' dies='1' cores='4' threads='1'/>
</cpu>

启动虚拟机,然后进虚拟机系统重启虚拟机!!!
重启虚拟机!!!
重启虚拟机!!!

因为Windows的UEFI快速启动特性,很多硬件修改不会立即生效,需要重启虚拟机!!!强制Windows重走完整开机流程扫描硬件改动。


KVM OVS

UNAS6新增了ovs网络支持,KVM在添加ovs网络之后却有可能出现虚拟机内网卡记录到异常的大流量,甚至记录到的流量远远超过了网卡最大支持值,比如我的虚拟机里千兆网卡持续出现好几G的上下行。这显然不正常,但是我用Wireshark抓包却抓不到任何异常的包,同网络别的机器也没有异常包;按理这么高的IO同时会消耗大量CPU,但是CPU的使用率没有任何异常,最终我怀疑仅是记录异常。

几经调试之后,最终确认是e1000e网卡和ovs网络似乎存在兼容性问题,将虚拟机网卡型号调整为e1000后不再有异常流量数据。


虚拟机关机后编辑网卡

顺便一提有关KVM网卡型号的选择

vm管理器创建虚拟机时的默认网卡型号是rtl8139,螃蟹家的古董百兆网卡型号,兼容性没得说,但是它是个百兆网卡。
换成别的型号就是基础操作。我常用的网卡型号有两个e1000e(现在改为e1000)和virtio。e1000e(e1000)是因特尔的网卡型号,千兆网卡,基本什么系统都兼容,只是这次e1000e遇到了异常大流量,以后换用e1000;virtio是kvm针对linux发行版的虚拟机的针对性优化网卡,没有链路速度一说,能发挥多少性能全看你硬件,J4125同一ovs下互联轻松破万兆,缺点是仅支持Linux,还不能是很旧的版本。

页: [1]
查看完整版本: VM管理器 KVM cpu核心数问题和ovs网络下流量异常