我是一名研究助理,这个问题对我们团队来说非常重要:
我们正在寻找一种在进程(即 python 程序)使用交换空间时注入延迟的方法。例如,如果在正常情况下,是将页面从交换空间换入主内存来处理它,我们需要在此之前进行延迟。 (我知道在现实世界中,在访问交换空间或主内存时在内核中进行延迟是没有意义的,但通过这样做,我们将能够模拟一些对我们来说很重要的东西。)
我之前做了什么:
我已经尝试printk
在内核中的以下部分添加一条语句,但它们似乎都不是处理swap-in
和swap-out
进程的确切位置。
- 在
memory.c
文件中,在函数中do_swap_page()
。它并不总是有效。 - 在
memcontrol.c
文件中,在函数中mem_cgroup_swapin_charge_page
。它仅在应用程序新分配交换空间时起作用。 (而不是在实际使用交换时) - 在
swap_state.c
文件中,在函数中swapin_readahead()
,也在函数中swap_vma_readahead()
。
即使进程正在使用交换空间,它们也不起作用。
注1:我使用的是最新版本的内核(6.0.9)。但我不认为不同版本的Linux内核会有不同。
注 2:我正在测量使用命令 所使用的交换量free -m
。此外,文件中还提供了更多信息/proc/meminfo
。所以,我确信我的进程正在使用交换空间,但我不知道如何在内核源代码中捕获它。
几周来我一直在寻找答案,但没有成功。非常感谢任何帮助。谢谢。