【技术实现步骤摘要】
一种内存管理方法、装置、电子设备及存储介质
[0001]本公开涉及计算及存储
,尤其涉及一种内存管理方法、装置、电子设备及存储介质。
技术介绍
[0002]云计算、物联网、社交网络等新兴服务的兴起促使人类社会的数据种类和规模正以前所未有的速度增长,大数据时代正式到来。大数据的规模效应给数据存储带来了极大的挑战。以Ceph为代表的分布式存储系统被广泛的应用于各种存储产品。在一个存储集群中各个实例(如OSD,MDS)对业务的高效处理能力决定了存储集群的性能,而各个实例在处理业务过程中对于内存的申请和释放效率是影响实例性能的关键因素之一。
[0003]基于Ceph的存储集群中的实例通过tcmalloc或者jemalloc等动态连接库中的接口实现内存分配和释放。tcmaloc和jemalloc的关键设计思想是将内存分配分为几类,如小对象,中对象,大对象。对于每种分类,细分若干个级别,减少内存碎片。对于线程保存其缓存,在应用进行内存申请释放时优先和缓存交互,提高效率。
[0004]tcmalloc和jemalloc作为通用的内存管理器在设计上考虑的是更通用的场景,采用的是预先设置固定内存大小级别的方式,没有针对具体的实际业务场景进行优化,如果实际业务频繁申请的内存空间的尺寸大小不在预先设置的内存级别划分之中,随着业务的进行会产生大量的内存碎片,造成内存浪费。
技术实现思路
[0005]有鉴于此,本公开提供一种内存管理方法、装置、电子设备及存储介质,用于解决内存利用率低、内存分配冲突的技术问 ...
【技术保护点】
【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法用于实现实例的内存分配,所述方法包括:基于实例所申请的内存空间的大小适配块管理对象Part分类;其中,Part为由多个具有相同尺寸的切片管理内存块Slab组成的内存管理对象;所述Slab中包括由原始内存块Blk切分的多个相同大小的内存片Slice;所述Part依据Slice的大小分类;从本地缓存LocalCache中包括的与适配的Part分类一致的空闲内存片Slice中为实例分配内存;当所述LocalCache中的空间不足时,从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存;当适配的Part中无空闲的Slice时,从内存池MemPool中获取原始内存块Blk,将Blk初始化为适配的Part分类对应的Slab,将Slab加入到适配的Part中,再从适配的Part中为实例分配内存。2.根据权利要求1所述的方法,其特征在于,所述Part包括:无空闲链表Emptylist,其中的所有Slab都是已将内部内存片Slice全部分配出去的Slab;部分空闲链表Partiallist,其中的所有Slab都是已将内部部分内存片Slice分配出去,还有部分Slice未被分配出去的Slab;全空闲链表Fulllist,其中的所有Slab都是全部内存片Slice都未被分配的Slab;所述从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存的方法为:首先判断Partiallist中是否有充足的空闲的Slice可供分配,如果有则从对应的Slab中分配,如果没有则从Fulllist中获取未被分配的Slab填充到Partiallist中,然后再从填充的Slab中分配。3.根据权利要求2所述的方法,其特征在于,所述方法还用于实现实例的内存释放,内存释放的步骤包括:在将释放的内存释放回LocalCache不会导致LocalCache溢出的情况下,将释放的内存释放回LocalCache;在释放回LocalCache会导致LocalCache溢出的情况下,将释放的内存释放回Part;在释放回Part会导致Part溢出的情况下,将释放的内存释放回MemPool;在释放回MemPool会导致MemPool溢出的情况下,将释放的内存释放回操作系统。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述实例与块管理对象组Group绑定,所述Group由多个不同分类的Part组成;所述基于所申请的内存空间的大小适配块管理对象Part分类具体为:在所述Group所包含的Part分类中进行适配;所述适配的Part为所述Group中的Part。5.根据权利要求4所述的方法,其特征在于,在实例启动时,使用Part分类表对所述Group进行初始化;所述Part分类表采用默认配置和/或采用如下动态配置方法:对实例申请的不同大小的内存空间的频率进行统计分析;
基于预设门限,在默认Part分类表中新增频率高于预设门限的内存空间大小对应的Part分类。6.一种内存管理装置,其特征在于,所述装置用于实现实例的内存分配,该装置包括:适配模块,用于基于所申请的内存空间的大小适配块管理对象Part分类;其中,Part为由多个具有相同尺寸的切片管理内存块Slab组成的内存管理对象;所述Slab中包括由原始内存块Blk切分的多个相同大小的内存片Slice;...
【专利技术属性】
技术研发人员:白海龙,
申请(专利权)人:新华三大数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。