장래에 동일한 프로세스 를 재개하려는 의도로 CPU 또는 실제 메모리 리소스를 소비하지 않도록 장기 실행 프로세스를 중지 하고 싶습니다.
CPU 부분을 사용 SIGSTOP
하여 SIGCONT
신호를 얻을 수 있다는 것을 알고 있지만 (정지 된) 프로세스의 개인 RSS 메모리를 즉시 페이지 아웃 (프로세스 더티 페이지의 경우 스왑 아웃 ) 할 수 있습니까?
장래에 동일한 프로세스 를 재개하려는 의도로 CPU 또는 실제 메모리 리소스를 소비하지 않도록 장기 실행 프로세스를 중지 하고 싶습니다.
CPU 부분을 사용 SIGSTOP
하여 SIGCONT
신호를 얻을 수 있다는 것을 알고 있지만 (정지 된) 프로세스의 개인 RSS 메모리를 즉시 페이지 아웃 (프로세스 더티 페이지의 경우 스왑 아웃 ) 할 수 있습니까?
답변:
검사 점 / 복원이라는 기술을 살펴볼 수 있습니다. 이를 통해 실행중인 프로세스를 수행하고 상태를 파일 세트에 저장 한 후 나중에 복원 할 수 있습니다.
이를 사용하려면 우선 criu [ git , wiki ] 프로그램 ( yum install criu
또는 apt install criu
) 을 설치하십시오 .
실행중인 프로세스를 체크 포인트하려면 파일을 보유 할 빈 디렉토리를 작성하고 해당 디렉토리로 cd하십시오.
mkdir /var/tmp/checkpoint
cd /var/tmp/checkpoint
이제 실행중인 프로세스를 체크 포인트하십시오. 이 경우 관련 tty가있는 쉘에서 프로세스를 실행하기 때문에 --shell-job을 사용하고 있습니다.
criu dump -t 404 --shell-job
404는 내가 체크 포인트하려는 프로세스의 pid입니다. 이렇게하면 실행중인 프로세스가 종료되고 / var / tmp / checkpoint 디렉토리가 복원하는 데 필요한 파일 세트로 채워집니다.
프로세스를 복원하려면 검사 점 파일이있는 디렉토리에 있는지 확인하고 복원을 수행하십시오.
cd /var/tmp/checkpoint
criu restore --shell-job
프로세스는이 터미널이 실행 된 터미널에서 중단 된 지점에서 처리됩니다. 이 실행중인 프로세스를 종료 한 criu restore --shell-job
후 다시 실행 하면 프로세스가 다시 체크 포인트로 되돌아가 다시 시작됩니다.
도움이 되었기를 바랍니다.
/tmp
tmpfs (메모리 / 스왑 공간으로 지원) 인 경우. 일반적인 디스크 백업 파일 시스템을 체크 포인트 vmtouch -e
하면 페이지 캐시에서 페이지를 제거하는 데 사용할 수 있지만 여전히 임시 RAM을 추가로 사용합니다. (않는 한 criu
...) O_DIRECT와 (직접 I / O를 할 수있는 옵션이 있습니다)