免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19647 | 回复: 135

[内存管理] page cache问题 [复制链接]

论坛徽章:
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
发表于 2012-05-24 21:16 |显示全部楼层
ram-based的文件系统比如  /proc  /sys

是否使用page cache?

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
发表于 2012-05-24 23:09 |显示全部楼层
embeddedlwp 发表于 2012-05-24 21:16
ram-based的文件系统比如  /proc  /sys

是否使用page cache?


用。

而且ramfs中,address space的基数树里,page进去就不出来。

但是tmps中,page可以出来,出来后换成一个swap的entry

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
发表于 2012-05-24 23:23 |显示全部楼层
而且后来的版本中,page cache的lru链中,都新加了一条unevictable,主要就是为的ramfs这种设置的。

当内存太多时,kswapd扫起lru来费劲,索性就单设了个unevictable链,链中的page不参与kswapd。

论坛徽章:
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
发表于 2012-05-25 10:31 |显示全部楼层
回复 2# 塑料袋


那是不是说只要有address_space object就意味着使用page cache?


   

论坛徽章:
0
发表于 2012-05-25 16:01 |显示全部楼层
对,比如在脏页刷写时,会判断脏页如果所属于ramdisk是不会刷写的。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2012-05-25 16:47 |显示全部楼层
回复 1# embeddedlwp
ram-based的文件系统比如  /proc  /sys

是否使用page cache?

你没有好好的看http://bbs.chinaunix.net/thread-3747484-1-1.html这个帖子里面的文档
   

论坛徽章:
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
发表于 2012-05-25 18:14 |显示全部楼层
本帖最后由 embeddedlwp 于 2012-05-25 18:14 编辑

回复 5# 25641463


你这个“会判断脏页如果所属于ramdisk是不会刷写的”在哪里看到的啊,ramdisk不writeback因为他的那个address_space object根本没有writepage函数


   

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
发表于 2012-05-25 20:58 |显示全部楼层
embeddedlwp 发表于 2012-05-25 18:14
回复 5# 25641463


不,你搞错了,ramdisk和address space没有关系。

address space具体是什么内容,是由filesystem决定的

论坛徽章:
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
发表于 2012-05-25 21:13 |显示全部楼层
回复 8# 塑料袋


首先感谢塑料袋大牛最近各种指点哈。
我想address_space object is used to group and manage page in page cache and traces of pages in one file
address_space_operations中的方法才是由具体文件系统实现的吧

如果不是address_space object,您是依据什么看出ram-based的file system使用page cache的呢?


   

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
发表于 2012-05-25 21:47 |显示全部楼层
page cache具体指什么首先就定义模糊。

page至少会在两个地方出现:
1) 查找时用的结构,或者是2.6里的基数树,或者是以前的hash表,总之其目的为了查找
2) 页轮换时用的结构,或者是早期代码里全局的lru链,或者是较新代码里分布于每个zone的lru链

如果page cache指的这两个的交集的话,那么ramfs不在page cache中。 ramfs这个文件系统决定了,其基数树中的页不在通常的lru链,而是在专门设置的unevictable链。但是ramdisk不然,ramdisk上的普通文件系统决定了,页即在基数树,又在通常的lru链。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP