扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
[导读]通过多队列技术,10G以太网的速度可以达到9Gbit/s,我们拿它和用4个千兆网卡端口链路集合进行对比,从性能和经济角度来看,四端口链路聚合(IEEE 802.3ad)被认为是"最佳点",但10G以太网比四端口链路集合解决方案消耗的CPU周期更少,并且速度也将近其2倍(9.5Gbit/s对比3.8Gbit/s),延迟也更小。
英特尔使用VT-d,AMD使用新的IOMMU技术解决了这个问题,I/O集线器将虚拟或客户机OS假物理地址(紫色)转换成真实的物理地址(蓝色)。新的IOMMU通过给不同的设备分配不同的物理内存子集,实现了不同I/O设备相互隔离。
虚拟服务器很少使用这项功能,因为它使虚拟机迁移变成不可能完成的任务,相反,它们是从底层硬件解耦虚拟机,直接将VM分配给底层硬件,因此AMD IOMMU和英特尔VT-d技术单独使用没有多大用处,这仅仅是I/O虚拟化难题的1/3。
第二步:多队列
接下来是使网卡变得更强大,而不是让Hypervisor对所有接收到的数据包进行排序,然后再发送给正确的VM,网卡变成一个完整的硬件开关,将所有数据包排序后放入多个队列,每个VM一个。
图 6 虚拟机多队列传输
更少的中断和CPU负载。如果让Hypervisor处理数据包交换,这意味着CPU 0要被中断,检查接收到的数据包,并确定目标VM,目标VM和相关的CPU立即中断,使用网卡中的硬件开关,数据包被立即发送到正确的队列,相关CPU立即中断,并开始接收数据包。
更短的延迟。单个队列负责接收和转发多个VM的数据包会受不了,因此可能会出现丢包,让每个VM拥有自己的队列,吞吐量更高,延迟更低。
虽然虚拟机设备队列(Virtual Machine Devices Queues)解决了许多问题,但仍然还有一些CPU开销存在,每次CPU中断时,Hypervisor必须从Hypervisor空间将数据复制到VM内存空间。
最后的难题:SR-IOV
最后一步是给你多个队列设备中的每个队列添加一些缓冲区和Rx/Tx描述符,单块网卡可以伪装成数十个"小"网卡,这也是PCI SIG做的工作,它们称每个小网卡为一个虚函数(virtual functions,VF),根据PCI SIG SR-IOV规范,每块网卡最大可以提供256个虚函数(注意:SR-IOV规范不限于网卡,其它I/O设备也可以有SR-IOV功能)。
图 7 具有SR-IOV功能的网卡可以创建多个虚函数
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者