Linux 커널이 내 프로세스의 메모리 페이지를 교환하지 않는다고 가정할 때 RAM의 물리적 위치가 변경되지 않는다고 가정할 수 있습니까, 아니면 커널이 페이지를 이동할 수 있습니까?
내가 묻는 이유는 내가 memtester
처음부터 내 자신의 페이지를 작성하는 것을 고려 중이고 새로 할당된 페이지가 프로세스가 이전에 테스트한 RAM의 동일한 물리적 위치에 있을 가능성이 있는지 알고 싶기 때문입니다.
답변1
나는 할당된 페이지의 물리적 주소가 변경되어 후속 할당에서 이전에 사용된 물리적 페이지를 재사용할 수 있는 두 가지 상황을 알고 있습니다.
- (말씀하신 대로) 교체하세요
- 압축
전자는 메모리를 잠그면 모든 경우에 방지할 수 있습니다.mlock()
또는mlockall()
. 후자의 경우,이것vm.compact_unevictable_allowed
sysctl
또한 0으로 설정해야 합니다(압축이 활성화된 경우 기본적으로 활성화됨).
투명 페이지조각 모음은 스와핑과 압축을 모두 사용하지만 자체 항목을 많이 추가합니다. sysctl
전역적으로 압축을 비활성화하고 테스트 중인 메모리를 잠그는 것 외에 필요한지 여부는 알 수 없습니다.