2014-09-04 13 views
3

qsub 작업을 StarCluster/SGE 클러스터에서 수행 할 때 각 노드가 한 번에 최대 하나의 작업을 수신하도록하는 쉬운 방법이 있습니까? 여러 개의 작업이 메모리 부족 (OOM) 문제로 이어지는 동일한 노드에서 끝나는 문제가 있습니다.SGE (StarCluster/SunGridEngine)에서 노드 당 하나의 작업 보장

나는 -l cpu=8을 사용해 보았습니다.하지만 USED 코어의 수를 상자 자체의 코어 수만 확인하지는 않았습니다.

또한 -l slots=8 시도하지만 내가 얻을 :

Unable to run job: "job" denied: use parallel environments instead of requesting slots explicitly. 

답변

4

(.starcluster/설정)이 섹션을 추가 :

[plugin sge] 
setup_class = starcluster.plugins.sge.SGEPlugin 
slots_per_host = 1 
1

크게 클러스터 리소스는 메모리 제한 등 그러나 시도하는 한 가지 각각에 대해 많은 메모리를 요청하는 것입니다 즉, 구성 방법에 따라 달라집니다 작업 :

-l h_vmem=xxG 

이 해당 노드에서 메모리의 대부분은 이미 다른 이전에 실행중인 작업에 의해 요구되는 미덕 노드에서 실행에서 다른 작업을 제외의 부작용이있을 것이다.

요청한 메모리가 노드의 허용 한도를 초과하지 않았는지 확인하십시오. 오류의 경우 qstat -j <jobid>의 출력을 검사하여이 한계를 우회하는지 확인할 수 있습니다. 설정 파일에서 qconf -aattr queue slots "[nodeXXX=1]" all.q

+0

이 더 있습니까 –

+0

제한된 노하우로 qsub를 사용하는 노드 당 1 슬롯으로 제한하는 직접적인 방법이 없습니다. SGE가 부하 분산을 처리한다는 아이디어가 있습니다. 위의 메모리 트릭의 대안은 병렬 환경을 사용하고 작업 당 많은 슬롯을 요청하는 것입니다. 따라서 SGE를 속여 노드가 가득 찼다 고 생각하게 만듭니다. 또는 SGE에 대한 관리자 액세스 권한이있는 경우 노드 당 슬롯이 1 개 할당 된 다른 대기열을 만드는 것이 가장 좋은 해결책 일 수 있습니다. 방금 내가 가진 또 다른 아이디어는 ...'-l hostname = '옵션을 사용하여 특정 호스트를 타겟팅 할 수 있지만 bash 스크립팅이 필요합니다. – Vince

-1

내가 사용하는 일에 각각 내 노드 슬롯의 수를 설정하여이를 달성 방법은`h_vmem`의 설정이 충분하기를 바라는 것보다 노드 당 하나의 작업에 대해 더 명백하게 나타낼 수 있습니까? 이것은 또한 약간 무서운 것입니다 : "h_vmem이 대기열에서 실행중인 작업에 의해 초과되면, SIGKILL 신호를 통해 중단됩니다". 슬롯 메커니즘이 사용하는 것이 옳은 것처럼 보입니다.