![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
slab内存管理方案学习记录
文章平均质量分 88
liuhangtiant
这个作者很懒,什么都没留下…
展开
-
优雅的slab内存分配器(五)—— 鸡肋一样的colour机制
Colour机制的作用slab中的colour机制是利用slab的剩余空间,减少cache行冲突的一种机制。不过笔者分析来下,总体感觉colour机制的效果不明显,如同鸡肋,食之无味弃之可惜,好在colour机制并没有给slab带来更多的复杂度。在分析colour机制之前,有必要补充一下硬件cache的基础知识,请参考我的另外一篇博客:《系统加速利器Hardware Cache(一)——三...原创 2018-08-12 01:16:17 · 1210 阅读 · 3 评论 -
优雅的slab内存分配器(四)——shared cache
Shared cache的作用是什么?shared cache实际上充当了cpu_cache与slab之间的缓存。当cpu_cache中的object用完了,可以先从shared cache中获取object,如果shared object中没有object,才会到slab中申请object;同样,当释放object时,如果cpu_cache已满,则会将object释放到shared cach...原创 2018-08-04 00:16:27 · 826 阅读 · 0 评论 -
优雅的slab内存分配器(三)——分配和释放内存(kmalloc/kfree)
代码架构kmalloc架构kmalloc |----->return __kmalloc(size, flags); | |----->return __do_kmalloc(size, flags, _RET_IP_); | | |----->return __do_kmalloc(size, flags, _RET_IP_); ...原创 2018-08-03 00:37:03 · 983 阅读 · 0 评论 -
优雅的slab内存分配器(二)——slab初始化kmem_cache_init
slab内存分配器初始化有函数kmem_cache_init来完成,本文会详细介绍slab内存分配器的初始化流程。软件架构kmem_cache_init |----->kmem_cache = &kmem_cache_boot; | 第一个kmem cache实例,静态定义,不过尚需必须要的初始化 |----->kmem_cach...原创 2018-08-01 00:14:02 · 1769 阅读 · 0 评论 -
优雅的slab内存分配器(一)——slab内存分配器基础知识
slab内存分配器是linux内核中比较经典的内存分配器,目前已经被slub内存分配器取代了。不过为了致敬经典,更是为理解slub分配器做铺垫,我还是会从slab分配器讲起。为什么需要slab内存分配器?这个问题其实很好回答,之所以提出slab分配器,是因为buddy system只能按page对齐来分配内存。然而大多数情况下,需要的内存size都不是按page对齐的,如果直接通过...原创 2018-07-29 10:21:15 · 6172 阅读 · 0 评论 -
文章管理 优雅的slab内存分配器(六)—— freelist
freelist是干嘛的?我们前面提到过freelist,只不过仅仅提到了freelist可以放在slab内部也可以放在slab外部,并没有提到freelist的具体作用。我们今天就来剖析一下freelist的作用。freelist的作用其实非常非常简单,就是记录slab中没有使用的object。这里有几个注意点:freelist实际上是一个数组,数组中存放未使用的object的...原创 2018-08-12 23:19:24 · 2213 阅读 · 1 评论