在Ubuntu上创建虚拟机时,我可以选择三个虚拟网络接口的设备模型: virtio、e1000和rtl8139。
这三者之间有什么区别?换句话说,在选择设备模型时,我应该考虑什么?
谷歌搜索“virtio vs e1000 vs rtl8139”并没有多大帮助。前两页的结果都是官方文档,没有太多说明,博客文章总结为“使用选项N,因为我试过了,它很棒”。我找到的唯一有用的资源是讨论,它似乎表明e1000速度慢,但与virtio相比兼容性最强。讨论似乎暗示e1000在某种程度上比rtl8139更受欢迎,但没有说明原因。
发布于 2020-07-10 17:47:44
在设置虚拟机的上下文中,e1000
模拟Intel,rtl8139
模拟Realtek,而virtio
是一个准虚拟化驱动程序,也就是说,它“知道”它在VM中运行,基本上只是以最直接的方式传递VM和主机之间的网络流量。
如果在VM中运行遗留操作系统,则可能需要根据遗留操作系统中支持什么NIC来选择虚拟NIC。英特尔e1000
的驱动程序甚至可以用于非常老而晦涩的开放源码软件。但是物理e1000网卡的硬件相当复杂,因此由于需要对其进行仿真,会产生一些开销。
Realtek 8139显然是相当简单的,硬件方面的,所以它可能比较容易在VM中模仿比英特尔的e1000。但是另一方面,简单性也意味着VM内部的操作系统可能需要做一些额外的工作,以满足NIC仿真的条件,而实际的主机NIC可以在硬件中完成其中的一些工作。
但是,如果您在VM中运行的任何操作都支持virtio
,那么它可能会给您提供最好的性能(除了为VFIOpass身/ skip设计的主机NIC硬件之外),因为它允许VM简单地跳过与仿真虚拟NIC和控制虚拟硬件有关的大部分步骤,并且允许主机利用实际物理NIC的硬件特性,最大限度地造福于VM的流量。
https://unix.stackexchange.com/questions/597789
复制相似问题