작업을 배포하는 대신 각 노드를 완전히 채우도록 SGE 설정

작업을 배포하는 대신 각 노드를 완전히 채우도록 SGE 설정

원래는 실수로 Stack Overflow에 게시되었습니다. 해당 게시물의 응답은 하단의 PS를 참조하세요.

나는 이것을 한동안 검색했지만 답을 찾을 수 없습니다. 내가 가진 문제는 이것이다: 두 개의 12-CPU 머신으로 SGE가 설정되어 있다고 가정합니다. 그리드에 제출할 1개 CPU 작업이 두 개 있지만 다른 사용자는 12개 CPU 작업을 제출하려는 경우가 많습니다. 이는 여러 시스템에 걸쳐 분할될 수 없는 공유 메모리 작업입니다. 가끔은 두 가지 작업을 제출하고 각각 별도의 머신으로 이동하여 각각 11/12 CPU를 여유 공간으로 남겨두는 경우가 있습니다. 이렇게 하면 내가 작업하는 동안 다른 사람이 12-CPU 작업을 실행하는 것을 방지할 수 있습니다.

이 문제를 해결할 방법이 있나요? 나는 채우기 규칙을 사용하여 단일 qsub를 제어할 수 있다는 것을 알고 있습니다(따라서 채우기는 12-CPU qsub를 하나의 시스템에 유지하거나 여러 시스템에 분할하는 등으로 만들 수 있음). 하지만 별도의 qsub를 강제로 실행하는 비슷한 설정이 있습니까? 같은 기계로? 또한 특정 시스템을 명시적으로 요청할 수 있다는 것도 알고 있지만(내 생각에는 -h machinename 또는 이와 유사한 것임) 이보다 더 강력한 설정을 선호합니다.

도움을 주시면 감사하겠습니다. 감사해요!

추신: 스택 오버플로 게시물에서 스레드가 닫히기 전에 병렬 환경 할당_rule=$fill_up 사용을 제안하는 응답이 하나 나왔습니다. 시도하면서 뭔가 잘못한 것이 아니라면 이것이 문제를 만족시키지 못한다고 생각합니다. 내가 테스트한 바에 따르면 fill_up으로 설정하면 이는 단일 qsub 내에서 요청된 CPU가 가능한 경우 동일한 그리드 시스템에 배치되지만 다른 qsub의 CPU는 여전히 저부하 시스템(또는 무엇이든)으로 이동함을 의미합니다. 그리드가 선택), 빈 머신으로 이동할 수 있습니다. 이에 대한 테스트에는 몇 개의 단일 CPU 작업을 qsubb하고 5분 정도 기다린 후 몇 개를 더 제출하는 작업이 포함되었습니다. 때때로 첫 번째 그룹은 동일한 컴퓨터에 도달하지만(컴퓨터 로드가 실시간이 아니기 때문에 모두 동일한 저부하 컴퓨터로 전송된 것 같습니다.) 두 번째 그룹은 일관되게 동일한 컴퓨터로 이동하지 않습니다. 첫 번째 그룹과 동일한 기계입니다.

답변1

스케줄러의 기본값로드_포럼라설정은np_load_avg로드 평균이 가장 낮은 노드에 새 작업을 할당합니다. 대신 노드를 채우려면 다음을 설정할 수 있습니다.로드_공식에게슬롯. 현재 스케줄러 설정을 보려면:

qconf -ssconf

설정을 수정하려면:

qconf -msconf

관련 정보