실행하기에 충분한 여유 코어가 있을 때까지 bash 스크립트를 지연하는 방법은 무엇입니까?

실행하기에 충분한 여유 코어가 있을 때까지 bash 스크립트를 지연하는 방법은 무엇입니까?

저는 학생이고 NGS 파이프라인을 벤치마킹하여 할당된 코어 수와 입력 파일 크기를 기반으로 성능을 모니터링하고 싶습니다. 그래서 저는 bash 스크립트를 작성하고 다양한 nr_of_cores 매개변수와 입력 파일을 사용하여 여러 번 호출하고 완료 시간과 기타 통계를 기록했습니다. 다양한 장면을 완성하는 데 전체 작업이 하루 정도 걸렸습니다. (물론 대부분의 시간은 단일 코어에서 가장 큰 파일을 실행하는데 소비되기 때문에 이 시간 동안 전체 서버를 차단하는 것은 아닙니다)

이를 실행하기 위해 공유 64코어 서버에 액세스할 수 있습니다. 그러나 공유 서버의 무료 코어 수는 시간과 프로젝트를 완료하려는 사람들에 따라 크게 다릅니다. (내가 테스트한 가장 높은 nr_of_cores는 작은 파일로 36이었습니다.)

내 질문:명령을 실행하기 전에 [X] 코어를 사용할 수 있다는 것을 알 때까지 내 bash 스크립트를 기다리게 하는 쉬운 방법이 있습니까? 나는 이런 식으로 더 신뢰할 수 있는 데이터를 얻을 수 있고, 더 긴급한 작업을 실행해야 하는 사람들의 속도를 늦추지 않을 것이며, 오늘이 htop을 통해 볼 때까지 기다리지 않고 언제든지 스크립트를 시작할 수 있다고 생각합니다. 느린 하루.

감사해요!

답변1

나중에 시스템을 실행하도록 지시할 수 있고 시스템 관리자가 현명하고 설치되어 있다고 가정하면 at다음 명령을 사용하여 로드 수준을 충분히 낮게 얻을 수 있습니다(기본적으로 0이지만 시스템 관리자는 임계값에 대해 어떤 값이든 설정할 수 있음) ) :

batch << EOF
<command>
EOF

그 외에 제가 아는 유일한 방법은 부하 평균을 직접 폴링하고 부하 평균이 특정 임계값 아래로 떨어지면 명령을 실행하는 것입니다. 이 경로를 선택하기로 결정한 경우 확인하려는 것은 /proc/loadavg1분 평균을 제공하는 의 첫 번째 필드입니다.

관련 정보