【发布时间】:2018-12-08 19:58:42
【问题描述】:
我正在尝试通过破解页表中的引用位来计算特定页面集的点击量。是否有任何系统调用或任何其他方式来取消设置引用位(在类 UNIX 系统中)?
页表是计算机操作系统中的虚拟内存系统用来存储虚拟地址和物理地址之间的映射关系的数据结构。 (https://en.wikipedia.org/wiki/Page_table)
在类 unix 系统中,每个页表条目都有一个位关联,称为“引用”位,它指示在该位未设置后是否访问了页面。 linux 内核会定期取消设置这些引用位,并在此之后检查一段时间以了解哪些页面已被访问,以检测“热”页面。但是这个信息是非常粗粒度和低精度的,因为它没有说明访问次数和时间。
我想通过取消设置引用位来计算在较短时期内对特定页面的访问次数,然后检查这些页面是否在短时间内被访问过。
因此,我想知道是否有任何系统调用或 CPU 中断提供了取消设置“参考位”的方法。否则,我需要深入内核,看看那里发生了什么。
【问题讨论】:
-
请解释(也许有一些minimal reproducible example)什么确切是你的参考位以及你如何破解它们。 AFAIK,没有系统调用来获取它们(即使mincore(2) 正在做类似的事情)。所以编辑你的问题来改进它(没有更多细节不清楚)。系统调用列表见syscalls(2)
-
请提供有关您的目标的更多详细信息。
-
还可以查看proc(5)。也许你可能对
/proc/self/smaps感兴趣 -
@BasileStarynkevitch 刚刚添加了有关该问题的更多信息。
-
@wallyk 刚刚添加了有关该问题的更多信息。
标签: linux-kernel kernel-module page-tables