Chinaunix
标题:
关于page cache mapcount的问题?
[打印本页]
作者:
xbs665
时间:
2015-08-07 16:06
标题:
关于page cache mapcount的问题?
最近对page cache 比较疑惑
通过mmap可以映射file,在需要的时候page fault 分配page,有多个进程mmap的话就会增加page的mapcount并会修改page table,这个page被多个进程share,在算PSS的时候就可以page size/mapcount。
问题: 在多个进程通过read write访问文件时,会不会增加mapcount的值?此时还会修改page table吗?
作者:
夕阳下的孤影
时间:
2015-08-12 23:09
我的理解是,只在第一次发生缺页异常建立页表的时候,会修改mapcount的值,后续的read/write操作不会再修改。
因为mapcount表示的是被进程映射的次数-1
作者:
xbs665
时间:
2015-08-13 11:11
你的意思是在非映射文件读写的情况下,也会发生page fault?我再ULK上没看到这方面的内容,上面说就调用do_generic_file_read拷贝到缓冲区。do_generic_file_read也会去page cache里找,也会分配page 加到页缓存
。此时page 的map count变化吗(多进程读写)
映射情况很好理解在read write 情况下pte 为none 产生page fault 然后去page cache里找,找到就将page结构的mapcount+1,没找到就分配页。
作者:
镇水铁牛
时间:
2015-08-13 21:07
你的意思是在非映射文件读写的情况下,也会发生page fault?
是的,page fault会有多种场景去fix,如anony page。
作者:
夕阳下的孤影
时间:
2015-08-16 18:19
回复
3#
xbs665
mapcount表示的是被多少个进程的页表映射了,而page cache是内核态的概念,不属于任何进程,所以不会修改mapcount的值。
至少目前我没有看到,在产生预读的时候需要修改mapcount。
如果你还有什么发现,欢迎交流
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2