免费注册 查看新帖 |

Chinaunix

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

[内存管理] shrink_inactive_list的page_check_references疑问 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-21 16:41 |只看该作者
回复 10# firkraag


    原来是这样啊,谢谢了。真心的理解错了,怪不得死活想不通呢。


释放page时候,通过 page_referenced来page的二次机会释放。
page_referenced检检查所有映射的pte的access位,如果有最近刚访问的pte话(access位设置),这个page不会立刻释放,而是重新加入到lru中,并且清除所有pte的access标志。下次再释放该page的时候,没有最近访问了的pte了。这个时候真正的释放,从而实现二次机会。

论坛徽章:
0
12 [报告]
发表于 2012-05-21 16:44 |只看该作者
回复 10# firkraag


这个问题解决了,但是具体的page_check_references里面的对映射页的处理。还不是很清除呢。
    static enum page_references page_check_references(struct page *page,
                                                  struct scan_control *sc)
{
        int referenced_ptes, referenced_page;
        unsigned long vm_flags;

        referenced_ptes = page_referenced(page, 1, sc->mem_cgroup, &vm_flags);
        referenced_page = TestClearPageReferenced(page);

        /* Lumpy reclaim - ignore references */
        if (sc->reclaim_mode & RECLAIM_MODE_LUMPYRECLAIM)
                return PAGEREF_RECLAIM;

        /*
         * Mlock lost the isolation race with us.  Let try_to_unmap()
         * move the page to the unevictable list.
         */
        if (vm_flags & VM_LOCKED)
                return PAGEREF_RECLAIM;

        if (referenced_ptes) {
               //有最近访问过的pte,放回active lru。
                if (PageAnon(page))
                        return PAGEREF_ACTIVATE;
                /*
                 * All mapped pages start out with page table
                 * references from the instantiating fault, so we need
                 * to look twice if a mapped file page is used more
                 * than once.
                 *
                 * Mark it and spare it for another trip around the
                 * inactive list.  Another page table reference will
                 * lead to its activation.
                 *
                 * Note: the mark is set for activated pages as well
                 * so that recently deactivated but used pages are
                 * quickly recovered.
                 */
/映射page,。。。。这边怎么理解呢???
                SetPageReferenced(page);

                if (referenced_page)
                        return PAGEREF_ACTIVATE;

                return PAGEREF_KEEP;
        }

        /* Reclaim if clean, defer dirty pages to writeback */
        if (referenced_page && !PageSwapBacked(page))
                return PAGEREF_RECLAIM_CLEAN;

        return PAGEREF_RECLAIM;
}

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
13 [报告]
发表于 2012-05-21 17:56 |只看该作者

论坛徽章:
0
14 [报告]
发表于 2012-05-21 18:02 |只看该作者
本帖最后由 blake326 于 2012-05-21 18:02 编辑



能不能具体,形象的解释下啊。看不懂 ,我之前也看到过这个patch

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
15 [报告]
发表于 2012-05-24 19:41 |只看该作者
就是为了对付lz在http://bbs.chinaunix.net/thread-3746231-1-1.html中说的single mmap情况。

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
16 [报告]
发表于 2012-05-25 09:48 |只看该作者
没有短消息权限啊!

论坛徽章:
0
17 [报告]
发表于 2012-05-25 10:09 |只看该作者
回复 16# firkraag


    200分才有短消息权限。

    single mmap差不多理解了。

论坛徽章:
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
18 [报告]
发表于 2012-05-25 21:43 |只看该作者
本帖最后由 embeddedlwp 于 2012-05-25 21:50 编辑

回复 16# firkraag


在try_to_unmap_one函数中看到mlock()d干嘛用的?
还有try_to_unmap的第二个parameter  migration是干嘛的?


   

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
19 [报告]
发表于 2012-05-26 12:01 |只看该作者

论坛徽章:
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
20 [报告]
发表于 2012-05-26 12:18 |只看该作者
firkraag 发表于 2012-05-26 12:01
mlock:
http://www.kernel.org/doc/man-pa ... s/man2/mlock.2.html


firkraag兄是干啥工作的啊,貌似对kernel很熟悉!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP