免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: lin_style
打印 上一主题 下一主题

置疑: 我觉得在linux的slub分配器中,一个内存缓存的BUG [复制链接]

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
11 [报告]
发表于 2011-09-21 08:40 |只看该作者
再次拜读!

论坛徽章:
0
12 [报告]
发表于 2011-09-21 10:07 |只看该作者
回复  kouu
    如果没有配置CONFIG_NUMA,这个条件不会被满足 ...
seekhunter 发表于 2011-09-21 05:50


是呀,如果这个条件不满足,那这篇帖子讨论的问题不就不存在了吗?
既然在讨论这个问题,不就是假定条件满足么?


另外,当CPU2 free object的时候(object属于pageXXX), 而pageXXX恰好被CPU1使用,那么object是直接被挂接到page->freelist.
(这前后会用localirq和spinlock保护)。
我看的是3.0的代码,在slab_free和__slab_free里。


是呀,LZ一开始说的不就是这么个场景么?

论坛徽章:
0
13 [报告]
发表于 2011-09-21 10:54 |只看该作者
回复 1# lin_style


    3.如果不是,释放到邻居节点

楼主给点详细的说明? “邻居节点“

论坛徽章:
0
14 [报告]
发表于 2011-09-21 20:09 |只看该作者
回复 1# lin_style


    我没看明白,这位哥们的问题,大家帮着解释解释吧

是想说一个cpu上的obj会被释放到另一个cpu上吗,每个obj都是释放到其所在的page上的

我真是没看懂这个问题

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-13 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:00
15 [报告]
发表于 2016-01-10 01:31 |只看该作者
mark,我也发现了这个问题,还以为代码有问题。。。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-13 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:00
16 [报告]
发表于 2016-01-10 22:37 |只看该作者
LZ,我又仔细看了代码,你的疑问:“并且在公共的邻居节点中,其他的kmem_cache_cpu很容易就取到”,这个不对!即一个page的obj只可能被一个kmem_cache_cpu使用,释放的obj会存放在page的freelist上,而这个page是不在任何链表的;

page上的obj被一个kmem_cache_cpu获取后,这个page会设置冻结标志,虽然其他cpu释放这个page的obj时会加入到page的freelist中,但不会把这个page加到partial链表中,因此其他cpu没法获取这个page;当原来cpu的obj用完补充时会先考虑这个page在这期间是否有新释放的obj进来,即page的freelist是否为空,若有obj则优先补充,而不是搜寻新的partial;

我看的是2.6.32的内核,这个版本虽然老,但写的比较简洁,我想其他版本的kernel这个原则应该也不会变;
你看__slab_free()中的这个判断
        if (unlikely(PageSlubFrozen(page))) {
                stat(c, FREE_FROZEN);
                goto out_unlock;
        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP