[发明专利]一种分布式文件系统中元数据缓存管理的方法有效
申请号: | 201110326472.2 | 申请日: | 2011-10-25 |
公开(公告)号: | CN102375780A | 公开(公告)日: | 2012-03-14 |
发明(设计)人: | 杨浩;马照云;马振杰;张东阳;邵宗有;刘新春;苗艳超;王勇 | 申请(专利权)人: | 无锡城市云计算中心有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 214135 江苏省无锡市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 文件系统 中元 数据 缓存 管理 方法 | ||
技术领域
本发明涉及分布式文件系统中高效的元数据缓存管理机制,具体来,涉及一种分布式文件系统中高效的元数据缓存管理方法。
背景技术
在分布式文件系统中,元数据服务器是整个系统的中枢,它担负着管理整个文件系统所有管理数据的任务,在客户端元数据操作比较密集的应用中,元数据服务器的服务能力是至关重要的,其吞吐量直接决定了文件系统支持的业务响应的速率。
在现实元数据服务器中,制约其服务能力的因素有很多,但总的来说可以分为以下几类:第一,IO的压力,如磁盘带宽和网络带宽的不足;第二,并发处理能力,主要体现在多任务并发时,由于互斥或同步而消耗不必要的等待时间;第三,是对于CPU一二级快速缓存的污染,如大量的内存拷贝或多核CPU之间的CPU缓存同步。
Slab是Linux操作系统的一种内存分配机制。与传统的内存管理模式相比,slab缓存分配器提供了很多优点。首先,内核通常依赖于对小对象的分配,它们会在系统生命周期内进行无数次分配。slab缓存分配器通过对类似大小的对象进行缓存而提供这种功能,从而避免了常见的碎片问题。slab分配器还支持通用对象的初始化,从而避免了为同一目而对一个对象重复进行初始化。最后,slab分配器还可以支持硬件缓存对齐和着色,这允许不同缓存中的对象占用相同的缓存行,从而提高缓存的利用率并获得更好的性能。
发明内容
本发明旨在公开一种分布式文件系统中高效的元数据缓存管理方法,该方法通过多种策略来优化元数据缓存的管理,尽可能减少由于软件的使用方式不合理而照成内存访问效率的低下,以及并发导致的CPU闲置,从而使得元数据服务器能够充分地利用内存和CPU等硬件资源,提供尽可能高的服务能力。
一种分布式文件系统中元数据缓存管理的方法,采用slab技术管理内存。
优选的,所述内存在申请时包括定长结构和变长结构。
优选的,所述定长结构通过slab技术通过mmap一次性向系统分配内存来管理,分配的内存容纳了需要数量的不同类型的定长结构。
优选的,所述变成结构通过预创建slab来管理,所述slab最小为可容纳的最小变长结构,并以2的阶乘递增,最大为可容纳的最大变长结构。
优选的,所述变长结构在使用时,将请求的内存落在slab集合中大小与其最接近的slab。
优选的,所述slab内部,将大块内存拆分为小单元时,起始地址与CPU的cacheline大小对齐。
优选的,所述每个slab,为每个线程配备一个私有缓存,用于存储该线程操作的内存单元。
优选的,所述线程需要进行内存分配和释放时,先操作私有缓存,如果私有缓存内的内存单元能够满足需求,则不需要对共有的内存块进行操作。
优选的,所述每个slab,根据每个线程内存分配释放的统计量,动态调整私有缓存的大小,使用slab频率高的线程配备的私有缓存相对较大,使用slab频率低的线程配备的私有缓存相对较小。
优选的,所述slab在各个线程的私有缓存之间进行均衡,将释放内存较多的线程私有cache中的内存单元,直接搬移到申请需求较多的线程私有缓存。
具体实施方式
在元数据服务器中,常用的内存结构分为两类:第一类是定长的结构,这类内存结构通常常驻内存,系统会频繁的申请、释放和访问此类内存结构,如索引节点、目录项、消息结构等;第二类是变长结构,该类内存结构通常是在系统运转过程中分配的临时内存单元。
对于服务器模型,通常会引入集中处理的方法,以减少并发带来的性能下降。因此,服务器的内存使用还有一个特性,就是通常分配内存和释放内存的线程是不同的,这就大大增加了内存分配和释放的并发压力,制约了系统的整体性能。
(1)对于定长结构,引入slab技术进行管理,即通过mmap一次性向系统分配大块内存,该大块内存能够容纳若干需要的定长结构,通过自己的管理结构进行管理,这样以来,就减少了向系统申请释放内存的频度,降低了并发性。同时,由于不同类型的定长结构有自己的slab,因此不同线程访问时,只需在各自slab内存进行并发控制,不会影响到其他的slab。
(2)对于变长的内存结构,预创建一批slab,大小以2的阶乘递增。在使用时,将请求落在与slab集合中大小与之最接近的slab即可。这样以来,随机大小的内存分配并发度也被大大降低。
(3)slab内部,将大块内存拆分为小单元时,起始地址与CPU的cacheline大小对齐,减少对于CPU缓存的污染。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡城市云计算中心有限公司,未经无锡城市云计算中心有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110326472.2/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置