cron의 한 가지 문제점은 cron이 한 번에 합리적으로 실행될 수 있는 작업이 더 있는지 여부에 신경 쓰지 않는다는 것입니다. 어쨌든 작업을 생성하므로 모든 작업의 성능이 저하됩니다.
cron과 같은 스케줄러를 작성하고 싶지만 머신이 실제로 처리할 수 있는 것만으로 생성이 제한된다고 가정해 보겠습니다. 현재 처리할 수 없는 작업은 연기된 후 다시 시도됩니다.
예를 들어 5분마다 실행되는 작업이 10개 있다고 가정합니다. 실제로 기계는 한 번에 5개만 처리할 수 있습니다. 예를 들어 11시 5분에는 10개의 작업을 모두 생성하는 대신 5개의 작업만 생성합니다. 그러나 몇 초마다 CPU 로드가 감소했는지 확인합니다(원래 5개 작업 중 일부가 완료되었으므로). 그렇다면 이전에 지연된 작업이 생성됩니다. 11시 5분에 실행되어야 하는 모든 작업이 실행될 때까지 이 작업을 반복합니다. 또는 다음 인스턴스가 실행되기 전에 실행할 수 없는 작업(이 경우 11시 10분)은 실행되지 않습니다(점프 오버).
내가 제약하고 싶다면모두그러한 작업이 CPU의 50% 이상을 사용하지 않는 경우 cgroup을 사용하는 것이 이를 달성하는 한 가지 방법인 것 같습니다.
질문: 현재 cgroup CPU 용량이 얼마나 사용되고 있는지 쿼리할 수 있는 방법이 있습니까? 예를 들어, 스케줄러가 5개의 작업을 생성하고 5개의 작업이 전체적으로 50%의 80%만 사용하는 경우 현재 50%의 20%가 낭비되기 때문에 스케줄러는 하나 이상의 작업을 더 생성할 수 있습니다.