1

必要なタスクをスケジュールするロジックを作成する方法:

  1. プロセッサ グループでlen(task_fifo)タスクをスケジュールします。pg
  2. pgプロセッサまでのpプロセッサがあり1 <= num_of_processors <= pます。
  3. プロセス グループを予約pg.reserve(num_of_slots, num_of_processors)するには、スロット数と、予約するプロセッサの数を知る必要があります
  4. ただし、ポリシーの状態n <= num_of_slots <= mは一度に予約される場合があります。
  5. 1 スロットで 1 タスクを実行

プロセッサのスロットと数を決定する方法 予約するキューの長さを決定したい 数学を使用して結果を決定するこのロジックをコーディングする方法を知りたい.

たとえばtask_fifo、最大 8 個のプロセッサでスケジュールできる 457 個のタスクがあるが、各プロセッサが最小で 100 個のタスク、最大で 1000 個のタスクをpg.reserve(115, 4)実行する場合、「NOOP」を均等にするためにダミー タスクを追加します。

これを知っているので、次のようにスケジュールできます

# min_slots = 100
# max_slots = 1000
# max_processors = 8

# Since 457 tasks cant be divided equally on 4 processors,
# 114 * 4 = 456 < 457 (is less)
# 115 * 4 = 460 > 457 (is more, but can add NOOPs)

reservation = pg.reserve(115, 4)

# So I add 3 'NOOP' tasks in to task fifo
task_fifo.append("NOOP")
task_fifo.append("NOOP")
task_fifo.append("NOOP")

reservation.run(task_fifo)

| task | 115 | 115 | 115 | 115 |  0  |  0  |  0  |  0  |
--------------------------------------------------------
| proc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |

タスクの長さがそれより長かった場合はmax_slots*max_processors、複数の予約でタスクを実行する必要があります。where8473タスクをスケジュールするには:

reservation1 = pg.reserve(1000,8)
reservation2 = pg.reserve(119,4)

tasks_fifo + ["NOOP"]*3

reservation1.run(tasks_fifo)
reservation2.run(tasks_fifo)

reservation1:

| task | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 |
----------------------------------------------------------------
| proc |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |

reservation2:

| task | 119 | 119 | 119 | 119 |  0  |  0  |  0  |  0  |
--------------------------------------------------------
| proc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |

予約する必要がある予約の数と、そのスロットとプロセッサの数を確認したいと考えています。

大変助かります!

4

0 に答える 0