利用內存零複製降低雲計算網絡傳輸能源消耗的方法
2023-05-23 03:39:01 1
專利名稱:利用內存零複製降低雲計算網絡傳輸能源消耗的方法
技術領域:
本發明屬於雲計算平臺技術領域,具體涉及一種降低雲計算網絡傳輸能源消耗的方法。
背景技術:
近年來,隨著雲計算的迅猛發展,各大公司都推出了伺服器規模達到數以百萬計的大型數據中心。這些數據中心對能源的消耗非常高,這與當今世界「低碳節能環保」的主題產生了矛盾。因此,如何在保證計算中心服務能力的同時,儘可能降低其對能源的消耗,成為了一個重要的課題。因此,本專利所描述的節能方法,能夠通過降低完成相同計算任務的前提下伺服器所消耗的能量,從而為節能事業做出貢獻。網絡數據傳輸是雲計算平臺的重要操作之一。無論是雲平臺中運行的用戶服務,還是平臺自身的維護與管理操作,都會產生大量的網絡傳輸。因此,網絡數據傳輸成為了雲平臺能量消耗的重要組成部分。在傳統的網絡傳輸過程中,所需傳輸的數據會在內存中進行多次複製首先從用戶內存空間複製至內核進程空間,再從內核進程空間複製至設備內存。其中,前一次的內存複製是為了保證在內核傳輸數據時,應用程式不會對數據進行修改;但這次內存複製並不是必須的。本發明通過引入網絡傳輸的「零複製」技術,去掉了這次額外的內存複製操作,從而大大降低了網絡數據傳輸的冗餘複製,在提高性能的同時也很好的減少了完成相同工作所耗費的能源。
發明內容
本發明的目的在於提出一種能夠方便、有效降低雲計算網絡傳輸能源消耗的方法。本發明提出的降低雲計算網絡傳輸能源消耗的方法,是通過減少網絡數據傳輸時的冗餘內存複製操作,提高網絡數據傳輸的效率,降低完成傳輸的能量消耗,從而減少伺服器能耗。本發明的主要原理為用戶指定需要傳輸的數據內存位置,標記為「零複製」區域,由作業系統直接發送給網絡設備,從而避免從應用到內核的數據複製,避免不必要的能量消耗。具體來說第一,由用戶指定「零複製」網絡傳輸的數據在內存中的區域。第二,通過零複製內存管理庫函數分配需要網絡傳輸的內存區域。第三,通過作業系統中的零複製代理模塊,直接將數據從用戶的內存傳輸至網絡設備。第四,通過作業系統中的零複製數據保護模塊,對數據傳輸過程中的用戶內存寫操作進行寫時複製從而保護數據的完整性。第五,通過減少多餘的內存複製操作,有效提高網絡數據傳輸的效率,壓縮網絡數據傳輸的時間,從而降低完成等效工作量的伺服器能耗。
本發明提出的降低雲計算平臺能源消耗的方法,具體步驟為
第一,對於雲平臺應用程式的網絡傳輸,由用戶應用指定傳輸數據的內存區域;
第二,通過零複製內存管理庫函數動態分配內存區域;該函數將分配的內存區域標記為零複製區域; 第三,通過作業系統中的零複製代理模塊,直接將數據從用戶的內存區域傳輸至網絡設備,避免該傳輸數據在內核與用戶態之間的多餘複製,從而減少網絡傳輸的總體時間;第四,通過作業系統中的零複製數據保護模塊,對數據傳輸過程中用戶的內存寫操作進行寫時複製(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日
發明者夏虞斌, 宋翔, 施繼成, 臧斌宇, 陳海波 申請人:復旦大學