[發(fā)明專利]一種內(nèi)存管理方法、裝置、電子設(shè)備及存儲介質(zhì)在審
| 申請?zhí)枺?/td> | 202110562803.6 | 申請日: | 2021-05-24 |
| 公開(公告)號: | CN113515376A | 公開(公告)日: | 2021-10-19 |
| 發(fā)明(設(shè)計)人: | 白海龍 | 申請(專利權(quán))人: | 新華三大數(shù)據(jù)技術(shù)有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 450000 河南省鄭州市鄭州高*** | 國省代碼: | 河南;41 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 內(nèi)存 管理 方法 裝置 電子設(shè)備 存儲 介質(zhì) | ||
本公開提供了一種內(nèi)存管理方法、裝置、電子設(shè)備及存儲介質(zhì),用于解決內(nèi)存利用率低、內(nèi)存分配沖突的技術(shù)問題。本公開通過對內(nèi)存進行分類分級管理,使業(yè)務(wù)實例所申請的內(nèi)存空間盡可能地適配所提供的不同尺寸類型的內(nèi)存塊,通過將不同塊分類及將不同大小的內(nèi)存塊分類組成組,將組與業(yè)務(wù)實例綁定,針對不同實例實現(xiàn)內(nèi)存管理上的隔離,從而提高了內(nèi)存使用率,避免了不同實例在內(nèi)存分配上可能產(chǎn)生的沖突。
技術(shù)領(lǐng)域
本公開涉及計算及存儲技術(shù)領(lǐng)域,尤其涉及一種內(nèi)存管理方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù)
云計算、物聯(lián)網(wǎng)、社交網(wǎng)絡(luò)等新興服務(wù)的興起促使人類社會的數(shù)據(jù)種類和規(guī)模正以前所未有的速度增長,大數(shù)據(jù)時代正式到來。大數(shù)據(jù)的規(guī)模效應(yīng)給數(shù)據(jù)存儲帶來了極大的挑戰(zhàn)。以Ceph為代表的分布式存儲系統(tǒng)被廣泛的應(yīng)用于各種存儲產(chǎn)品。在一個存儲集群中各個實例(如OSD,MDS)對業(yè)務(wù)的高效處理能力決定了存儲集群的性能,而各個實例在處理業(yè)務(wù)過程中對于內(nèi)存的申請和釋放效率是影響實例性能的關(guān)鍵因素之一。
基于Ceph的存儲集群中的實例通過tcmalloc或者jemalloc等動態(tài)連接庫中的接口實現(xiàn)內(nèi)存分配和釋放。tcmaloc和jemalloc的關(guān)鍵設(shè)計思想是將內(nèi)存分配分為幾類,如小對象,中對象,大對象。對于每種分類,細分若干個級別,減少內(nèi)存碎片。對于線程保存其緩存,在應(yīng)用進行內(nèi)存申請釋放時優(yōu)先和緩存交互,提高效率。
tcmalloc和jemalloc作為通用的內(nèi)存管理器在設(shè)計上考慮的是更通用的場景,采用的是預(yù)先設(shè)置固定內(nèi)存大小級別的方式,沒有針對具體的實際業(yè)務(wù)場景進行優(yōu)化,如果實際業(yè)務(wù)頻繁申請的內(nèi)存空間的尺寸大小不在預(yù)先設(shè)置的內(nèi)存級別劃分之中,隨著業(yè)務(wù)的進行會產(chǎn)生大量的內(nèi)存碎片,造成內(nèi)存浪費。
發(fā)明內(nèi)容
有鑒于此,本公開提供一種內(nèi)存管理方法、裝置、電子設(shè)備及存儲介質(zhì),用于解決內(nèi)存利用率低、內(nèi)存分配沖突的技術(shù)問題。
圖1為本公開提供的內(nèi)存管理方法的步驟流程圖,該方法用于實現(xiàn)實例的內(nèi)存分配,該方法包括:
步驟101.基于實例所申請的內(nèi)存空間的大小適配塊管理對象Part分類;其中,Part為由多個具有相同尺寸的切片管理內(nèi)存塊Slab組成的內(nèi)存管理對象;所述Slab中包括由原始內(nèi)存塊Blk切分的多個相同大小的內(nèi)存片Slice;所述Part依據(jù)Slice的大小分類;
步驟102.從本地緩存LocalCache中包括的與適配的Part分類一致的空閑內(nèi)存片Slice中為實例分配內(nèi)存;
步驟103.當所述LocalCache中的空間不足時,從適配的Part分類對應(yīng)的Part所管理的具有空閑Slice的Slab中為實例分配內(nèi)存;
步驟104.當適配的Part中無空閑的Slice時,從內(nèi)存池MemPool中獲取原始內(nèi)存塊Blk,將Blk初始化為適配的Part分類對應(yīng)的Slab,將Slab加入到適配的Part中,再從適配的Part中為實例分配內(nèi)存。
基于本公開實施例,進一步地,所述Part包括:
無空閑鏈表Emptylist,其中的所有Slab都是已將內(nèi)部內(nèi)存片Slice全部分配出去的Slab;
部分空閑鏈表Partiallist,其中的所有Slab都是已將內(nèi)部部分內(nèi)存片Slice分配出去,還有部分Slice未被分配出去的Slab;
全空閑鏈表Fulllist,其中的所有Slab都是全部內(nèi)存片Slice都未被分配的Slab;
所述從適配的Part分類對應(yīng)的Part所管理的具有空閑Slice的Slab中為實例分配內(nèi)存的方法為:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于新華三大數(shù)據(jù)技術(shù)有限公司,未經(jīng)新華三大數(shù)據(jù)技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110562803.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





