利用内存零复制降低云计算网络传输能源消耗的方法

文档序号:7894087阅读:403来源:国知局
专利名称:利用内存零复制降低云计算网络传输能源消耗的方法
技术领域
本发明属于云计算平台技术领域,具体涉及一种降低云计算网络传输能源消耗的方法。
背景技术
近年来,随着云计算的迅猛发展,各大公司都推出了服务器规模达到数以百万计的大型数据中心。这些数据中心对能源的消耗非常高,这与当今世界“低碳节能环保”的主题产生了矛盾。因此,如何在保证计算中心服务能力的同时,尽可能降低其对能源的消耗,成为了一个重要的课题。因此,本专利所描述的节能方法,能够通过降低完成相同计算任务的前提下服务器所消耗的能量,从而为节能事业做出贡献。网络数据传输是云计算平台的重要操作之一。无论是云平台中运行的用户服务,还是平台自身的维护与管理操作,都会产生大量的网络传输。因此,网络数据传输成为了云平台能量消耗的重要组成部分。在传统的网络传输过程中,所需传输的数据会在内存中进行多次复制首先从用户内存空间复制至内核进程空间,再从内核进程空间复制至设备内存。其中,前一次的内存复制是为了保证在内核传输数据时,应用程序不会对数据进行修改;但这次内存复制并不是必须的。本发明通过引入网络传输的“零复制”技术,去掉了这次额外的内存复制操作,从而大大降低了网络数据传输的冗余复制,在提高性能的同时也很好的减少了完成相同工作所耗费的能源。

发明内容
本发明的目的在于提出一种能够方便、有效降低云计算网络传输能源消耗的方法。本发明提出的降低云计算网络传输能源消耗的方法,是通过减少网络数据传输时的冗余内存复制操作,提高网络数据传输的效率,降低完成传输的能量消耗,从而减少服务器能耗。本发明的主要原理为用户指定需要传输的数据内存位置,标记为“零复制”区域,由操作系统直接发送给网络设备,从而避免从应用到内核的数据复制,避免不必要的能量消耗。具体来说第一,由用户指定“零复制”网络传输的数据在内存中的区域。第二,通过零复制内存管理库函数分配需要网络传输的内存区域。第三,通过操作系统中的零复制代理模块,直接将数据从用户的内存传输至网络设备。第四,通过操作系统中的零复制数据保护模块,对数据传输过程中的用户内存写操作进行写时复制从而保护数据的完整性。第五,通过减少多余的内存复制操作,有效提高网络数据传输的效率,压缩网络数据传输的时间,从而降低完成等效工作量的服务器能耗。
本发明提出的降低云计算平台能源消耗的方法,具体步骤为
第一,对于云平台应用程序的网络传输,由用户应用指定传输数据的内存区域;
第二,通过零复制内存管理库函数动态分配内存区域;该函数将分配的内存区域标记为零复制区域; 第三,通过操作系统中的零复制代理模块,直接将数据从用户的内存区域传输至网络设备,避免该传输数据在内核与用户态之间的多余复制,从而减少网络传输的总体时间;第四,通过操作系统中的零复制数据保护模块,对数据传输过程中用户的内存写操作进行写时复制(Copy-on-write),从而保护数据的完整性。本发明方法能够在保证数据完整性的同时,有效提高网络数据传输的效率,压缩网络数据传输的时间,减少无效内存复制的操作数,从而降低完成等效工作量的服务器能耗。本发明的具体实现为对应用程序、内存分配库和操作系统进行修改,对网络传输的以下步骤进行优化。第一,对于应用程序,首先确定需要进行网络传输的数据位置,通过调用零复制内存管理库函数进行内存的分配和回收操作,其他不需要进行网络传输的内存则可以不用修改。第二,零复制的内存管理函数会通过特定的参数,在操作系统内核中标记这段内存区域。第三,当用户应用进行网络传输时,操作系统首先将内存映射改为只读,并直接将数据从内存通过DMA (Direct Memory Access)发送至网络设备,从而减少了从应用到操作系统的复制操作。第四,当应用程序对正在DMA的内存区域进行写操作时,由于内存已被置为只读,因此会触发硬件保护异常。操作系统在异常处理函数中,通过写时复制(Copy-on-write)技术进行处理,从而保证内存写操作的正确性。本书面说明可使该技术领域具有普通技能的人能够使用含有与权利要求所列要素近似的可替代要素的实施方案。因此,这项发明的范围包括与权利要求的字面意思完全相同的方法,还包括其他与权利要求的字面意思没有实质性区别的方法。虽然在这里只描述和说明了部分特征和实施方案,但相关技术的基本方法可以进行许多修改和变化。所附权利要求将涵盖所有这些修改和变化。


图I为零复制操作的整体框架与数据流示意图。图2为网络包结构对比和数据间关系示意图。图3为零复制操作的整体流程示意图。
具体实施例方式下面结合实例对本发明进行进一步说明。当前,许多公司与机构均拥有大规模的数据中心,部署了大量的网络服务器,网络数据传输是一个关键的操作,发生的频率相当高。现有的网络传输会将数据从应用程序复制到操作系统内核,不但因此降低了性能,而且浪费了能耗。尤其是当数据中心内部进行迁移等服务需要进行大量网络传输时,这一浪费更为明显。因此,通过本发明对网络数据传输的能耗进行优化,从数据中心整体来看,能够节约的能量总量非常可观。应用程序对于需要进行零复制的内存区域,使用零复制内存管理库函数分配内存,如图I所示。该函数负责将分配的内存区域标记为零复制区域。操作系统在为应用程序分配网络包时,并不分配具体的内存区域,而仅仅分配相应的网络包头,指向零复制内存所分配的内存区域。具体结构如图2所示。
操作系统的网络协议栈在复制内存区域时,流程如图3所示首先判断复制区域是否为零复制区域,若不是则按照正常流程,将内存从应用复制到内核后发送给网络设备; 若是,则将内存区域设置为只读,并将数据发送给网络设备,发送完毕后将恢复内存页的写权限,不断迭代至所有数据发送完毕为止。此间若发生了用户对内存区域的写操作,则会触发硬件的异常,操作系统在异常处理函数中,通过写时复制的方法保证写操作的正确性。
权利要求
1.一种利用内存零复制降低云计算网络传输能源消耗的方法,其特征在于具体步骤为第一,对于云平台应用程序的网络传输,由用户应用指定传输数据的内存区域;第二,通过零复制内存管理库函数动态分配内存区域;该函数将分配的内存区域标记为零复制区域;第三,通过操作系统中的零复制代理模块,直接将数据从用户的内存区域传输至网络设备,避免该传输数据在内核与用户态之间的多余复制,从而减少网络传输的总体时间; 第四,通过操作系统中的内存保护模块,对数据传输过程中用户的内存写操作进行写时复制,从而保护数据的完整性。
2.根据权利要求I所述的利用内存零复制降低云计算网络传输能源消耗的方法,其特征在于操作系统在为应用程序分配网络包时,并不分配具体的内存区域,仅分配相应的网络包头,指向零复制内存所分配的内存区域。
3.根据权利要求I所述的利用内存零复制降低云计算网络传输能源消耗的方法,其特征在于操作系统的网络协议栈在复制内存区域时,首先判断复制区域是否为零复制区域,若不是则按照正常流程,将内存从应用复制到内核后发送给网络设备;若是,则将内存区域设置为只读,并将数据发送给网络设备,发送完毕后恢复内存页的写权限,不断迭代至所有数据发送完毕为止;此间若发生了用户对内存区域的写操作,则触发硬件的异常,操作系统在异常处理函数中,通过写时复制的方法保证写操作的正确性。
全文摘要
本发明属于云计算平台技术领域,具体为一种利用内存零复制降低云计算网络传输能源消耗的方法。具体步骤为对于云平台应用程序的网络传输,由用户应用指定传输数据的内存区域;通过“零复制”内存分配函数动态分配内存区域;通过操作系统中的零复制代理模块,直接将数据从用户的内存区域传输至网络设备,避免该传输数据在内核与用户态之间的多余复制,从而减少网络传输的总体时间;通过操作系统中的内存保护模块,对数据传输过程中用户的内存写操作进行写时复制,从而保护数据的完整性。该方法可以有效提高云计算平台应用程序的网络传输效率,较少对传输数据的不必要复制操作,从而减少服务器系统在运行时的整体能量消耗。
文档编号H04L29/08GK102629946SQ20121011795
公开日2012年8月8日 申请日期2012年4月22日 优先权日2012年4月22日
发明者夏虞斌, 宋翔, 施继成, 臧斌宇, 陈海波 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1