UNIX系统调用可以取消设置页表中特定页的参考位吗?

时间:2018-06-29 15:17:00

标签: linux-kernel kernel-module page-tables

我正在尝试通过入侵页面表中的参考位来计算一组特定页面的点击数。是否有任何系统调用或任何其他方式来取消设置参考位(在类似UNIX的系统中)?

页表是计算机操作系统中的虚拟内存系统用来存储虚拟地址和物理地址之间的映射的数据结构。 (https://en.wikipedia.org/wiki/Page_table

在类unix的系统中,每个页表条目都有一个相关联的位,称为“参考”位,该位指示由于未设置该位而访问了某个页。 linux内核会定期重置这些参考位,然后检查一段时间以了解访问了哪些页面,以便检测“热”页面。但是此信息非常粗糙且精度很低,因为它没有说明访问次数及其访问时间。

我想通过设置参考位来计算在较短的时期内对特定页面的访问,然后检查是否在短时间内访问了页面。

因此,我想知道是否有任何系统调用或CPU中断提供了取消设置“参考位”的方法。否则,我需要深入研究内核,以了解发生了什么。

1 个答案:

答案 0 :(得分:1)

没有用于重置页面参考位的API。页面管理是内核调优的一个非常棘手的方面,没有人希望对其进行修改。当然,您可以根据需要修改内核。

相反,您可以研究Valgrind,它是用于运行单个程序的调试和概要分析工具。通常,它会检测到细微的内存错误,例如在释放动态内存块后检测其使用情况。

如果您需要整个系统的页面管理信息,我认为最方便的解决方案是破解内核。