CLI 애플리케이션이 있고 일부 작업(예: 미디어 파일 처리 등)을 수행하고 싶다고 가정해 보겠습니다. 애플리케이션 인스턴스를 실행할 때 CPU의 20%를 소비합니다. 나머지 80%는 유휴 상태입니다.
나는 거의 모든 CPU를 사용하기 위해 가능한 한 많은 애플리케이션 인스턴스를 실행할 수 있는 일종의 프로세스 관리자를 원합니다. 애플리케이션은 무엇을 해야 할지, 형제를 방해하지 않는 방법을 알고 있지만 자체적으로 생성/관리할 수는 없습니다.
이런 매니저가 있나요? 저는 Supervisor를 사용하여 각 응용 프로그램의 인스턴스 하나를 사용하여 다양한 응용 프로그램의 고정 세트를 실행해 왔지만 CPU 가용성에 따라 동일한 응용 프로그램의 다양한 인스턴스를 실행하는 데 사용할 수 있는지 여부는 알 수 없습니다.
답변1
예를 들어, 최대 치사율을 위해 일부 소프트웨어가 있습니다. HTCondor
그러나 이러한 프레임워크는 상황에 따라 필요한 것보다 설정 비용이 더 높고 학습 곡선이 더 긴 경우가 많습니다.
더 간단하지만 덜 유연한 솔루션은 현재 CPU 로드를 확인하고 이에 따라 wait
프로세스를 종료할지 아니면 하나 이상의 작업을 생성할지(그런 다음 wait
프로세스가 종료되도록) 결정하는 작은 스크립트를 작성하는 것입니다. 이 스크립트는 유사한 것에서 HTCondor
발전 했을 수 있습니다.
Makefile
첫 번째를 사용한 다음 make -j 4 ...
각 "작업"이 CPU의 20% - 25%를 차지한다는 점을 알고 사용하는 것이 더 간단할 수 있습니다 . 이는 작업이 얼마나 많은 CPU를 사용하는지 알고 있고 작업을 모두 나열할 수 있다고 가정합니다 . 따라서 작업 목록에서 생성 Makefile
할 수 없으면 그다지 유연하지 않습니다 .Makefile