CN102375780B - 一种分布式文件系统中元数据缓存管理的方法 - Google Patents
一种分布式文件系统中元数据缓存管理的方法 Download PDFInfo
- Publication number
- CN102375780B CN102375780B CN201110326472.2A CN201110326472A CN102375780B CN 102375780 B CN102375780 B CN 102375780B CN 201110326472 A CN201110326472 A CN 201110326472A CN 102375780 B CN102375780 B CN 102375780B
- Authority
- CN
- China
- Prior art keywords
- slab
- memory
- thread
- privately owned
- buffer memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式文件系统中高效的元数据缓存管理方法,该方法通过多种策略来优化元数据缓存的管理,尽可能减少由于软件的使用方式不合理而照成内存访问效率的低下,以及并发导致的CPU闲置,从而使得元数据服务器能够充分地利用内存和CPU等硬件资源,提供尽可能高的服务能力。
Description
技术领域
本发明涉及分布式文件系统中高效的元数据缓存管理机制,具体来,涉及一种分布式文件系统中高效的元数据缓存管理方法。
背景技术
在分布式文件系统中,元数据服务器是整个系统的中枢,它担负着管理整个文件系统所有管理数据的任务,在客户端元数据操作比较密集的应用中,元数据服务器的服务能力是至关重要的,其吞吐量直接决定了文件系统支持的业务响应的速率。
在现实元数据服务器中,制约其服务能力的因素有很多,但总的来说可以分为以下几类:第一,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缓存的污染。
(4)单个slab,为了降低并发带来的性能下降,为每个线程配备一个私有缓存,用于存储该线程操作的内存单元。线程需要进行内存分配和释放时,先操作私有缓存,如果私有缓存内的内存单元能够满足需求,则不需要对共有的内存块进行操作。这样以来,同一个slab的各个使用线程基本独立,产生并发访问的几率几乎为0。
(5)对于每个slab,根据个线程内存分配释放的统计量,动态调整私有缓存的大小:使用slab频率高的线程,为其配备的私有缓存相对较大,以减少其访问slab共有内存区的几率;对于使用slab频率低的线程,为其配备的私有缓存相对较小,以减少不必要的浪费。
(6)由于在服务器模型中,经常使用任务集中处理的模式,因此使用slab的线程,可能部分只申请内存,而另一部分只释放内存,从而导致线程操作slab共有内存区的频率较高。因此,在slab各个线程私有缓存之间进行均衡,将释放内存较多的线程私有cache中的内存单元直接搬移到申请需求较多的线程私有缓存,而不是直接归还给slab共有内存区。这样大大降低了slab内部各个线程的并发度,提高了性能。
Claims (1)
1.一种分布式文件系统中元数据缓存管理的方法,其特征在于:
采用slab技术管理内存;
所述每个slab,根据每个线程内存分配释放的统计量,动态调整私有缓存的大小,使用slab频率高的线程配备的私有缓存相对较大,使用slab频率低的线程配备的私有缓存相对较小;
所述slab在各个线程的私有缓存之间进行均衡,将释放内存较多的线程私有cache中的内存单元,直接搬移到申请需求较多的线程私有缓存;
所述内存在申请时包括定长结构和变长结构;
所述定长结构通过slab技术通过mmap一次性向系统分配内存来管理,分配的内存容纳了需要数量的不同类型的定长结构;
所述变成结构通过预创建slab来管理,所述slab最小为可容纳的最小变长结构,并以2的阶乘递增,最大为可容纳的最大变长结构;
所述变长结构在使用时,将请求的内存落在slab集合中大小与其最接近的slab;
所述slab内部,将大块内存拆分为小单元时,起始地址与CPU的cacheline大小对齐;
所述每个slab,为每个线程配备一个私有缓存,用于存储该线程操作的内存单元;
所述线程需要进行内存分配和释放时,先操作私有缓存,如果私有缓存内的内存单元能够满足需求,则不需要对共有的内存块进行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110326472.2A CN102375780B (zh) | 2011-10-25 | 2011-10-25 | 一种分布式文件系统中元数据缓存管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110326472.2A CN102375780B (zh) | 2011-10-25 | 2011-10-25 | 一种分布式文件系统中元数据缓存管理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375780A CN102375780A (zh) | 2012-03-14 |
CN102375780B true CN102375780B (zh) | 2014-07-30 |
Family
ID=45794413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110326472.2A Active CN102375780B (zh) | 2011-10-25 | 2011-10-25 | 一种分布式文件系统中元数据缓存管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102375780B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914265B (zh) * | 2014-04-09 | 2016-11-23 | 江苏物联网研究发展中心 | 集群细粒度内存管理方法 |
CN104035807B (zh) * | 2014-07-02 | 2017-04-12 | 电子科技大学 | 一种云存储系统的元数据缓存替换方法 |
CN105094992B (zh) * | 2015-09-25 | 2018-11-02 | 浪潮(北京)电子信息产业有限公司 | 一种处理文件请求的方法与系统 |
CN108595259B (zh) * | 2017-03-16 | 2021-08-20 | 哈尔滨英赛克信息技术有限公司 | 一种基于全局管理的内存池管理方法 |
CN112100146B (zh) * | 2020-09-21 | 2021-06-29 | 重庆紫光华山智安科技有限公司 | 一种高效的纠删分布式存储写入方法、系统、介质及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545041A (zh) * | 2003-11-14 | 2004-11-10 | 港湾网络有限公司 | 基于mips64的双cpu微内核 |
CN101515247A (zh) * | 2009-03-30 | 2009-08-26 | 福建星网锐捷网络有限公司 | 一种内存监控的方法和装置 |
CN101593131A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 基于对象池来实现线程操作的方法和设备 |
CN101788919A (zh) * | 2010-01-29 | 2010-07-28 | 中国科学技术大学苏州研究院 | 片上多核处理器时钟精确并行仿真系统及仿真方法 |
-
2011
- 2011-10-25 CN CN201110326472.2A patent/CN102375780B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545041A (zh) * | 2003-11-14 | 2004-11-10 | 港湾网络有限公司 | 基于mips64的双cpu微内核 |
CN101593131A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 基于对象池来实现线程操作的方法和设备 |
CN101515247A (zh) * | 2009-03-30 | 2009-08-26 | 福建星网锐捷网络有限公司 | 一种内存监控的方法和装置 |
CN101788919A (zh) * | 2010-01-29 | 2010-07-28 | 中国科学技术大学苏州研究院 | 片上多核处理器时钟精确并行仿真系统及仿真方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102375780A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101799773B (zh) | 并行计算的内存访问方法 | |
KR102044023B1 (ko) | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 | |
CN102375780B (zh) | 一种分布式文件系统中元数据缓存管理的方法 | |
US8037251B2 (en) | Memory compression implementation using non-volatile memory in a multi-node server system with directly attached processor memory | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
US9836516B2 (en) | Parallel scanners for log based replication | |
CN105843748B (zh) | 一种对内存中内存页的处理方法及装置 | |
CN103067425A (zh) | 虚拟机创建方法、虚拟机管理系统及相关设备 | |
KR102110812B1 (ko) | 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법 | |
US7930483B2 (en) | Associativity implementation in a system with directly attached processor memory | |
CN104536724A (zh) | 一种多核环境下哈希表并发访问性能优化方法 | |
US9612651B2 (en) | Access based resources driven low power control and management for multi-core system on a chip | |
CN103297499A (zh) | 一种基于云平台的调度方法及系统 | |
US10387051B2 (en) | Acquisition of IOPS and MBPS limits independently at a scheduler in a scheduler hierarchy | |
CN104270412A (zh) | 一种基于Hadoop分布式文件系统的三级缓存方法 | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN107528871B (zh) | 存储系统中的数据分析 | |
CN102184141A (zh) | 检查点数据的存储方法和装置 | |
WO2021218101A1 (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
Chen et al. | Resource abstraction and data placement for distributed hybrid memory pool | |
CN101847128A (zh) | 管理tlb的方法和装置 | |
Le et al. | Namenode and datanode coupling for a power-proportional hadoop distributed file system | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
Luo et al. | JeCache: just-enough data caching with just-in-time prefetching for big data applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |