从品牌网站建设到网络营销策划,从策略到执行的一站式服务
前面介绍了
BlueStore的BitMap分配器,我们知道新版本的
Bitmap
分配器的优势在于
使用连续的内存空间从而尽可能更多的命中CPU Cache以提高分配器性能。在这里我们了解一下基于区间树的
Stupid
分配器(类似于Linux Buddy内存管理算法),并对比分析一下其优劣。
Linux内存管理算法为了能够快速响应请求,尽可能的提高内存利用率同时减少外部内存碎片,引入了伙伴系统算法
Buddy-System
。该算法将所有的空闲页分组为11个链表,每个链表分别包含
1、2、4、8、16、32、64、128、256、512、1024
个连续的页框块,每个页框块的第一个内存页的物理地址是该块大小的整数倍。
伙伴的特点是:两个块大小相同、两个块地址连续、第一块的第一个页框的物理地址是两个块总大小的整数倍(同属于一个大块,第1块和第2块是伙伴,第3块和第4块是伙伴,但是第2块和第3块不是伙伴)。具体内存分配和内存释放可自行Google。
优点:
缺点:
CMA
(Contiguous Memory Allocator, 连续内存分配器)。Stupid分配器使用了区间树组织数据结构,高效管理
Extent(offset, length)
。
class StupidAllocator : public Allocator { CephContext* cct; // 分配空间用的互斥锁 std::mutex lock; // 空闲空间总大小 int64_t num_free; // 最后一次分配空间的位置 uint64_t last_alloc; // 区间树数组,初始化的时候,free数组的长度为10,即有十颗区间树 std::vectorfree; // extent: offset, length typedef mempool::bluestore_alloc::pool_allocator< pair > allocator_t; // 有序的 btree map,按顺存放extent。 typedef btree::btree_map , allocator_t> interval_set_map_t; // 区间树,主要的操作有 insert、erase等。 typedef interval_set interval_set_t; };
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图