2014-02-28 2 views
2

"실행중인 스크립트"를 일시 중단하고 OS가 디스크에 상태를 저장 한 후 해당 상태를 읽고 계속해서 다시 시작하도록 할 수 있어야합니다 그곳은 떠났다. 이 시스템은 Linux를 실행하는 공유 메모리가 48GB 인 12 코어 컴퓨팅 노드입니다. 관리자 권한이없고 ssh를 사용하여 원격으로 로그인합니다. 스크립트와 그 안에있는 실행 파일은 GUI를 사용하지 않으며 모든 명령 행입니다. 알고있는 한 네트워크 나 소켓이 필요하지 않습니다.Suspend, 디스크에 저장, PBS가있는 슈퍼 컴퓨터에서 긴 작업 다시 시작

"실행중인 스크립트"(또는 "파이프 라인")는 bash 스크립트 또는 perl 스크립트 또는 C/C++ 실행 파일을 생성하는 두 가지 조합을 의미하며 아마도 openmp 병렬 처리를 사용하고있을 수 있습니다. 또는 gnu-parallel을 사용하여 병렬 실행 파일로 생성합니다. 그래서 우리는 하나의 실행 파일에 대해서가 아니라 병렬 또는 순차적으로 실행되는 일련의 실행 파일에 대해 설명합니다. 12 개의 코어에 대해 공통 메모리를 사용하여 암시 적 병렬 처리를 사용하고 여러 개의 unix 명령 (예 : awk)이 붙어 있습니다.

스케줄러 (MOAB)가 24 시간 이상 실행되는 모든 작업을 종료 (시스템 규칙)하기 때문에 파이프 라인을 일시 중지했다가 다시 시작해야합니다. 아이디어는 작업을 일시 중단하고 다시 대기열에 넣는 것입니다. 이 기술은 완벽하게 합법적입니다.

실행 파일의 소스 코드를 수정하여 상태를 저장하고 나중에 다시 시작하면 여러 가지 오픈 소스 실행 파일을 수정하여 'save-state-and-suspend'신호를 받아들이는 것이 현실적이지 않습니다. ImageMagick의 '변환'또는 'grep', 'sed', 'awk'및 perl! 또한, 하나의 실행 파일이 닫힌 소스이며 소스 코드도 없습니다.

그래서 실용적인 옵션은 소위 샌드 박스 환경에서 내 '스크립트/파이프 라인'을 실행하는 것입니다. QEMU (에뮬레이터)는 '최대 절전 모드'로 신호를 보내고 전체 메모리 및 CPU 상태를 디스크 (48GB는 문제가 아님)에 저장하고 일시 중단함으로써 현재 실행중인 모든 프로그램의 상태를 저장합니다.

나는 위의 어떤 전문가도 아니기 때문에 내 용어를 용서하거나 유효하지 않은 것을 말하면. 나는 단지 스케치하고있다.

요약 : '상태 저장'코드를 수정하지 않고도 Linux에서 복잡한 스크립트 작업을 일시 중단하고 다시 시작하는 방법에 대한 경험이있는 사용자에게 묻습니다. 이 솔루션은 또한 비교적 계산 상 효율적이어야하며, 즉 에뮬레이터를 구동하기 위해 많은 수퍼 컴퓨터 전력을 낭비하지 않게된다.

내가 위에서 말한 QEMU 솔루션이 괜찮다고 생각된다면, 가능하면 공개적인 ISO로부터 에뮬레이터 리눅스 이미지를 만들고 이미지를로드하고 'script', 에뮬레이터에게 20h 후에 'suspend/hibernate'라고 말한 다음, 일시 중지 상태에서 상태를 읽음으로써 에뮬레이터를 다시 시작하십시오. 이 모든 것, 이상적으로는 명령 줄이나 스크립트를 통한 것입니다.

실용적인 (주어진 설정에 대한) 다른 모든 솔루션도 환영합니다.

참고 : 관리자 권한은 없지만 내 homedir에 설치할 수 있으며 하드 디스크 공간이 많습니다. 또한 프로그램은 GUI를 사용하지 않으며 모든 명령 행이며 명시 적으로 네트워크 나 소켓이 필요하지 않다는 것을 알고 있습니다.

에뮬레이터를 사용한 솔루션의 긍정적 인 부작용으로, "파이프 라인"이 복잡한 작업없이 '샌드 박스'/ 에뮬레이터가 구현 된 모든 OS (예 : mac 또는 win)에 배포 될 수 있습니다 모든 것을 다시 컴파일하고 gnu-utils, bash, boost 등을 설치하는 과정. 나는이 상황에 여러 번 쌓여있다.

감사합니다. bliako.

답변

2

사용중인 pbs 버전은 확실하지 않지만 TORQUE는 BLCR (Berkeley Lab Checkpoint/Restart)과의 통합을 제공합니다. BLCR에서 가장 중요한 것은 모든 노드가 동일한 정확한 OS 이미지를 가지고 있다는 것입니다. TORQUE docs.

기본적으로 pbs_mom 데몬은 BLCR을 사용하도록 구성되며 작업을 중단 할 때마다 데몬은 BLCR을 사용하여 OS 내부 데이터 구조의 스냅 샷을 작성하여 정확한 프로세스의 상태. 동일한 지점에서 정확히 동일한 프로세스를 다시 시작할 수 있습니다.

+0

제공 한 docs 링크의 예를 따라했습니다. 나는 체크 포인트 (qhold jobID)로 말할 때마다 스케줄러가 체크 포인트 데이터를위한 디렉토리를 생성하도록 관리했다. 그러나이 디렉터리는 비어 있으며 검사 점 데이터는 거기에 쓰여지지 않습니다. BLCR이 커널에 없거나 Torque가 BLCR로 컴파일되지 않았다고 생각됩니다 (예 : http://docs.adaptivecomputing.com/torque/4-2-6/help.htm#topics/2-jobs/introToBLCR). .htm % 3FTocPath % 3D2.0 % 20 제출 % 20and % 20managing % 20jobs % 7C2.6 % 20Job % 20checkpoint % 20and % 20restart % 7C _____ 1) .qsub --version은 4.2.4.1을 제공하고 lsmod | grep blcr는 아무것도 표시하지 않습니다. – bliako

+0

pbs_mom 데몬을 빌드 할 때 blcr을 사용하여 구성 했습니까? – dbeer

+0

나는 잘 모르겠다. 나는 그저 저기에있는 사용자 일 뿐이며, 관리자는 그것에 대해 단서가없는 것처럼 보인다. 이것을 확인하는 방법이 있습니까? 또한 커널이 BLCR 또는 BLCR 커널 모듈이 존재하고로드되었는지 확인하는 방법이 있습니까? 이 모든 사항이 정상적으로 확인 되더라도 필요한 경우에 해당한다고 생각하십니까? bash 스크립트가 스케줄러에 제출되면 스크립트는 결과 파일 처리를 위해 쉘 명령 (awk, sed)과 함께 여러 병렬 또는 순차 프로세스 (대부분 openmp를 사용)를 생성하는 perl 스크립트를 실행합니다. 그런 경우 또는 1 명의 간부 만의 경우? – bliako