Sin*_*ngh 24 linux linux-kernel page-caching
我的问题是这个的扩展如何操纵Linux中的页面缓存?
我试图做一个小项目,旨在限制每个文件使用的页面缓存的大小.我使用的方法如下 -
我希望这段代码可以释放页面并释放内存,但这似乎不会发生.例如,如果我读取一个大小为25MB的文件并且我将此文件的页面缓存大小限制为512页(2MB),那么我希望在可用内存中看到只有2MB的更改(free -m ).我所看到的是完整的25MB被吃掉并显示在free命令中.
我还应该做些什么来确保满足我的要求?我还没有考虑过脏页面,因为我甚至无法让它读取(cat the file).任何指针都会有所帮助.
PS - 我正在使用linux 4.0进行这个项目.
您可能需要做的不仅仅是delete_from_page_cache() + try_to_unmap() + put_page() ...
查看Shrink_page_list() 的行为方式,包括对page_check_references()的检查:
更多信息请参见: 如何从映射它的所有 PTE 中取消映射 struct page