Linux/Unix 시스템에서 프로세스를 메모리 스왑으로 명시적으로 이동할 수 있습니까? swap*
도구를 조사했지만 kill
내가 원하는 모든 작업을 수행하지는 않습니다.
예: 프로세스가 현재 실행 중이고 RAM에 맞지 않는 FOO
다른 프로세스를 시작하려고 하므로 교체됩니다. 이제 더 빠르게 실행하고 싶기 때문에 BAR
먼저 스왑 공간으로 이동한 다음 실행하고 싶습니다 . 종료 후 교환을 취소하고 싶습니다 .BAR
FOO
BAR
BAR
FOO
답변1
Linux에서 메모리의 특정 부분을 스왑으로 이동하도록 요청하는 방법을 모르겠습니다. 그러나 그 반대도 가능합니다. 간단히 실행하여 캐싱을 위해 BAR 파일을 명시적으로 미리 로드할 수 있습니다 cat /path/to/file >/dev/null
.
BAR이 이미 실행 중이고 부분적으로 교체된 경우 Linux에서는 읽기를 통해 해당 페이지가 로드되도록 예약할 수 있습니다. 바라보다/proc/BAR_PID/mem
Linux에서 /proc/$pid/mem을 읽는 방법은 무엇입니까?
또는 BAR이 빠르게 소비할 수 있도록 일부 메모리를 사용하려면 많은 양의 메모리를 할당하는 프로그램을 시작할 수 있습니다. 커널이 다른 프로세스를 교체하거나 디스크 캐시에서 유용한 파일을 제거하기로 결정할 수 있으므로 이는 이상적이지 않습니다. 최상의 결과를 얻으려면 명시적으로 교체하려는 항목을 교체하기 전에 이 작업을 수행하고 FOO()를 일시 중지하세요. 약 2×1234567바이트의 메모리와 변경 사항을 할당합니다.kill -STOP FOO_PID
perl -e '$a = "a" x 1234567'