Linux 内核中哪里处理访问交换空间?

Linux 内核中哪里处理访问交换空间?

我是一名研究助理,这个问题对我们团队来说非常重要:

我们正在寻找一种在进程(即 python 程序)使用交换空间时注入延迟的方法。例如,如果在正常情况下,是将页面从交换空间换入主内存来处理它,我们需要在此之前进行延迟。 (我知道在现实世界中,在访问交换空间或主内存时在内核中进行延迟是没有意义的,但通过这样做,我们将能够模拟一些对我们来说很重要的东西。)

我之前做了什么:

我已经尝试printk在内核中的以下部分添加一条语句,但它们似乎都不是处理swap-inswap-out进程的确切位置。

  1. memory.c文件中,在函数中do_swap_page()。它并不总是有效。
  2. memcontrol.c文件中,在函数中mem_cgroup_swapin_charge_page。它仅在应用程序新分配交换空间时起作用。 (而不是在实际使用交换时)
  3. swap_state.c文件中,在函数中swapin_readahead(),也在函数中swap_vma_readahead()

即使进程正在使用交换空间,它们也不起作用。

注1:我使用的是最新版本的内核(6.0.9)。但我不认为不同版本的Linux内核会有不同。

注 2:我正在测量使用命令 所使用的交换量free -m。此外,文件中还提供了更多信息/proc/meminfo。所以,我确信我的进程正在使用交换空间,但我不知道如何在内核源代码中捕获它。

几周来我一直在寻找答案,但没有成功。非常感谢任何帮助。谢谢。

相关内容