[發明專利]內存回收與分配的方法及裝置有效
| 申請號: | 201310263454.3 | 申請日: | 2013-06-27 |
| 公開(公告)號: | CN103365784A | 公開(公告)日: | 2013-10-23 |
| 發明(設計)人: | 吳建國;裘稀石 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 深圳市威世博知識產權代理事務所(普通合伙) 44280 | 代理人: | 何青瓦 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 回收 分配 方法 裝置 | ||
技術領域
本發明涉及計算機應用技術領域,特別是涉及一種內存回收與分配的方法及裝置。
背景技術
隨著計算機技術的迅速發展,人們對計算機的需求日趨增長。單個處理器(CPU)的運算能力有限,人們迫切需要將多個處理器組成一個系統,非一致訪問分布共享存儲技術(NUMA,Non?Uniform?Memory?Access?Architecture),因其架構具有高可擴展性,正在被越來越多地運用在服務器領域。
NUMA是一種分布式結構,其特點是:任一處理器可以訪問任意的內存、外設等;每個處理器訪問不同的內存時,存在著不同的延遲。因此,內存管理最主要的目的是高效、快速地分配內存,使每個CPU都盡可能地訪問本地內存,并且在適當的時候釋放和回收內存資源。現有內存管理技術提供一個“回收模式”屬性,當發生某一個內存管理區的內存不足而無法滿足當前分配的情況時,內存管理系統根據“回收模式”的值來決定下一步的動作:當“回收模式”為“回收”時,則阻塞當前分配,先對該內存管理區進行空閑內存回收,回收結束后重新嘗試在該內存管理區進行分配;當“回收模式”為“不回收”時,則繼續尋找內存管理區鏈表,以獲取下一個滿足需求的內存管理區進行內存分配。
本申請的研發人員在長期的研發中發現,在現有的技術方案中,“回收模式”為全局屬性,系統在確定“回收模式”的值時是根據當前系統中是否存在任意的兩個節點之間的距離大于預先設定的“回收距離”,這種確定“回收模式”值的方案使得系統的控制粒度太大,無法很好地保證本地內存本地分配,造成不必要的內存遠端訪問,影響系統性能。
發明內容
本發明主要解決的技術問題是提供一種內存回收與分配的方法及裝置,能夠最大限度地保證本地內存在本地進行分配,一定程度避免不必要的內存遠端訪問,從而減少對系統性能的影響。
第一方面,本發明提供一種內存回收與分配的方法,包括:接收內存分配請求;在接收所述內存分配請求后,若當前第一內存管理區的內存不滿足預定的大小,則判斷當前第一內存管理區的回收模式是否表示回收所述當前第一內存管理區,其中,所述當前第一內存管理區的回收模式是根據所述當前第一內存管理區所屬節點的拓撲情況來確定的;若所述當前第一內存管理區的回收模式表示回收所述當前第一內存管理區,則對所述當前第一內存管理區進行回收;響應于所述內存分配請求,對回收后的所述當前第一內存管理區的內存進行分配。
在第一方面的第一種可能的實現方式中,所述方法還包括:根據所述當前第一內存管理區所屬節點的拓撲情況確定所述當前第一內存管理區的回收模式。
結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述根據所述當前第一內存管理區所屬節點的拓撲情況確定所述當前第一內存管理區的回收模式的步驟,包括:若所述當前第一內存管理區是所述當前第一內存管理區所屬節點的最后一個內存管理區,則判斷系統內存管理區鏈表Zonelist中是否存在與所述當前第一內存管理區之間的距離大于預設回收距離的第二內存管理區;若存在與所述當前第一內存管理區之間的距離大于預設回收距離的第二內存管理區,則確定所述當前第一內存管理區的回收模式是回收所述當前第一內存管理區。
結合第一方面的第二種可能的實現方式,在第一方面的第三種可能的實現方式中,所述判斷系統內存管理區鏈表Zonelist中是否存在與所述當前第一內存管理區之間的距離大于預設回收距離的第二內存管理區的步驟之后,還包括:若存在與所述當前第一內存管理區之間的距離小于或等于所述預設回收距離的第三內存管理區,則判斷所述系統內存管理區鏈表Zonelist中是否存在空閑內存大于預設閾值的第三內存管理區;若存在空閑內存大于預設閾值的第三內存管理區,則響應于所述內存分配請求,分配所述空閑內存大于預設閾值的第三內存管理區的內存。
在第一方面的第四種可能的實現方式中,所述判斷當前第一內存管理區的回收模式是否表示回收所述當前第一內存管理區的步驟之前,還包括:若所述當前第一內存管理區的內存不滿足預定的大小,則判斷所述當前第一內存管理區已建立的備用內存管理區鏈表Zonelist中是否存在滿足預定大小的第四內存管理區;若存在滿足預定大小的第四內存管理區,則響應于所述內存分配請求,分配所述備用內存管理區鏈表Zonelist中滿足預定大小的第四內存管理區的內存。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310263454.3/2.html,轉載請聲明來源鉆瓜專利網。





