저는 연구 조교이며 이 질문은 우리 팀에게 매우 중요합니다.
우리는 프로세스(예: 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
. 따라서 내 프로세스가 스왑 공간을 사용하고 있다고 확신하지만 커널 소스에서 이를 포착하는 방법을 모르겠습니다.
나는 성공하지 못한 채 몇 주 동안 답을 찾고 있었습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사해요.