Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1480343
  • 博文数量: 228
  • 博客积分: 1698
  • 博客等级: 上尉
  • 技术积分: 3241
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-24 21:49
个人简介

Linux

文章分类

全部博文(228)

文章存档

2017年(1)

2016年(43)

2015年(102)

2014年(44)

2013年(5)

2012年(30)

2011年(3)

发布时间:2015-01-18 23:22:56

上一篇回收slab对象时,先考虑放入local cache,当local cache已超过上限时,尝试放入shared cache。否则从local cache中批量释放batch_count对象放入slab三链。当slab三链的空闲对象超过上限,并且待释放的slab对象对应的slab中已经没有正在使用的对象时,将slab直接释放掉。释放slab对应的函数是slab_destroy,下面分.........【阅读全文】

阅读(2396) | 评论(0) | 转发(1)

发布时间:2015-01-18 22:09:14

我们的分析顺序是初始化、创建cache、申请对象、申请对象时会涉及创建slab、释放对象、释放对象时会涉及释放slab、销毁cache。前面已经介绍到了创建slab,本节分析一下释放对象,有两个入口kfree和kmem_cache_free,由于两者实现的本质相同只是对外体现为了两个API,这里放在一起梳理一下,下面分析一下代码。.........【阅读全文】

阅读(2786) | 评论(0) | 转发(1)

发布时间:2015-01-18 18:28:01

在前文分析kmalloc时,首先从local cache中获取,没有空闲对象时再从shared local cache中获取,再从slab的三个链表中获取。当链表中也没有空闲对象时,则需要调用cache_grow函数来创建slab了。实际上刚开始创建cache时里面是没有slab对象的,真正使用时才进行slab的创建。下面分析一下cache_grow的实现。点.........【阅读全文】

阅读(3147) | 评论(0) | 转发(1)

发布时间:2015-01-18 14:17:19

上文分析了普通对象的申请过程,kmalloc。现在看一下针对专用对象的申请kmem_cache_alloc函数。点击(此处)折叠或打开/** * kmem_cache_alloc - Allocate an object * @cachep: The cache to allocate from. * @flags: See kmalloc().........【阅读全文】

阅读(3988) | 评论(0) | 转发(2)

发布时间:2015-01-18 01:02:24

上篇分析了一下cache的创建过程,现在cache已经创建完成,跟踪一下slab对象的申请过程。目前使用的申请方式主要是kmalloc(从general cache中申请)和kmem_cache_alloc(从专用cache中申请)。先看一下kmalloc点击(此处)折叠或打开static __always_inline void *kmalloc(size_t size, gfp.........【阅读全文】

阅读(1902) | 评论(0) | 转发(2)
给主人留下些什么吧!~~

hanwei_10492013-04-23 16:33

google-perftools export

回复  |  举报
留言热议
请登录后留言。

登录 注册