디스크의 단일 프로세스 일시 중지/재개

디스크의 단일 프로세스 일시 중지/재개

때로는 다른 작업을 위해 일부 RAM을 임시로 확보하기 위해 Ubuntu 및 OS X 서버에서 메모리 집약적인 프로세스를 일시 중지하고 싶을 때가 있습니다. CPU 사용량만 걱정한다면 간단한 접근 방식을 Ctrl-Z사용하면 됩니다. 그러나 RAM을 확보하고(디스크에 기록하여) 프로세스를 다시 시작(디스크 -> RAM)할 수 있어야 합니다. 즉, 개별 프로세스를 "최대 절전 모드"로 설정해야 합니다. 이 작업을 수행하는 방법에 대한 단서가 있습니까? (CLI를 사용하는 것이 좋습니다.) 감사합니다.

답변1

찾으시는 검색어는 "신청 체크포인트".

저는 이를 수행할 수 있는 도구가 CryoPID이고고정된 PID2.

이 두 도구는 Linux에서만 사용할 수 있습니다.

나는 BSD나 OS X에서 비슷한 도구를 알지 못합니다.

답변2

단일 프로세스를 최대 절전 모드로 전환할 수 있는 범용 도구는 없으며 전체 시스템만 최대 절전 모드로 전환할 수 있습니다.

그러나 재부팅 시 프로세스 이미지가 저장되지 않는 것에 대해 신경 쓰지 않는다면 프로세스 이미지를 디스크에 저장하는 데 사용할 수 있는 내장 도구인 스왑이 있습니다. 스왑 공간이 충분한지 확인하세요. 메모리가 부족하고 프로세스가 비활성 상태인 경우(예: 정지 등의 이유로) 해당 메모리가 스왑 아웃됩니다.

프로세스가 오랫동안 비활성 상태일 가능성이 높고 어떤 시점에서는 빠른 응답 시간이 필요하다는 것을 알고 있다면 하나의 프로세스에 많은 양의 RAM을 할당하여 많은 양의 RAM을 강제로 해제할 수 있습니다. 단기 프로세스(예:

perl -e '$tmp = "a" x 999999999' # allocate about 1GB

스왑 아웃되는 항목을 제어할 수 없으므로 다른 프로세스가 스왑 아웃될 수 있습니다. Linux에서는 프로세스의 매핑된 페이지에 강제로 액세스하여 프로세스를 다시 바꿀 수 있습니다. 스크립트는이 답변다음을 수행합니다: 프로세스에 의해 매핑된 모든 페이지를 메모리에 로드합니다(여기에는 열린 파일이 포함됩니다. 필요하지 않은 데이터를 교체하는 것을 피하기 위해 매핑 정보를 기반으로 영역을 선택적으로 탐색할 수 있습니다. 참조).이 답변더 많은 정보를 알고 싶다면).

답변3

스왑 공간이 충분한지 확인하세요. 시스템이 비활성 페이지 교환 우선 순위를 지정하도록 설정되어 있는지 확인하십시오(vmswap=100). 그런 다음 프로세스를 일시 중지하는 것으로 충분합니다. 커널은 먼저 비활성 페이지를 교체합니다.

답변4

Mac OS X에서는 다음을 사용해 볼 수 있습니다.purge일부 (비활성) RAM을 확보하는 명령(Xcode와 함께 제공됨)입니다.

vm_stat
purge
vm_stat

관련 정보