- Xトークンの容量を購入できるとしましょう。トークンを購入するときは、一度に 3 か月分購入します。
- ジョブは、1 つまたは複数のトークン (通常は最大 16) を要求できます。
- ジョブが完了するまでに長い時間 (数日) かかることもあれば、短い時間 (数分) かかることもあります。
- 使用を開始する前に、一定量 (X) のトークンを購入する必要があります。
- 他の仕事よりも重要な仕事があります。つまり、早く終わらせるために優先すべき仕事があります。
- いつでもできるだけ少ないトークンを使用したいと考えています。このようにして、購入するトークンを減らしてお金を節約できます。
- ジョブは一時停止および再開できます。ジョブが一時停止されている場合、トークンは他のジョブで使用できます。
- ユーザーはジョブを作成し、優先順位を選択しました。アルゴリズムは、いつどのジョブを実行するかを選択します。
- ※時間のかかる仕上げ作業よりも、早い仕上げ作業の方が多いと思われます。
- ※終了までに時間がかかる案件は優先度が低くなる場合がございます。
(※これらのルールには例外がある場合があります)
X ができるだけ小さくなるようにスケジューリング システムを作成する必要があります。
(非常に小さい) 例:
ジョブ A のコストは 4 トークンで、優先度は低く、完了までに 5 日かかります。ジョブ B のコストは 2 トークンで優先度が高く、完了するまでに 1 日かかります。ジョブ C は 2 トークンかかり、優先度が高く、完了するまでに 2 日かかります。
ジョブ A は、ジョブ C の前に開始されるジョブ B の前に開始されます。
解決策: ジョブ A を一時停止し、B と C を実行します。Bが1位、Cが2位。次に、A を再開して終了させます。
使用されたトークンの総数: 4。
これは、すべてのジョブを一度に実行する場合 (8 トークンのコスト) と比較して、50% のコストがかかります。
このスケジューラー/プライオリタイザーはどのように作成すればよいですか?