首页> 中国专利> 嵌入式网络虚拟化环境中优化网络吞吐量的方法

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

摘要

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

著录项

  • 公开/公告号CN104615495A

    专利类型发明专利

  • 公开/公告日2015-05-13

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN201510044195.4

  • 发明设计人 姚建国;程书欣;邓婷;管海兵;

    申请日2015-01-28

  • 分类号G06F9/48(20060101);H04L12/891(20130101);

  • 代理机构31236 上海汉声知识产权代理有限公司;

  • 代理人郭国中

  • 地址 200240 上海市闵行区东川路800号

  • 入库时间 2023-12-18 08:49:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-01

    授权

    授权

  • 2015-06-10

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20150128

    实质审查的生效

  • 2015-05-13

    公开

    公开

说明书

技术领域

本发明涉及嵌入式系统,具体地,涉及嵌入式网络虚拟化环境中优化网络吞吐 量的方法及自主超级调用聚合方法。

背景技术

嵌入式系统是执行少数任务的专用系统,与传统x86平台不同,嵌入式环境具 有功耗低,计算能力较弱等特点,具有不同的性能模型。嵌入式系统需要频繁的与 物理世界进行频繁的交互,但由于嵌入式系统的资源限制,在嵌入式虚拟化环境下 I/O虚拟化的性能成为了嵌入式虚拟化技术的重要技术指标。在嵌入式虚拟化环境 中,I/O虚拟化的性能需要保证硬件设备的整体性能在一定的扩展范围内稳定,能 够满足各个虚拟机的资源需求。

在传统的系统结构中,I/O设备连接到PCI总线上,PCI设备通过PCI配置空 间以及设备地址空间与操作系统进行交互,通过中断机制通知反馈操作系统。虚拟 化环境中,软件通过截获Guest PIO和MMIO请求截获,通过硬件虚拟化扩展转发 给上层;模拟结束后再将结果通过中断反馈到Guest中。

目前有三种主流的I/O设备虚拟化方案,用来实现I/O设备的虚拟化:一是完 全虚拟化方式,I/O设备完全由虚拟机平台进行模拟,其驱动不需要修改。虚拟机 平台对虚拟机完全透明,虚拟机只需要调用原生系统中的设备驱动,直接操作下层 的虚拟硬件,具体的指令陷入由VMM完成解释和执行。I/O完全虚拟化方式最大的 弊端在于处理器特权级地切换,即从Guest OS到VMM、VMM到模拟用户程序的I/O 进程之间切换,严重影响了虚拟化效率,需要消耗大量的CPU指令周期;二是半虚 拟化方式,虚拟机系统中集成专用的虚拟机设备驱动,访问I/O设备需采用虚拟机 中提供的虚拟设备。由于其驱动为虚拟设备专用,所以客户机系统需要进行修改。 当应用程序提出访问请求时,前后端驱动共同配合完成访问。半虚拟化方式的I/O 虚拟化拥有较好的性能,但是其不足之处在于虚拟机需要修改系统驱动,实现前后 端驱动的对应;三是硬件支持的虚拟化,通过硬件的支持,虚拟机系统可以在VMM 授权后,不经VMM的请求转发,实现对硬件设备的直接访问。硬件支持的虚拟化方 式是未来虚拟化发展的一个方向,但是其广泛的应用仍然有赖于硬件设备的探索与 发展。

1.1、KVM/ARM

ARM体系结构过去在指令集上认为是不可虚拟化的(G.J.Popek and R.P. Goldberg.Formal Requirements for Virtual izable Third Generation  Architectures.Communications of the ACM,17(7):412–421,July 1974), ARM在最新的ARMv7和ARMv8架构中引入了硬件虚拟化扩展,包括对CPU,内存, 中断以及计时器虚拟化的硬件支持扩展。嵌入式系统的虚拟化研究,Christoffer  Dall和Jason Nieh等已进行了系统的研究,实现了第一个ARM系统的虚拟化解决 方案KVM/ARM,KVM/ARM已被并入到Linux 3.9内核中。

KVM/ARM基于已有的x86平台下解决方案KVM,与x86平台相比,ARM平台缺少 标准BIOS或PCI总线的硬件自动识别,而Linux被设计于运行于几乎所有的ARM 平台上。通过与KVM结合,KVM/ARM可以不加修改的运行在各个ARM平台上,这与 Xen ARM形成对比:Xen ARM直接运行在硬件层,必须针对各个不同的ARM平台编 写不同的平台代码。

ARM虚拟化硬件扩展被设计用于独立运行于硬件的虚拟机监控程序,因此 KVM/ARM采用了分离模式的设计,该设计使得KVM既能够利用已有KVM代码,又可 以充分利用ARM虚拟化硬件扩展的特性,架构如图1所示。

KVM/ARM分为Highvisor和Lowvisor两个模块,Highvisor运行在PL1级别, 即宿主机内核中,负责集成和利用已有的KVM代码,例如可以直接使用Linux Kernel 中较为成熟的调度模块,可以使用Linux Kernel中标准的数据结构;Lowvisor运 行在CPU PL2级别,即Hyp级别,Lowvisor充分利用ARM虚拟化硬件扩展的特性, 配置正确的执行环境。KVM/ARM的分离模式允许其可以运行在不经修改的内核中。

1.2、VirtIO PV Driver

VirtIO是半虚拟化解决方案中位于设备之上的设备层,是对通用模拟设备的抽 象;通过应用编程接口连接客户机操作系统及虚拟机监控程序(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时钟都 被用于处理网络数据收发,在这个过程中,主要为客户机和宿主机切换(VM Exit) 所产生的开销。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一在嵌入式网络虚拟化环境中优 化网络吞吐量的方法。该方法借鉴了网卡中断节制技术,网卡中断节制技术是硬件 网卡层面中的一种技术。在网络繁忙的情况下,中断带来的CPU上下文切换的开销 非常大,CPU容易达到满负荷中断,产生中断淹没现象,使得CPU成为瓶颈,而网 卡中断节制技术所采取的策略为当收到数据后并不立即产生中断,而是经过一定的 时间后再产生中断请求;这项技术避免频繁的中断占用CPU资源并有效地降低了CPU 利用率,优化了网络吞吐率。

根据本发明提供的一种自主超级调用聚合方法,将多次超级调用hypercall通过 聚合计时器被聚合成一个超级调用hypercall,以减少超级调用hypercall的执行次数。

优选地,包括如下步骤:

步骤A:在VirtIO前端驱动程序中设置聚合计时器,其中,所述聚合计时器的计时 器开始计时的时间为T0,聚合间隔时间为T;

步骤B:设置t0为当前时间,利用如下公式预测下一个请求到达的时间:

tnext=2tcur-tpre

其中:tnext表示下一个请求到达的时间,tcur表示当前请求到达的时间,tpre表示前 一个请求到达的时间;

步骤B:判断聚合计时器是否已启动:

-如果聚合计时器已经启动,则:若tnext>T+T0,则就停止聚合计时器,否则无 需调用超级调用hypercall;

-如果聚合计时器尚未启动,则:若tnext>T,则调用超级调用hypercall,从客 户机切换到虚拟机监控程序,然后结束此次调用;否则,则让T0=t0并启动聚合计时器, 无需调用超级调用hypercall,进一步地,若tnext>T+T0,则就停止聚合计时器,否 则无需调用超级调用hypercall;

步骤C:判断聚合计时器是否计时结束或者被停止,如果聚合计时器计时结束或者 被停止,则就调用超级调用hypercalll。

根据本发明提供的一种嵌入式网络虚拟化环境中优化网络吞吐量的方法,包括如 下步骤:

步骤1:当客户机发送数据包时,客户机kernel调用VirtIO前端驱动程序将数据 写在vring队列;

步骤2:利用权利要求1或2所述的自主超级调用聚合方法,根据前一个请求到 达的时间和当前I/O请求到达的时间,判断是否立即进行上下文切换,将控制权由客户 机交给宿主机;若要立即进行上下文切换,则继续执行步骤3;若不能立即进行上下文 切换,则等待一个聚合间隔时间,再进行步骤3;

步骤3:客户机执行超级调用hypercall通知宿主机,客户机切换到虚拟机监控程 序,虚拟机监控程序从vring队列取出数据,处理完毕后将结果添加到vring队列并发 送中断给客户机;

步骤4:此次调用结束。

与现有技术相比,本发明具有如下的有益效果:

本发明主要涉及的一个发明点就是借鉴了网卡中断节制技术,在VirtIO前端驱动 程序中引入自主超级调用(hypercall)聚合方法——AHC算法。通过该发明点的作用, 多个hypercall通过聚合计时器被聚合成一个hypercall,聚合间隔时间可以根据预测 的下一个I/O请求到达的时间自主调节,从而显著地减少了客户机和宿主机上下文切换 的次数,节省了大量的CPU资源以处理更多的网络I/O,同时在低网络流量情况下能够 减少数据传输的延迟。通过发明人的实验可以发现,与传统方法相比,AHC方法可以使 Netperf,Apache和Memcached的吞吐量分别提高221.14%,146.23%和257.42%。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特 征、目的和优点将会变得更明显:

图1为KVM/ARM架构图。

图2为VirtIO的驱动程序架构抽象图。

图3为VirtIO的软件层次图。

图4为VirtIO的工作流程图。

图5为客户机的数量与网络的吞吐量之间的关系图。

图6为引入AHC算法后的Virtio-net的工作流程。

图7为传统方法和AHC方法的hypercall调用率的比较。

图8为AHC算法对Netperf,Apache和Memcached性能的提高。

图9、10和11为在不同数量虚拟机的情况下,分别进行Netperf,Apache和 Memcached基准测试时,传统方法和AHC方法的吞吐量的比较。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人 员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技 术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于 本发明的保护范围。

在嵌入式虚拟化环境中,相比于x86环境下CPU资源更为宝贵,网络I/O频繁时客 户机和宿主机的上下文切换消耗了大量的CPU资源,因此发明人借鉴了网卡中断节制技 术,同时考虑到在低网络流量情况下减少数据传输的延迟,设计出AHC(自主Hypercall 聚合)算法,在VirtIO前端驱动程序中引入AHC算法,客户机在进行网络数据I/O时, 将数据缓存到队列里,然后由AHC算法根据此前I/O请求到达的时间和当前I/O请求到 达的时间,判断是立即进行上下文切换,将控制权交给宿主机,还是经过一定的时间后 再进行上下文切换,通知宿主机从缓存队列获取数据。引入AHC算法的VirtIO网络虚 拟化工作原理如图6所示。

引入AHC算法(自主超级调用聚合算法)的VirtIO网络虚拟化工作步骤如下:

1)当客户机发送数据包时,客户机kernel调用VirtIO前端驱动程序将数据写在 vring队列;

2)AHC算法根据此前I/O请求到达的时间和当前I/O请求到达的时间,判断是否立 即进行上下文切换,将控制权交给宿主机。若可立即切换,即继续执行下面步 骤;若不能切换,则等待一个聚合间隔时间,再进行下面的步骤;

3)客户机执行hypercall通知宿主机,客户机切换到虚拟机监控程序,虚拟机监 控程序从vring队列取出数据,处理完毕后将结果添加到vring队列并发送中 断给客户机。

4)此次调用结束。

发明人通过大量的观察发现,网络应用中大多数请求到达的时间间隔几乎相等,请 求到达速率突发变化的情况很少。据此,发明人提出AHC算法的一个基本假设:请求的 到达时间间隔相等,根据当前请求到达的时间可以预测下一个请求到达的时间。请求突 发的情况很少,因此下一个请求到达时间的错误预测不会影响整体的性能。AHC算法的 原理如下(参数如表1所示):

表1

变量 意义 tpre前一个请求到达的时间 tcur当前请求到达的时间 tnext下一个请求到达的时间 t0当前时间 T 聚合间隔时间

T0计时器开始计时的时间

输入:tpre,tcur

输出:是否调用超级调用hypercall

执行步骤如下:

1)设置t0为当前时间,利用公式tnext=2tcur-tpre预测下一个请求到达的时间;

2)如果聚合计时器已经启动,跳转到步骤4);如果聚合计时器尚未启动,则执行 步骤3)

3)如果tnext>T,调用hypercall(超级调用,只能由内核来调用,而应用程序是 无法直接调用的),从客户机切换到虚拟机监控程序,然后结束此次调用;否则 让T0=t0并启动聚合时间间隔计时器,无需调用hypercall;

4)如果tnext>T+T0就停止计时器,否则无需调用hypercall;

5)如果计时器计时结束或者被停止,就调用hypercalll。

利用这个算法,多次hypercall通过聚合计时器被聚合成一个hypercall,减少了 hypercall的执行次数,提高了高工作负载时的网络性能,在这种情况下,CPU被完全 利用。同时,聚合间隔时间是根据下一个请求到达时间的预测而动态调节的,在低网络 流量情况下能够减少数据传输的延迟,其中,可以根据“下一个请求到达时间的预测”, 来调整“聚合间隔时间”,如果预测的下一个请求的到达时间在“聚合间隔时间内”,进 行等待,不立即执行超级调用,而是将多个超级调用聚合成一个;如果不在“聚合间隔 时间内”,就立即执行超级调用。可以根据当前“聚合间隔时间”和“对下一个请求到 达时间的预测”的关系,来调整“聚合间隔时间”,从而决定聚合多少个超级调用。

下面发明人将通过一个具体实施例来做进一步说明。为使本发明的目的、技术方案 和有点更加清楚,下面将结合附图及一个具体实施例对本发明作进一步地详细描述。

图6-11为本发明的一个具体实施例,其中:

在本实施例中,发明人使用了配有Exynos 5250处理器(双核1.7GHz,Cortex A15 CPU),800MHz、2GB DDR3内存的Samsung chromebook,系统采用12.04版本的Ubuntu, 网络性能测试工具采用netperf,Apache和Memcached,运行6个虚拟机,分别进行数 据传输测试。由于内存的限制,当虚拟机的数量超过6个时,宿主机会自动关闭过多的 虚拟机,所以这里发明人只运行6个虚拟机。

该具体实施例中,引入自主超级调用聚合方法(AHC方法)的Virtio-net的工作步骤 如下:

步骤1,设置VirtIO前端驱动程序中聚合计时器开始计时的时间T0,用于在后续步 骤中根据公式tnext>T+T0判断是否停止计时器;

步骤2,6个虚拟机各自发送TCP(UDP)数据包;

步骤3,当网络I/O请求到达virtio-net驱动层时,虚拟机kernel调用VirtIO前 端驱动程序将数据写在vring队列;

步骤4,判断聚合计时器是否启动:

-若聚合计时器没有启动,就检查下一个请求可能到达的时间是否超出了聚合时间 间隔的范围:如果超出了,就立即执行超级调用hypercall,不用启动聚合计时 器,否则就启动聚合计时器,等待计时器失效或停止;

-若聚合计时器已启动了,就检查下一个请求可能到达的时间是否在时间间隔范围 内:如果在,就等待计时器失效或停止,否则停止计时器。

步骤5,当计时器失效或停止之后,虚拟机执行hypercall通知宿主机;

步骤6,虚拟机切换到虚拟机监控程序,虚拟机监控程序从vring队列取出数据, 处理完毕后将结果添加到vring队列并发送中断给客户机;

步骤7,此次调用结束。

由图7可以看出,AHC方法极大的减少了每秒钟hypercall调用的次数,大约相当 于传统方法的10%,从而降低CPU负载,节省了CPU时钟周期,提高了性能。由图8可 以看出,AHC方法可以使Netperf,Apache和Memcached的性能分别提高221.14%,146.23% 和257.42%。如图9、10和11,横轴为虚拟机的个数,数轴是网络吞吐量(MB/s),可以 看到,当只有一个虚拟机时,传统方法的性能比AHC的性能好,这是因为在只有一个虚 拟机的情况下,AHC方法不能完全利用CPU资源,在减少CPU负载的同时,会导致性能 开销;而当虚拟机的数目增加时,相对传统方法而言,AHC的网络吞吐量有了极大的提 高。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上 述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改, 这并不影响本发明的实质内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号