本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的....
分类:
系统相关 时间:
2015-06-11 14:13:41
阅读次数:
235
在C中,使用malloc分配内存时会产生内存碎片,即空闲零碎的空间无法利用。
Memcached中的Slab Allocator机制缓解这一问题。
基本原理:
按照预先规定的大小,将内存分成数个slab仓库,然后将各仓库分割成特定长度的块(chunk),并把尺寸相同的块分成组,以完全解决内存碎片问题
Memcached根据收到的数据的大小,选择最适合数据大小的slab。Memcac...
分类:
系统相关 时间:
2015-05-28 16:18:21
阅读次数:
214
1台服务器,内存16G,top显示的信息如图:空闲内存是free+buffers,大概7G左右;已经使用的内存就是16-7=9G。但是进展列表显示的%MEM,相加,远远少于9G,是什么原因?查看/proc/meminfo,发现slab占用了8个G。通过观察/proc/meminfo发现,slab内存分为两部分:SReclaimable//可..
分类:
系统相关 时间:
2015-05-13 17:13:15
阅读次数:
172
memcached(三)内存管理memcached使用预申请的方式来管理内存的分配,从而避免内存碎片化的问题。如果采用mallo和free来动态的申请和销毁内存,必然会产生大量的内存碎片。基本知识slab:内存块是memcached一次申请内存的最小单元,在memcached中一个slab的默认大小...
分类:
系统相关 时间:
2015-04-26 19:42:35
阅读次数:
191
作用:vmstat 的含义为显示虚拟内存状态(virtual memor statics),但是它可以报告关于进程,内存,I/O 等系统整体运行状态选项:-a 显示活动内页-f 显示启动后创建的进程总数-m 显示slab 信息-n 头信息仅显示一次-s 以表格方式显示事件计数器和内存状态-d 报告磁...
分类:
其他好文 时间:
2015-04-23 12:32:07
阅读次数:
116
一、Memcache1. memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小redis有部份存在硬盘上,这样能保证数据的持久性。2. Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问...
分类:
其他好文 时间:
2015-04-20 16:30:45
阅读次数:
115
Memcached的内存管理方式Memcached采用了名为Slab Allocation的机制分配,管理内存。Slab Allocation的原理相当简单。将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk的集合)如图:而且slab Allocation还有重复使...
分类:
系统相关 时间:
2015-04-18 19:11:07
阅读次数:
183
第三章 进程管理1. fork系统调用从内核返回两次: 一次返回到子进程,一次返回到父进程2. task_struct结构是用slab分配器分配的,2.6以前的是放在内核栈的栈底的;所有进程的task_struct连在一起组成了一个双向链表3. 2.6内核的内核栈底放的是thread_info结构,...
分类:
系统相关 时间:
2015-04-11 16:14:03
阅读次数:
257
kmalloc/kfree用于划分和回收内核空间低区内存的方法。改组方法没有直接通过伙伴系统进行内存的划分,通过slab算法进行分配的。同时也为每个CPU提供一个阵列缓存,用于提高分配效率。下面对改组函数进行源码级的分析。内存分配static inline void *kmalloc(size_t ...
分类:
系统相关 时间:
2015-04-10 17:15:55
阅读次数:
249
1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位...
分类:
系统相关 时间:
2015-04-01 23:33:03
阅读次数:
192