[发明专利]一种内存管理方法、装置、电子设备及存储介质在审
申请号: | 202110562803.6 | 申请日: | 2021-05-24 |
公开(公告)号: | CN113515376A | 公开(公告)日: | 2021-10-19 |
发明(设计)人: | 白海龙 | 申请(专利权)人: | 新华三大数据技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 450000 河南省郑州市郑州高*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 装置 电子设备 存储 介质 | ||
本公开提供了一种内存管理方法、装置、电子设备及存储介质,用于解决内存利用率低、内存分配冲突的技术问题。本公开通过对内存进行分类分级管理,使业务实例所申请的内存空间尽可能地适配所提供的不同尺寸类型的内存块,通过将不同块分类及将不同大小的内存块分类组成组,将组与业务实例绑定,针对不同实例实现内存管理上的隔离,从而提高了内存使用率,避免了不同实例在内存分配上可能产生的冲突。
技术领域
本公开涉及计算及存储技术领域,尤其涉及一种内存管理方法、装置、电子设备及存储介质。
背景技术
云计算、物联网、社交网络等新兴服务的兴起促使人类社会的数据种类和规模正以前所未有的速度增长,大数据时代正式到来。大数据的规模效应给数据存储带来了极大的挑战。以Ceph为代表的分布式存储系统被广泛的应用于各种存储产品。在一个存储集群中各个实例(如OSD,MDS)对业务的高效处理能力决定了存储集群的性能,而各个实例在处理业务过程中对于内存的申请和释放效率是影响实例性能的关键因素之一。
基于Ceph的存储集群中的实例通过tcmalloc或者jemalloc等动态连接库中的接口实现内存分配和释放。tcmaloc和jemalloc的关键设计思想是将内存分配分为几类,如小对象,中对象,大对象。对于每种分类,细分若干个级别,减少内存碎片。对于线程保存其缓存,在应用进行内存申请释放时优先和缓存交互,提高效率。
tcmalloc和jemalloc作为通用的内存管理器在设计上考虑的是更通用的场景,采用的是预先设置固定内存大小级别的方式,没有针对具体的实际业务场景进行优化,如果实际业务频繁申请的内存空间的尺寸大小不在预先设置的内存级别划分之中,随着业务的进行会产生大量的内存碎片,造成内存浪费。
发明内容
有鉴于此,本公开提供一种内存管理方法、装置、电子设备及存储介质,用于解决内存利用率低、内存分配冲突的技术问题。
图1为本公开提供的内存管理方法的步骤流程图,该方法用于实现实例的内存分配,该方法包括:
步骤101.基于实例所申请的内存空间的大小适配块管理对象Part分类;其中,Part为由多个具有相同尺寸的切片管理内存块Slab组成的内存管理对象;所述Slab中包括由原始内存块Blk切分的多个相同大小的内存片Slice;所述Part依据Slice的大小分类;
步骤102.从本地缓存LocalCache中包括的与适配的Part分类一致的空闲内存片Slice中为实例分配内存;
步骤103.当所述LocalCache中的空间不足时,从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存;
步骤104.当适配的Part中无空闲的Slice时,从内存池MemPool中获取原始内存块Blk,将Blk初始化为适配的Part分类对应的Slab,将Slab加入到适配的Part中,再从适配的Part中为实例分配内存。
基于本公开实施例,进一步地,所述Part包括:
无空闲链表Emptylist,其中的所有Slab都是已将内部内存片Slice全部分配出去的Slab;
部分空闲链表Partiallist,其中的所有Slab都是已将内部部分内存片Slice分配出去,还有部分Slice未被分配出去的Slab;
全空闲链表Fulllist,其中的所有Slab都是全部内存片Slice都未被分配的Slab;
所述从适配的Part分类对应的Part所管理的具有空闲Slice的Slab中为实例分配内存的方法为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于新华三大数据技术有限公司,未经新华三大数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110562803.6/2.html,转载请声明来源钻瓜专利网。