嵌入式网络虚拟化环境中优化网络吞吐量的方法技术

技术编号:11442572 阅读:87 留言:0更新日期:2015-05-13 13:03
本发明专利技术提供了一种嵌入式网络虚拟化环境中优化网络吞吐量的方法,其将多个hypercall通过聚合计时器被聚合成一个hypercall,聚合间隔时间可以根据预测的下一个I/O请求到达的时间自主调节,从而显著地减少了客户机和宿主机上下文切换的次数,节省了大量的CPU资源以处理更多的网络I/O,同时在低网络流量情况下能够减少数据传输的延迟。通过发明专利技术人的实验可以发现,与传统方法相比,AHC方法可以使Netperf,Apache和Memcached的吞吐量分别提高221.14%,146.23%和257.42%。

【技术实现步骤摘要】
嵌入式网络虚拟化环境中优化网络吞吐量的方法
本专利技术涉及嵌入式系统,具体地,涉及嵌入式网络虚拟化环境中优化网络吞吐量的方法及自主超级调用聚合方法。
技术介绍
嵌入式系统是执行少数任务的专用系统,与传统x86平台不同,嵌入式环境具有功耗低,计算能力较弱等特点,具有不同的性能模型。嵌入式系统需要频繁的与物理世界进行频繁的交互,但由于嵌入式系统的资源限制,在嵌入式虚拟化环境下I/O虚拟化的性能成为了嵌入式虚拟化技术的重要技术指标。在嵌入式虚拟化环境中,I/O虚拟化的性能需要保证硬件设备的整体性能在一定的扩展范围内稳定,能够满足各个虚拟机的资源需求。在传统的系统结构中,I/O设备连接到PCI总线上,PCI设备通过PCI配置空间以及设备地址空间与操作系统进行交互,通过中断机制通知反馈操作系统。虚拟化环境中,软件通过截获GuestPIO和MMIO请求截获,通过硬件虚拟化扩展转发给上层;模拟结束后再将结果通过中断反馈到Guest中。目前有三种主流的I/O设备虚拟化方案,用来实现I/O设备的虚拟化:一是完全虚拟化方式,I/O设备完全由虚拟机平台进行模拟,其驱动不需要修改。虚拟机平台对虚拟机完全透明,虚拟机只需要调用原生系统中的设备驱动,直接操作下层的虚拟硬件,具体的指令陷入由VMM完成解释和执行。I/O完全虚拟化方式最大的弊端在于处理器特权级地切换,即从GuestOS到VMM、VMM到模拟用户程序的I/O进程之间切换,严重影响了虚拟化效率,需要消耗大量的CPU指令周期;二是半虚拟化方式,虚拟机系统中集成专用的虚拟机设备驱动,访问I/O设备需采用虚拟机中提供的虚拟设备。由于其驱动为虚拟设备专用,所以客户机系统需要进行修改。当应用程序提出访问请求时,前后端驱动共同配合完成访问。半虚拟化方式的I/O虚拟化拥有较好的性能,但是其不足之处在于虚拟机需要修改系统驱动,实现前后端驱动的对应;三是硬件支持的虚拟化,通过硬件的支持,虚拟机系统可以在VMM授权后,不经VMM的请求转发,实现对硬件设备的直接访问。硬件支持的虚拟化方式是未来虚拟化发展的一个方向,但是其广泛的应用仍然有赖于硬件设备的探索与发展。1.1、KVM/ARMARM体系结构过去在指令集上认为是不可虚拟化的(G.J.PopekandR.P.Goldberg.FormalRequirementsforVirtualizableThirdGenerationArchitectures.CommunicationsoftheACM,17(7):412–421,July1974),ARM在最新的ARMv7和ARMv8架构中引入了硬件虚拟化扩展,包括对CPU,内存,中断以及计时器虚拟化的硬件支持扩展。嵌入式系统的虚拟化研究,ChristofferDall和JasonNieh等已进行了系统的研究,实现了第一个ARM系统的虚拟化解决方案KVM/ARM,KVM/ARM已被并入到Linux3.9内核中。KVM/ARM基于已有的x86平台下解决方案KVM,与x86平台相比,ARM平台缺少标准BIOS或PCI总线的硬件自动识别,而Linux被设计于运行于几乎所有的ARM平台上。通过与KVM结合,KVM/ARM可以不加修改的运行在各个ARM平台上,这与XenARM形成对比:XenARM直接运行在硬件层,必须针对各个不同的ARM平台编写不同的平台代码。ARM虚拟化硬件扩展被设计用于独立运行于硬件的虚拟机监控程序,因此KVM/ARM采用了分离模式的设计,该设计使得KVM既能够利用已有KVM代码,又可以充分利用ARM虚拟化硬件扩展的特性,架构如图1所示。KVM/ARM分为Highvisor和Lowvisor两个模块,Highvisor运行在PL1级别,即宿主机内核中,负责集成和利用已有的KVM代码,例如可以直接使用LinuxKernel中较为成熟的调度模块,可以使用LinuxKernel中标准的数据结构;Lowvisor运行在CPUPL2级别,即Hyp级别,Lowvisor充分利用ARM虚拟化硬件扩展的特性,配置正确的执行环境。KVM/ARM的分离模式允许其可以运行在不经修改的内核中。1.2、VirtIOPVDriverVirtIO是半虚拟化解决方案中位于设备之上的设备层,是对通用模拟设备的抽象;通过应用编程接口连接客户机操作系统及虚拟机监控程序(Hypervisor)。Virtio的驱动程序架构抽象如图2所示,VirtIO架构包括前端驱动程序和后端驱动程序,其前端驱动程序包括块设备,网络设备,PCI设备以及balloon驱动程序,每个前端驱动程序包含一个对应的后端程序,VirtIO的软件层次如图3所示,其中Virtio-net提供了网络设备共享的接口,为Guest和Qemu提供了高效的IO通道,以共享内存的数据传输方式为Guest提供了高效的网络IO性能。在VirtIO网络虚拟化中,虚拟网络设备维护了一个vring的数据结构,以进行数据收发和配置空间访问。客户机在进行网络I/O时,virtio-net前端驱动以读写数据方式写入vring队列,然后通过virtio-pci硬件寄存器通知宿主机,该步骤称为kick操作。宿主机截获通知信息并从vring队列中读写请求,处理完毕后将结果添加到vring队列并发送中断给客户机。该过程的流程图如图4所示,从该过程可以看出,客户机每次发送数据时,需要执行一次kick操作,从客户机切换到虚拟机监控程序KVM,再从虚拟机监控程序切换回客户机并触发中断。1.3、网络性能评估网络性能评估中一个重要的指标是网络的吞吐量,吞吐量是每秒中可以发送/传输多少字节数据。专利技术人针对不同虚拟机数量的情况下对网络吞吐量进行了测试,具体方法为,运行一定数量的虚拟机,使用netperf网络性能测试工具进行批量数据传输测试,该测试结果反映的是一个系统能够以多快的速度发送数据,另一个系统能够以多快的速度接收数据。在实验过程中,专利技术人记录了客户机的数量与网络的吞吐量,CPU使用率之间的关系,其结果如图5所示。从实验结果可以看出,随着虚拟机数量的增加,CPU利用率接近饱和,网络总体的吞吐量保持稳定。这个瓶颈表现为客户机数量在2个及以上时CPU利用率完全饱和,也就是说,系统无法迅速地处理更多的数据包,而且几乎全部的CPU时钟都被用于处理网络数据收发,在这个过程中,主要为客户机和宿主机切换(VMExit)所产生的开销。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一在嵌入式网络虚拟化环境中优化网络吞吐量的方法。该方法借鉴了网卡中断节制技术,网卡中断节制技术是硬件网卡层面中的一种技术。在网络繁忙的情况下,中断带来的CPU上下文切换的开销非常大,CPU容易达到满负荷中断,产生中断淹没现象,使得CPU成为瓶颈,而网卡中断节制技术所采取的策略为当收到数据后并不立即产生中断,而是经过一定的时间后再产生中断请求;这项技术避免频繁的中断占用CPU资源并有效地降低了CPU利用率,优化了网络吞吐率。根据本专利技术提供的一种自主超级调用聚合方法,将多次超级调用hypercall通过聚合计时器被聚合成一个超级调用hypercall,以减少超级调用hypercall的执行次数。优选地,包括如下步骤:步骤A:在Vi本文档来自技高网
...
嵌入式网络虚拟化环境中优化网络吞吐量的方法

【技术保护点】
一种自主超级调用聚合方法,其特征在于,将多次超级调用hypercall通过聚合计时器被聚合成一个超级调用hypercall,以减少超级调用hypercall的执行次数。

【技术特征摘要】
1.一种自主超级调用聚合方法,其特征在于,将多次超级调用hypercall通过聚合计时器被聚合成一个超级调用hypercall,以减少超级调用hypercall的执行次数;所述的自主超级调用聚合方法,包括如下步骤:步骤A:在VirtIO前端驱动程序中设置聚合计时器,其中,所述聚合计时器的计时器开始计时的时间为T0,聚合间隔时间为T;步骤B:设置t0为当前时间,利用如下公式预测下一个请求到达的时间:tnext=2tcur-tpre其中:tnext表示下一个请求到达的时间,tcur表示当前请求到达的时间,tpre表示前一个请求到达的时间;步骤C:判断聚合计时器是否已启动:-如果聚合计时器已经启动,则:若tnext>T+T0,则就停止聚合计时器,否则,则进行等待,不立即执行调用超级调用hypercall;-如果聚合计时器尚未启动,则:若tnext>T,则调用超级调用hypercall,从客户机切换到虚拟机监控程序,然后结束此次调用;否则,则让T0=t0并启动聚合计时器,无需调用超级调用h...

【专利技术属性】
技术研发人员:姚建国程书欣邓婷管海兵
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1