Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题Memcache的存储涉及到slab,page,chunk三个概念1.Chunk为固定大小的内存空间,默认为96Byte。2.page对应实际的物理空间,1个p ...
分类:
系统相关 时间:
2016-06-14 22:14:38
阅读次数:
209
LinuxUSB转串口驱动程序:/**USBSerialConverterdriver*/#include<linux/kernel.h>#include<linux/errno.h>#include<linux/init.h>#include<linux/slab.h>#include<linux/smp_lock.h>#include<linux/tty.h>#include<linux/tty_driver.h..
分类:
系统相关 时间:
2016-06-09 00:59:11
阅读次数:
290
作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2013.09.15 23:19 转载请注明来自"祁峰"的CSDN博客 1 引言 众所周知,操作系统使用伙伴系统管理内存,不仅会造成大量的内存碎片,同时 ...
分类:
其他好文 时间:
2016-05-26 18:48:44
阅读次数:
234
内核启动早期初始化
start_kernel()->mm_init()->kmem_cache_init()
1,初始化静态initkmem_list3三链;
2,初始化cache_cache的nodelists字段为1中的三链;
3,根据内存情况初始化每个slab占用的页面数变量slab_break_gfp_order;
4,将cache_cache加入ca...
分类:
其他好文 时间:
2016-05-13 02:43:16
阅读次数:
177
Linux内核中将对象释放到slab中上层所用函数为kfree()或kmem_cache_free()。两个函数都会调用__cache_free()函数。
缓存回收对象基于以下原则
1.本地高速缓存的空间还可以容纳空闲对象,则直接将对象放回本地高速缓存
2.本地高速缓存的空间已满,则按batchcount的值将对象从本地高速缓存转移到slab中,转移是基于先进先出的原则的...
分类:
其他好文 时间:
2016-05-13 02:31:32
阅读次数:
278
创建slab主要由函数cache_grow()实现,满足以下两个条件时,slab分配器将为高速缓存创建新的slab
1.请求分配对象,但本地高速缓存没有空闲对象可以分配,需要填充
2.kmem_list3维护的链表中没有slab或者所有的slab都处于FULL链表中...
分类:
其他好文 时间:
2016-05-13 02:22:09
阅读次数:
289
从一个缓存中分配对象总是遵循下面的原则:
1.本地高速缓存中是否有空闲对象,如果有的话则从其中获取对象,
2.如果本地高速缓存中没有对象,则从kmem_list3中的slab链表中寻找空闲对象并填充到本地高速缓存再分配;
3.如果所有的slab中都没有空闲对象了,那么就要创建新的slab,再分配 。
来自:http://blog.csdn.net/vanbreaker/a...
分类:
其他好文 时间:
2016-05-13 02:16:57
阅读次数:
245
创建新的缓存必须通过kmem_cache_create()函数来完成,流程如下:
1,从全局cache_cache中获得cache结构,因为全局cache_cache初始化对象的大小就是kmem_cache结构的大小,所以返回的指针正好可以转换为cache结构;调用 kmem_cache_zalloc(&cache_cache, gfp);
2,获得slab中碎片大小,由函数cal...
分类:
系统相关 时间:
2016-05-13 01:38:29
阅读次数:
260
内存分配
Page为内存分配的最小单位
Memcached 的内存分配以page为单位,默认情况下一个page是1M Slabs划分数据空间
Memcached 并不是将所有大小的数据都放在一起的,而是预先将数据空间划分为一系列slabs,每个slab只负责一定范围内的数据存储。
每个slab负责的空间其实是不等的,memcached默认情况下下一个slab的最大值为前一个的1.25倍。
例...
分类:
系统相关 时间:
2016-05-12 20:42:51
阅读次数:
161
1.SLAB机制 内核分配内存的一种机制,内存释放不一定要回收到全局内存池。 2.动机 高效:缓存减少碎片;避免重复初始化;支持硬件缓存行和着色,提高缓存利用率。 ...
分类:
其他好文 时间:
2016-05-09 12:43:05
阅读次数:
153