cron の 1 つの問題は、cron が一度に合理的に実行できるジョブがさらにあるかどうかを気にしないことです。とにかくジョブを作成するので、すべてのジョブのパフォーマンスが低下します。
cronのようなスケジューラを作成したいのですが、マシンが実際に処理できるだけで生成が制限されるとしましょう。現在処理できないジョブは延期され、再試行されます。
たとえば、5分ごとに実行されるジョブが10個あるとします。実際、機械は一度に5つしか処理できません。たとえば、11時5分には10個のジョブをすべて作成するのではなく、5個のジョブのみを作成します。ただし、数秒ごとにCPU負荷が減少したことを確認してください(元の5つのタスクの一部が完了したため)。その場合、以前に遅延したジョブが作成されます。 11:05に実行する必要があるすべてのタスクが実行されるまで、このタスクを繰り返します。または、次のインスタンスが実行される前に実行できないジョブ(この場合は11:10)は実行されません(ジャンプオーバー)。
制約したい場合みんなそのようなタスクがCPUの50%以上を使用しない場合、cgroupを使用することがこれを達成する1つの方法であるようです。
質問:現在、cgroup CPU容量がどのくらい使用されているかを照会する方法はありますか?たとえば、スケジューラが5つのジョブを作成し、5つのジョブが全体で50%の80%しか使用していない場合、現在50%の20%が無駄になるため、スケジューラはさらに1つ以上のジョブを作成できます。