采用gpu加速进行实时网络流应用程序的处理方法

文档序号:7553205阅读:144来源:国知局
专利名称:采用gpu加速进行实时网络流应用程序的处理方法
技术领域
本发明涉及硬件GPU加速、高速网络处理、以及实时调度领域,具体涉及一种采用GPU加速进行实时网络流应用程序的处理方法。
背景技术
当前网络有许多实时应用,这些实时应用关系着用户体验,有着很大的商业需求。典型的,比如网络电视、视频直播、视频会议、云游戏、VoIP等应用,都关系着用户隐私,一般都需要压缩、加密等处理。而这对网络服务器以及中间设备的处理能力造成了挑战,并造成了大量的处理开销。以至于对于许多本应保护用户隐私的加密等操作没有被服务提供商处理,导致了有版权的网络视频等内容可能被网络嗅探窃取,用户隐私有可能被窃取等。同时,除了处理开销的巨大,这些网络实时应用的实时性也必须被满足,对于VoIP应用,VoIP包每20s-30s产生一个,其从发送端到接收端的最小延迟被规定为150ms (因为声音延迟150ms以上,人就能察觉得到)。同样,诸如视频会议、IPTV、云游戏等这类应用一般具有150ms的实时延迟要求。对于已有的网络加密、压缩设备,其通常由于其为专门的硬件,可扩展性差,开发周期长,价格高昂,并且由于其新的编程模型和指令系统,需要程序员学习新的编程语言或方式,导致开发缓慢而且可维护性低。随着通用处理器CPU和通用计算显卡GPGPU的出现,软件实现高性能处理成为了一种新实现高速网络设备的方法可能。然而,诸如加密、压缩、转发等的操作,由于机器CPU性能有限,往往当数据量很大的时候,没法满足那么快速的处理需求。近年来,GPU的出现,使得很多数据、计算密集型应用通过通用设备加速成为可能。国内外已有大量的工作介绍了利用GPU来加速数据密集型网络处理的方法以及算法,并达到了几十Gbps的吞吐量,验证了 GPU作为加速高速网络处理的可行性。GPU适合处理的程序包括两种:一种是数据密集型,由于其快速线程切换的特性,可以有效隐藏访存延迟;另一种是计算密集型,其成百上千个核的计算能力,是CPU的数十上百倍,适合并发度高的应用。然而由于GPU具有以下特性,而使其至今没有被用来处理实时应用:I)批处理。如果要充分利用GPU的高吞吐量和高度并行性,任务需积攒成一批然后再传至GPU进行处理,然而由于需要进行积攒会引入大量延迟。2)与CPU不同,GPU无法直接访问内存中的数据,如果要将数据交由GPU处理,数据须被传输至GPU的内存,然而传输时延往往很大。3)执行时间不确定。在GPU处理中,一批任务的处理时间是由其最慢的线程决定的。只有当所有线程都被处理完的时候,GPU才会返回处理结果。而且,GPU的执行时间取决于其内部的分配和调度策略,其执行时间与工作负载不成函数相关,所以执行时间不可预知。4)多线程。GPU的众核结构使得成百上千的线程可以同时执行,线程以一个组为执行单位,通常为32个,每一组间快速切换,切换没有延迟,可以有效隐藏GPU的访存开销。
其中I 3特性导致的高延迟以及执行时间不确定性,使得GPU至今没有被用来处理实时应用。尤其是其批处理的特性,一个任务需要等待一批任务一起执行才能充分利用GPU,同时需要一定时间才能得以传输至GPU处理,实时性不好保证。通过减小批处理(batch)大小,能够减小延迟,但是会同时减小GPU的吞吐量;而增大批处理(batch)大小,能够增加吞吐量,却也同时增大了延迟。本发明因此而来。

发明内容
本发明目的在于提供一种采用GPU加速实时网络流处理的调度方法,该方法利用GPU高吞吐量处理能力的同时,保证和满足每一个网络流的实时性处理要求。为了解决现有技术中的这些问题,本发明提供的技术方案是:一种采用GPU加速进行实时网络流应用程序的处理方法,其特征在于所述方法中实时网络流应用程序在执行前,CPU根据实时网络流应用程序设置预定GPU执行周期I的定时器,所述定时器开始计时后,当计时累计达到GPU执行周期I时,计时归零并重新开始计时;所述方法包括以下步骤:(I)CPU开始执行实时网络流应用程序,并启动定时器计时;(2)CPU积攒实时网络流应用程序的数据或执行序列,并在定时器的GPU执行周期I届满时将积攒的数据或执行序列传输给GPU进行处理;(3)GPU接收CPU在上一 GPU执行周期I内积攒的数据或执行序列,并执行CPU传输的数据或执行序列,将执行结果传输给CPU ;(4)CPU接收GPU在上一 GPU执行周期I内的执行结果数据,并根据实时网络流应用程序的执行情况判断是否继续在下一 GPU执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列;当实时网络流应用程序的数据或执行序列已经执行完时,CPU输出执行结果至内存;当实时网络流应用程序的数据或执行序列没有执行完时,CPU继续在下一 GPU执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列直至应用程序处理结束;其中所述GPU执行周期I大于等于GPU的最坏处理时间。优选的,所述方法中GPU执行周期I是提前预设的,不是动态计算的,系统一旦运行,I不可改变。对于一批任务中,最小的任务处理周期T,I应当小于等于T/2,也就是I属于
这个区间当中。优选的,所述方法中GPU的最坏处理时间包括GPU输入数据传输时间、GPU执行批处理时间、GPU计算结果传出时间。最坏的处理时间是通过预估得到的,通过每次测量GPU真正的传输时间、处理时间,来获得当前系统每一批次的所有时间,使其不超过GPU执行周期I。GPU的最坏处理时间不能够特别准确的估计,本发明采用了资源预留的方案,即当系统的处理能力超过90%的时候,不再接受新的网络连接,处理新的数据了,除非当已有的网络连接停止或释放,使得系统能够有能力处理更多的数据时,才进一步接受新的连接。具体实施为:GPU计时每一批处理的时间TB,当其>=0.9* I时,我们就不接受新的连接,以保证本批任务中所有连接的任务都被实时处理,每一批次的处理时间不会超过I。应用程序的最小处理延迟是由应用程序或者使用者指定的,取决于所加速的应用,以及使用者对该网络设备的要求,比如语音通讯150ms最大延迟,除去网络抖动,以及服务器端用户端的处理延迟,留给加密设备加速的时间将会小于100ms。该信息应该由使用者提前指定,或者该系统通过每一条连接初始建立时候的信息,获得该流的处理延迟,等
坐寸ο具体CPU GPU交互过程需要具体说明。CPU与GPU交互过程:CPU收到网络数据,准备网络数据进行处理,进行一定预处理过后,将需要由GPU加速处理的数据放入缓冲区中。当积攒到一定数量的数据后(几百个,几千个),将所有任务的数据全部传输至GPU,然后调用GPU执行该缓冲区中的数据,等待GPU执行结束后,将GPU的处理结果从GPU的存储中传回内存中来,完成GPU的加速处理。接着,CPU对于GPU加速处理完的数据进行后续处理。本发明技术方案中,在调度方法初始时,根据所需要加速处理的应用程序,设定一个周期变量I。在算法执行过程中,每一个固定间隔I后即调用GPU执行,每次执行前将一个时间间隔I中积攒的数据形成一批,一起传输至GPU进行处理。也就是说,GPU的实际执行过程为一个以I为时间间隔的执行序列,两次执行时间的间隔是固定不变的。由此可知,在一个时间间隔I (Plri Pk)内到达的任务,一定会将在下一个时间间隔到达时(Pk+1)被执行完。因此对于任何一个实时的网络流,如果其每一个消息处理的截至期限大于21,那么其实时性必将能被保证。所以,当对于一个集合的所有的实时任务流中,如果最小截止期限大于21,那么该系统集合的所有流的每一个消息都能够被实时处理。整个系统在执行过程中,为保证所有任务被实时处理。方法应该在执行过程中限制总的要处理的数据量。从而使得每一批任务的GPU处理时间以及输入和输出传输时间的总和(即最差处理时间)小于等于I。优选方案是,采用集成在CPU芯片中的GPU,并可以直接访问系统内存或内存内拷贝加快速度。优选方案是,对于确定性最大流量的网络,可以设定令T=I,在保证处理能力的同时取得最小延迟。优选方案是,对于已知最小延迟保证的网络,尽量将I设为最小延迟的一半,在保证所有流最小延迟被满足的情况下,达到最高吞吐量。本发明提供了一种针对于GPU加速网络实时流处理的实时调度方法,采用了定时执行的方法,对处理延迟以及吞吐量做了一个权衡,采用了一个适合于所有任务流的最大延迟,来得到最大的吞吐量。从而使得利用GPU获得高吞吐量的同时,保证了所有网络流的实时性处理。相对于现有技术中的方案,本发明的优点是:本发明技术方案利用GPU的处理能力以加速数据密集型和计算密集型网络应用,其中针对吞吐量和延迟的权衡,本发明采取以下技术方案:通过精确地定时执行,利用GPU高性能的同时,保证了每一个到达任务的准确的最坏的处理截至时间,从而保证了所有网络流的实时性处理。本发明提供了一种采用GPU加速实时网络流处理的调度方法,其特征在于所述方法中CPU根据需要加速处理的应用程序设置GPU执行周期I ;所述GPU执行周期I大于等于GPU的最坏处理时间;包括以下步骤=(I)CPU接收GPU在上一 GPU执行周期I内的计算结果,并在下一批处理时间周期开始时,CPU开始积攒GPU执行周期I内的数据或执行序列;(2)当下一批处理时间周期截止时,CPU将GPU执行周期I内的数据或执行序列传输给GPU进行处理;按照(I) (2)步骤循环直至应用程序处理结束。该方法利用GPU获得高吞吐量的同时,保证了所有网络流的实时性处理。该方法用来加速网络实时流的处理,在CPU的计算能力已经不足的情况下,利用了 GPU的高性能,来加速数据和计算密集型的应用,诸如压缩、加密、解密等。


下面结合附图及实施例对本发明作进一步描述:图1是本发明实施例方法的调度算法执行示意图。图2是采用GPU加速进行实时网络流应用程序的处理方法的执行流程图。
具体实施例方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。实施例如图1所示,采用GPU加速进行实时网络流应用程序的处理方法中实时网络流应用程序在执行前,CPU根据实时网络流应用程序设置预定GPU执行周期I的定时器,所述定时器开始计时后,当计时累计达到GPU执行周期I时,计时归零并重新开始计时;所述方法包括以下步骤:(I)CPU开始执行实时网络流应用程序,并启动定时器计时;(2)CPU积攒实时网络流应用程序的数据或执行序列,并在定时器的GPU执行周期I届满时将积攒的数据或执行序列传输给GPU进行处理;(3)GPU接收CPU在上一 GPU执行周期I内积攒的数据或执行序列,并执行CPU传输的数据或执行序列,将执行结果传输给CPU ;(4)CPU接收GPU在上一 GPU执行周期I内的执行结果数据,并根据实时网络流应用程序的执行情况判断是否继续在下一 GPU执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列;当实时网络流应用程序的数据或执行序列已经执行完时,CPU输出执行结果至内存;当实时网络流应用程序的数据或执行序列没有执行完时,CPU继续在下一 GPU执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列直至应用程序处理结束;其中所述GPU执行周期I大于等于GPU的最坏处理时间。具体的,图1中算法的执行序列101,以及一个内存中实时网络流应用程序的执行序列和数据102 ;Pk_1; Pk, Pk+1,Pk+2为GPU执行序列中的四个时间点,每两个时间点的差值为
I。I为固定执行序列的时间间隔,即GPU执行周期。当前所正在处理的实时网络流应用程序的执行序列,其在I时间间隔内所积攒的工作交由GPU处理时,最大工作量下的最长处理时间设为T (K=I)0在每一批执行序列进行处理时,其执行时间由输入数据传输时间105、GPU执行时间106、计算结果传出时间107组成,这些时间之和小于等于T,且小于等于I。假设在实时网络流应用程序102中,一个执行序列在时间点103时到达,即Plri Pk这个时间间隔中到达,CPU将其积攒,并将在时间点Pk被传输至GPU执行,最坏情况下,它将在时间点104如被执彳丁完。由于GPU作为辅助计算设备,一般是由CPU控制传输数据以及控制执行的,图2展示了以CPU线程/进程控制GPU的流程图。在系统初始时,设定好GPU执行的时间间隔后,(PU线程就开始以该时间间隔为周期,积攒数据,传输并交由GPU执行,再传出数据得到结果。如有需要再对输出的结构进行后续的处理,后者交给其它的CPU线程/进程进行后续处理。此过程严格的按照预设的时间间隔执行,循环往复直至应用程序执行结束。具体执行过程:在本发明实 施例中,构建了一个由GPU来加速网络数据流AES加密以及消息验证的SRTP反向代理应用。该反向代理收到服务器端RTP消息,将消息加密后作为SRTP消息转发至客户端。实施例中采用了正态分布的方式模拟了网络流的到达时间以及数据大小。本实施例设定每个包在处理过程中可允许的最小延迟为80ms,则设定执行时间间隔为40ms。GPU的调用由一个CPU进程控制,CPU进程流程如下:DCPU进程接收服务器端发来的RTP数据包,将数据包存储在缓冲区中,并将其包长、AES初始向量,AES密钥等信息记录。2)CPU进程每隔时间间隔I=40ms就将过去40ms中已经接收到的数据(这里为RTP包),以及加密所需的信息,如包长信息、AES初始向量、以及AES密钥等信息,一起传输给GPU。3) CPU进程然后发起AES加密的GPU kernel以及消息验证(HMAC-SHAl)的GPUKernel,以让GPU执行AES加密以及消息验证。4)CPU进程在继续收到RTP包的同时,等待GPU kernel执行结束,当执行结束时,前一批RTP包的加密以及消息验证已经完成。其已被加密成SRTP包,CPU进程将加密好的数据包从GPU传回主存,并将其转发至客户端,完成反向代理的功能。5)以40ms为时间间隔重复1-4步。系统的可调度性以及I的选取:在一个实际的网络流实时系统中,会有很多的并发的、定时到达的实时网络流。假设以S^pi, Wi, (Ii, >来描述一个流,Pi是这个流相邻的两个消息到达的时间间隔,Wi是这个每一个消息的大小,Cli是系统设定的,是需要在最大的时间内处理这个流的每一个消息的时间限制。对于当前系统中所正在处理的所有的流S= (S1, S2,……Si,……},我们就可以获得,当如系统中最小的处理时延:D=min I Si 属于 S};有了系统中所有最小时延D,就可以确定关系式T〈=I〈=D/2.
另外,根据服务器端的处理需求和连接限制,作为服务提供商的网络处理设备,这些参数可以得知,因此也会相应得知当前系统的网络连接数N,以及每个消息的最大工作负载M (如,MPEG-4视频流每个包的最大包长可以确定),以及该系统所有流所指定的最小处理时延S。有了 N和M,将可 以确定系统每一个批次的最长处理时间I。将具有M工作负载的N个数据项交由GPU作处理,衡量时间,就可以得到该系统最坏处理I。如果1〈=2/2,则该系统是可调度的,因为我们总能确定1:K=I〈=2/2 ;因此,该系统是否可调度,会在该系统被实施前决定。为了取得较小延迟,I在区间内可以取I,为了取得最大吞吐,I可以取2/2。但无论如何,I在[I,2/2]取任意值皆可。系统实时性的保证:在反向代理运行过程中,为了保证所有已建立的连接的实时性被保证,系统采用了几个阈值以限定当前系统负载。系统维护两个变量η和m,分别表示当前系统的连接数,以及所有链接中RTP包的最大包长,当系统接收新连接以及释放已有连接时,会动态更新这两个值。当接受新连接时,计算一对新的值n’,m’。n’ =n+l ;mnew为新连接的RTP包长,当m>mnew 时,m’ =m 维持不变,当 m〈mnOT 时,m’ =mnew.
如果η’〈N且m’〈M,那么表示在添加新连接后,系统仍可维持实时性,则接受该新连接并令n=n’,m=m’,否则不接受该新连接。本实验在AMD A6-3650APU上进行离线测试,设定I为40ms,可以达到3.8Gbps的AES加密处理速度。现有的方法尚未能使用GPU来用于实时处理。本发明可以在软件、固件、硬件或者其结合中实现。本发明可以包括在具有计算机可用介质的物品中。该介质在其中具有例如计算机可读程序代码装置或者逻辑(例如指令,代码,命令等)来提供和使用本发明的能力。该制造物品可作为计算机系统的一部分或者单独出售。所有上述变化被认为是要求保护的本发明的一部分。上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
权利要求
1.一种采用GPU加速进行实时网络流应用程序的处理方法,其特征在于所述方法中实时网络流应用程序在执行前,CPU根据实时网络流应用程序设置预定GPU执行周期I的定时器,所述定时器开始计时后,当计时累计达到GPU执行周期I时,计时归零并重新开始计时;所述方法包括以下步骤: (1)CPU开始执行实时网络流应用程序,并启动定时器计时; (2)CPU积攒实时网络流应用程序的数据或执行序列,并在定时器的GPU执行周期I届满时将积攒的数据或执行序列传输给GPU进行处理; (3)GPU接收CPU在上一GPU执行周期I内积攒的数据或执行序列,并执行CPU传输的数据或执行序列,将执行结果传输给CPU ; (4)CPU接收GPU在上一GPU执行周期I内的执行结果数据,并根据实时网络流应用程序的执行情况判断是否继续在下一 GPU执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列;当实时网络流应用程序的数据或执行序列已经执行完时,CPU输出执行结果至内存;当实时网络流应用程序的数据或执行序列没有执行完时,CPU继续在下一GTO执行周期I开始时开始积攒下一 GPU执行周期I内的数据或执行序列直至应用程序处理结束;其中所述GPU执行周期I大于等于GPU的最坏处理时间。
2.根据权利要求1所述的处理方法,其特征在于所述方法中GPU执行周期I是根据实时网络流应用程序、GPU、CPU的参数进行直接确定,GPU执行周期I小于等于T/2,其中T为实时网络流应用程序的执行序列中GPU的最坏处理时间。
3.根据权利要求1所述的处理方法,其特征在于所述方法中GPU的最坏处理时间包括GPU输入数据传输时间、GPU执行批处理时间、GPU计算结果传出时间,其GPU的最坏处理时间是通过预估得到。
4.根据权利要求1所述的处理方法,其特征在于所述方法中当GPU集成在CPU芯片中时,数据无需通过PCIE进行传输和拷贝,要交给GPU的数据可直接读取内存获得,或者内存中拷贝。
5.根据权利要求1所述的处理方法,其特征在于所述方法中当应用程序的最大流量确定时,采用逐步接受新连接的估计的方法判断是否达到应用程序的最大流量,使得当前所处理的所有网络连接中,每个时间间隔I的每一批次的GPU处理时间都不超过I。
全文摘要
本发明公开了一种采用GPU加速实时网络流处理的调度方法,其特征在于所述方法中CPU根据需要加速处理的应用程序设置GPU执行周期I;所述GPU执行周期I大于等于GPU的最坏处理时间;包括以下步骤(1)CPU接收GPU在上一GPU执行周期I内的计算结果,并在下一批处理时间周期开始时,CPU开始积攒GPU执行周期I内的数据或执行序列;(2)当下一批处理时间周期截止时,CPU将GPU执行周期I内的数据或执行序列传输给GPU进行处理;按照(1)~(2)步骤循环直至应用程序处理结束。该方法利用GPU获得高吞吐量的同时,保证了所有网络流的实时性处理。
文档编号H04L12/801GK103207775SQ20131007566
公开日2013年7月17日 申请日期2013年3月11日 优先权日2013年3月11日
发明者张凯, 华蓓, 祖渊, 江盛杰 申请人:中国科学技术大学苏州研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1