현재 메모리 내용을 교체 불가능으로 표시할 수 있나요?

현재 메모리 내용을 교체 불가능으로 표시할 수 있나요?

배경: 내 Linux(ubuntu) 워크스테이션에서 물리적 RAM보다 더 많은 메모리를 할당하여 몇 가지 실험을 실행하고 싶습니다.하지만나는 GUI에서 다른 "일반적인" 작업을 수행했습니다.

질문: 스왑 공간이 충분합니다. 실험 교환이 시작되면 GUI가 매우 느려집니다. 나는 "정상적인" 것들이 스왑 공간 안팎으로 끊임없이 이동하고 있다는 것이 문제라고 생각합니다. 나는 OS가 "일반" 메모리가 아닌 실험용 메모리만 교환하기를 원합니다.

질문: 특정 시점(예: 실험 시작 전)에 할당된 모든 메모리를 "스왑 불가능"으로 표시할 수 있나요? 이 작업이 페이지 수준에서 수행되는지 아니면 프로세스 수준에서 수행되는지는 중요하지 않습니다.

당신의 도움을 주셔서 감사합니다!

답변1

스왑 불가능 메모리는 "고정" 메모리라고 하며, 이는 DMA(직접 메모리 액세스)에 일반적으로 사용되는 메모리 유형입니다. 다음을 사용하여 가상 주소의 특정 부분을 표시할 수 있습니다.mlock(2)또는 mlockall(2)기능.

예를 들어 특정 애플리케이션 메모리를 고정됨으로 표시할 수 있습니다.GDB 사용스크립트 mlock.gdb:

call mlockall(3)
detach

다음과 같은 명령을 사용하여 애플리케이션 메모리를 잠급니다.

gdb --pid ${PID} --batch -x mlock.gdb

관련 정보