一种针对网络i/o虚拟化的并行化可扩展数据处理方法
【专利摘要】本发明公开了一种针对网络I/O虚拟化的并行化可扩展数据处理方法,以网络层次化结构为依据,将数据收发、协议解析、数据流管理、上层应用都视为网络I/O的环节,将各环节利用非对称流水线方式并行化协同工作;同时采用对称性并行方式在计算资源瓶颈点注入充分计算资源,实现数据处理能力的并行化和可扩展性。同时根据系统负载,弹性管理多核资源,消除由传统I/O驱动方法的计算能力造成的I/O虚拟化资源的性能瓶颈。
【专利说明】
一种针对网络I /0虚拟化的并行化可扩展数据处理方法
技术领域
[0001]本发明涉及网络I/O虚拟化数据处理领域,尤其涉及一种针对网络I/O虚拟化的并行化可扩展数据处理方法。
【背景技术】
[0002]I/O虚拟化是一种软件技术,是在底层硬件与工作负载之间对网络设备的一种抽象。目前,I/O虚拟化有三种解决方案软件模拟的全虚拟化、半虚拟化和硬件辅助虚拟化。全虚拟化是完全通过软件程序来模拟硬件网络I/o的技术,该方法效率较差无法充分利用1GbE网络的物理线速,已经不能胜任目前高性能网络NIC设备的虚拟化要求。目前,1GbE以上的高性能网络接口设备(NI C)都提供硬件辅助的单根I /0虚拟化(SR-1OV)支持和半虚拟化两种方式,支持SR-1OV的高性能NIC设备具有一个或多个物理功能(PhysicalFunct 1n,PF ),PF是标准的PCIe设备,每一个PF可以创建多个虚拟设备(VirtualFUnct1n,VF)给虚拟机使用。基于前后端方法的I/O半虚拟化方法,通过环形缓冲区在前后端进行数据交换,通过减少VMM的干预来提高数据交换的效率;但是缺点是虚拟机需要运行特定的驱动程序,并且需要对虚拟机进行一定的改变。
[0003]I/O虚拟化的数据处理方法的计算资源容量成为虚拟I/O资源的性能瓶颈。虚拟化环境下I/O数据处理不仅需要对数据包进行协议解析等处理,还需要在多个虚拟机间进行数据的分发,其计算资源开销相对原生操作系统高很多。当单线程数据处理方法开销超过物理CPU的计算能力,就使虚拟化I/O资源的吞吐性能受限于数据处理的计算资源瓶颈。另一方面,SR-1OV由硬件辅助完成二层数据交换,计算资源瓶颈得到极大改善,但相似的计算资源瓶颈出现在虚拟机内的VF驱动。单虚拟机瞬时网络突发会造成大量丢包和性能衰退,多虚拟机交替吞吐突发的情况下总体I/O吞吐性能也会大幅下降。总之,高性能网络I/O虚拟化的数据处理方法计算资源开销高,导致充分利用高性能NIC的物理线速性能形成虚拟化I/O资源困难。
[0004]因此,本领域的技术人员致力于开发一种针对网络I/O虚拟化的并行化可扩展数据处理方法,消除由传统I/O驱动方法的计算能力造成的I/O虚拟化资源的性能瓶颈。
【发明内容】
[0005]鉴于现有数据处理方法的上述缺陷,本发明要解决的问题是尽可能消除计算资源瓶颈造成的虚拟I/O资源瓶颈,适应高性能网络设备对虚拟I/O资源的需求。
[0006]为了实现此目的,本发明提供了一种针对网络I/O虚拟化的并行化可扩展数据处理方法,包括以下步骤:
[0007]步骤1:将网络I/O虚拟化中数据包按照处理流程分解成多个子任务,形成一条数据处理的流水线;
[0008]步骤2:—个线程处理一个子任务,以非对称流水线方式并行化协同工作;
[0009]步骤3:每个线程将处理后的数据通过无锁环形缓冲区交给数据流水线的下一级线程进行处理;
[0010]步骤4:使用内存巨页和内存映射建立共享内存池,在宿主机与客户机,客户机与客户机间建立快速零拷贝数据共享通道;
[0011 ]步骤5:建立网络I/O数据处理吞吐量与每一步骤所需计算资源的关系模型,监控流水线中每个线程的资源使用情况,如果某个线程的数据处理计算量超过单核具备的计算能力时,则将负责该线程的逻辑核进行对称多线程并行化;
[0012]步骤6:如果监控到系统负载较低,将数据处理流水线中的多个线程合并到一个逻辑核上运行。
[0013]进一步地,所述步骤2中每个线程独占一个逻辑核运行。
[0014]进一步地,所述无锁环形缓冲区可同时供多个生产者写入数据,多个消费者读取数据。
[0015]进一步地,所述关系模型中的所述每一步骤包括解析、分类、应用策略、平衡负载、执行应用程序、下线保存和调度。
[0016]本发明以网络层次化结构为依据,将数据收发、协议解析、数据流管理、上层应用都视为网络I/o的环节,将各环节利用非对称流水线方式并行化协同工作;同时采用对称性并行方式在计算资源瓶颈点注入充分计算资源,实现数据处理能力的并行化和可扩展性。本发明使用无锁环形缓冲区提高多核间数据协同处理的效率,使用内存巨页和内存映射技术建立共享内存池,在宿主机-客户机和客户机-客户机间建立快速零拷贝数据共享通道。然后,建立网络I/o数据处理吞吐量与每一步骤所需计算资源的关系模型,实现并行数据处理方法的动态高效伸缩。
[0017]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
【附图说明】
[0018]图1是本发明的一个较佳实施例的网络I/O虚拟化并行化可扩展数据处理方法框图;
[0019]图2本发明的一个较佳实施例的网络I/O数据处理流水线各步骤所需计算资源比例关系模型。
【具体实施方式】
[0020]以下将结合附图对本发明的实施例做详细说明。本实施例在本发明技术方案的前提下进行实施,并给出详细实施方式和具体操作过程,但是适用场景并不仅限于本实施例。
[0021]本实施例以I/O半虚拟化为例,将网卡驱动的数据包协议解析进行对称性并行化,将VMM内的软件交换机进行流水线的非对称并行化。
[0022]本发明提出一种针对网络I/O虚拟化的并行化可扩展数据处理方法,包括以下步骤:
[0023]步骤1:针对I/O半虚拟化,如图1所示,将网卡驱动的数据包协议解析以及VMM内的软件交换机涉及到的数据处理流程进行分解,包括数据包接收、数据包解析、数据包分类、负载均衡、数据包丢弃、数据包调度、数据包发送等环节,形成一条数据处理的流水线。
[0024]步骤2:每个数据处理环节交给一个线程进行处理,该线程独占一个逻辑核运行,实现非对称流水线方式并行化协同工作。
[0025]步骤3:每个线程将处理后的数据通过无锁环形缓冲区交给数据流水线的下一级线程进行处理。无锁环形缓冲区可同时供多个生产者写入数据,多个消费者读取数据,基本消除锁同步带来的开销,提高多个线程之间数据交互的性能。
[0026]步骤4:使用内存巨页和内存映射技术建立共享内存池,在宿主机-客户机和客户机-客户机间建立快速零拷贝数据共享通道,提高数据传输效率。
[0027]步骤5:建立网络I/O数据处理吞吐量与每一步骤所需计算资源的关系模型,如图2所示,所述关系模型中的所述每一步骤包括解析、分类、应用策略、平衡负载、执行应用程序、下线保存和调度。监控流水线中每个线程的资源使用情况,如果某个线程的数据处理计算量超过单核具备的计算能力时,则将负责该线程的逻辑核进行对称多线程并行化,充分利用多核计算资源来实现接近物理线速的网络吞吐量。如图1中的“数据包解析”和“数据包发送”因为吞吐量较大,则对称并行化至多个逻辑核进行处理。
[0028]步骤6:如果监控到系统负载较低,可以将数据处理流水线中的多个线程合并到一个逻辑核上运行,从而减少计算资源的浪费。
[0029]以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
【主权项】
1.一种针对网络I/O虚拟化的并行化可扩展数据处理方法,其特征在于,包括以下步骤: 步骤1:将网络I/O虚拟化中数据包按照处理流程分解成多个子任务,形成一条数据处理的流水线; 步骤2:—个线程处理一个子任务,以非对称流水线方式并行化协同工作; 步骤3:每个线程将处理后的数据通过无锁环形缓冲区交给数据流水线的下一级线程进行处理; 步骤4:使用内存巨页和内存映射建立共享内存池,在宿主机与客户机,客户机与客户机间建立快速零拷贝数据共享通道; 步骤5:建立网络I/O数据处理吞吐量与每一步骤所需计算资源的关系模型,监控流水线中每个线程的资源使用情况,如果某个线程的数据处理计算量超过单核具备的计算能力时,则将负责该线程的逻辑核进行对称多线程并行化; 步骤6:如果监控到系统负载较低,将数据处理流水线中的多个线程合并到一个逻辑核上运行。2.如权利要求1所述的针对网络I/O虚拟化的并行化可扩展数据处理方法,其特征在于,所述步骤2中每个线程独占一个逻辑核运行。3.如权利要求1所述的针对网络I/O虚拟化的并行化可扩展数据处理方法,其特征在于,所述无锁环形缓冲区可同时供多个生产者写入数据,多个消费者读取数据。4.如权利要求1所述的针对网络I/O虚拟化的并行化可扩展数据处理方法,其特征在于,所述关系模型中的所述每一步骤包括解析、分类、应用策略、平衡负载、执行应用程序、下线保存和调度。
【文档编号】G06F9/455GK105868000SQ201610421225
【公开日】2016年8月17日
【申请日】2016年6月14日
【发明人】管海兵, 胡小康, 李宗垚, 马汝辉, 李健
【申请人】上海交通大学