工作原理
基本概念:slab,page,chunk。
slab,是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同slab有不同的chunk size。具体分配多少个slab由参数 -f (增长因子)和 -n (chunk最小尺寸)决定的。
page,可以理解为内存页。大小固...
分类:
系统相关 时间:
2015-03-19 20:27:03
阅读次数:
172
内存分配从本质上来说是一种空间管理算法,给你一块连续的空间,提供存储服务,那么你的空间管理跟分配要采用什么样的算法才会比较高效?...
分类:
编程语言 时间:
2015-03-06 01:06:05
阅读次数:
454
首先说缓存区的数据结构:struct kmem_cache_s {
/* 1) each alloc & free */
/* full, partial first, then free */
struct list_head slabs;//指向所有的slab块链表,前面是完全块,然后是非完全块,最后是空闲块
struct list_head *firstnotfull;//指向第一个非...
分类:
系统相关 时间:
2015-03-04 21:11:48
阅读次数:
169
在上一篇文章Linux内核源代码情景分析-内存管理之slab-分配与释放,最后形成了如下图的结构: 图 1 我们看到空闲slab块占用的若干页面,不会自己释放;我们是通过kmem_ca...
分类:
系统相关 时间:
2015-03-04 21:10:20
阅读次数:
218
通常,我们会遇到很多关于Linux内存异常的问题:1、为什么我们的内存使用偏高?2、谁用了我的内存?3、内存使用如何调优?这里总结下排查思路:通过free-m命令查看当前系统内存总体使用情况,引用大牛们的图一幅:a)Used=进程使用内存+Slab使用+pagetable+Buffer+Cacheb)-buf..
分类:
系统相关 时间:
2015-02-09 16:15:32
阅读次数:
723
内存的碎片化 如果用C语言直接malloc,free来向操作系统申请和释放内存时,在不断申请和释放的过程中,形成了一些很小的内存判断,无法再利用。这种空闲但无法利用内存的现象称为内存的碎片化。 slab allocator 缓解内存碎片化 memcached用slab allocator机...
分类:
系统相关 时间:
2015-02-06 12:53:46
阅读次数:
219
Fault injectionhttp://lwn.net/Articles/209257/The framework can cause memory allocation failures at two levels: in the slab allocator (where it affect...
分类:
其他好文 时间:
2015-02-02 12:08:59
阅读次数:
208
以下内容仅为本人的笔记。/** * Determines the chunk sizes and initializes the slab class descriptors * accordingly. */ /** * 确定chunk的大小,初始化slabs类的相应的描述符 */void s.....
分类:
系统相关 时间:
2015-02-01 19:03:35
阅读次数:
306
slab着色原理slab着的原理,cpu cache一,slab着色原理slab分配器中用到很多的缓存,每个缓存中又包含了很多slab,每个slab中有很多对象,每个slab的头部用于管理该slab中的对象(比如哪些对象已经使用,哪些对象还没有使用等),在slab的每个对象的开始和结束处都有一个特定...
分类:
系统相关 时间:
2015-01-26 21:03:33
阅读次数:
208
1,查看内存的基本情况通过/proc/meminfo可以看到2,查看vmalloc分配的情况通过/proc/vmallocinfo可以看到3,查看伙伴系统使用的内存情况通过/proc/buddyinfo可以查看~4,查看slab分配器的使用情况通过查看/proc/slabinfo来查看
分类:
系统相关 时间:
2015-01-26 20:59:14
阅读次数:
223