[發明專利]一種內存分配的方法和裝置有效
| 申請號: | 201410023743.0 | 申請日: | 2014-01-20 |
| 公開(公告)號: | CN103761192A | 公開(公告)日: | 2014-04-30 |
| 發明(設計)人: | 鄒勇;林忠能;曲會春 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F12/08;H04L12/879 |
| 代理公司: | 北京中博世達專利商標代理有限公司 11274 | 代理人: | 申健 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 分配 方法 裝置 | ||
技術領域
本發明涉及數據控制領域,尤其涉及一種內存分配的方法和裝置。
背景技術
隨著計算機通信數據量的不斷增大,為了減輕計算機中CPU的計算負擔,當兩臺計算機通過TCP(傳輸控制協議)建立連接后,TCP連接通常會被卸載到NIC(Network?Interface?Card,網絡適配器)的相應芯片中,進行一定的處理后再上報給CPU。
這一卸載過程的處理流程為:當NIC接收來自另一臺計算機發送的TCP報文后,會先將該報文裝載到一個內存Block(Block為數據庫中的最小存儲和處理單位)中,然后再將該報文上送到Driver(驅動)層處理,再經過一定的處理后,上報該報文并釋放所占用的內存Block。但是,Driver(驅動)層處理的過程會有很大的延時,而在這個過程中,NIC還在不斷地接收報文,因此就需要為NIC預先分配一定量的內存Block,來緩存接收到的報文,但是,當某一TCP連接的報文數量突然增加時,就需要為該TCP連接分配很大的內存,如果為每個TCP連接都按照突發情況預留內存,就需要系統配置非常大的內存空間,這在實際當中是很難實現的。
因此,在現有的技術方案中,并不采取按照突發情況來為TCP連接來預留內存,而僅按照不考慮突發情況時為每個TCP連接分配固定的內存,所以,當某個TCP連接出現報文量突然增大的情況,為該TCP連接分配的固定內存不足時,就只能按照已分配的內存來進行緩存,從而造成丟包的現象。
發明內容
本發明的實施例提供一種內存分配的方法和裝置,用于解決在NIC中為每個TCP連接分配固定內存后,當該TCP連接的報文數量突然增大時,因所分配的固定內存不足而造成丟包的問題。
為達到上述目的,本發明的實施例采用如下技術方案:
第一方面,本發明實施例提供了一種內存分配的方法,包括:
獲取單個TCP連接當前的內存剩余量,所述內存剩余量是指為所述TCP預留的內存總量中尚未使用的內存量;
當所述內存剩余量小于所述TCP連接當前的內存剩余量下限時,從公共內存資源中獲取具有第一內存量的內存資源;所述第一內存量用于表示所述當前的內存剩余量下限對應的內存量,所述內存剩余量下限與所述TCP連接的內存總量成正相關關系;
將獲取到的具有第一內存量的內存資源分配給所述TCP連接,并將所述TCP連接當前的內存總量增加所述第一內存量;
重復上述步驟,直至所述TCP連接當前的內存剩余量不小于所述TCP連接當前的內存剩余量下限;或者,直至所述TCP連接當前的內存剩余量小于所述TCP連接當前的內存剩余量下限,但所述內存總量超出所述內存總量上限。
結合第一方面,在第一方面的第一種可能的實現方式中,在所述獲取單個TCP連接當前的內存剩余量之后,還包括:
當所述內存剩余量大于所述TCP連接對應的當前的內存剩余量上限時,從當前為所述TCP連接分配的內存資源中獲取具有第二內存量的內存資源;所述第二內存量為小于所述第一內存量的固定值;
將獲取到的具有第二內存量的內存資源釋放到公共內存,并從所述TCP連接當前的內存總量中減少所述第二內存量;
重復上述步驟,直至所述TCP連接當前的內存剩余量不大于所述TCP連接當前的內存剩余量上限。
結合第一方面的第一種可能的實現方式中,在第二種可能的實現方式中,所述TCP連接還具有內存總量下限,用于表示每個TCP完成最基本的報文接收動作所需的內存量。
結合第一方面的第二種可能的實現方式中,在第三種可能的實現方式中,所述方法還包括:
根據預計的TCP連接數量預留公共內存資源,以供所有TCP連接共同使用。
結合第一方面的第三種可能的實現方式中,在第四種可能的實現方式中,在所述獲取單個TCP連接當前的內存剩余量之前,還包括:
從網絡適配器NIC的網卡芯片的內存中,獲取所述網卡芯片具有的所有內存資源;所述NIC的網卡芯片的內存用于緩存從所述TCP連接上接收到的數據信息;
將所獲取的內存資源,分配給所有所述網卡芯片對應的TCP連接,以及為與所述網卡芯片對應的所有TCP連接預留的公共內存資源;所述分配給所有所述網卡芯片對應的TCP連接的內存資源的內存量與所述為與所述網卡芯片對應的所有TCP連接預留的公共內存資源的內存量之和不大于所述獲取的內存資源的內存量。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410023743.0/2.html,轉載請聲明來源鉆瓜專利網。





