先佔排程行為
先佔排程主要根據在佇列層次指定的參數: 部分佇列適用於先占,而其他佇列則不適用於先占。 一旦建立佇列階層,其他因素 (例如佇列優先順序及偏好的先占順序) 會決定應該先占佇列中的哪些工作。
有三種方法可以建立哪些佇列應該先被清空:
根據佇列優先順序- PREEMPTION 參數會將佇列定義為先佔或先佔,且先占是根據佇列優先順序,其中較高優先順序佇列中的工作可以先占較低優先順序佇列中的工作
根據偏好的順序- PREEMPTION 參數以偏好的順序定義可以先占其他佇列的佇列
明確地,依特定佇列- PREEMPTION 參數定義可以先占的佇列,以及哪些佇列
先占配置 | 行為 (behavior) |
---|---|
未啟用先占-未將任何佇列定義為先占,且未將任何佇列定義為先占 | 高優先順序工作不會先占已在執行中的工作 |
佇列定義為先佔,但未列出可先佔的特定佇列 | 此佇列中的工作可以由優先順序值較高的任何佇列中的工作先占 |
佇列定義為可先占,且指定一個以上可先占的佇列 | 此佇列中的工作只能由指定佇列中的工作先占 |
佇列定義為先佔,但未列出可先佔的特定佇列 |
|
佇列定義為先佔,並列出一個以上可以先佔的特定佇列,但未指定任何佇列喜好設定 |
|
佇列定義為先佔,且一個以上佇列已指定喜好設定號碼,指出偏好的先佔順序 |
|
佇列定義為先佔,或佇列定義為先佔,並配置具有最短執行時間的工作先佔 |
|
佇列定義為先佔,或佇列定義為先佔,並防止先占在特定時段內完成的工作 |
|
佇列定義為先佔式,或佇列定義為先佔式,並防止預先佔用具有指定執行時間的工作 |
|
個案研討: 三個具有不同優先順序的佇列
- 佇列 A 具有最高相對優先順序,值為 99
- 佇列 B 既是先佔也是先佔,且相對優先順序為 10
- 佇列 C 具有最低相對優先順序,預設值為 1
- A 可以先佔 B ,因為 B 可先佔且 B 的優先順序低於 A
- B 可以先占 C ,因為 B 是先佔的,且 C 的優先順序低於 B
- A 無法先占 C,即使 A 的優先順序高於 C,因為 A 不是先佔,也不是 C 先佔
使用中工作槽的計算
使用中的工作槽數決定是否可以啟動先佔工作。 可以配置計算使用中工作時段數目的方法,以確保可以啟動先佔工作。 當工作被先占時,它會暫停。 根據 lsb.resources 檔案中強制的限制,如果已暫停的工作仍計入系統中容許的工作總數,則暫停工作可能不足以讓先佔工作執行。
PREEMPT_FOR 參數用來變更工作插槽使用情形的計算,並在計算中忽略已暫停的工作。 這可確保如果符合限制,則先佔工作可以實際執行。
先占配置 | 對計算使用的工作時段的影響 |
---|---|
未啟用先占 |
|
已啟用先占 |
|
已啟用先占,且 PREEMPT_FOR=GROUP_JLP | 計算使用者群組使用中的每個處理器工作插槽,並比較結果與使用者層次指定的限制時,只會計算執行中工作。 |
已啟用先占,且 PREEMPT_FOR=GROUP_MAX | 計算此使用者群組使用中的工作槽,並比較結果與使用者層次指定的限制時,只會計算執行中工作。 |
已啟用先占,且 PREEMPT_FOR=HOST_JLU | 計算使用者群組使用中的工作插槽總數,並比較結果與主機層次指定的限制時,只會計算執行中工作。 已暫停的工作不會計入個別使用者的限制。 |
已啟用先占,且 PREEMPT_FOR=USER_JLP | 計算個別使用者使用中的每個處理器工作插槽,並將結果與使用者層次指定的限制相比較時,只會計算執行中工作。 |
預先佔用回填工作
當高優先順序佇列配置為執行具有資源或時段保留的工作且已啟用回填排程 ( lsb.params中的PREEMPT_JOBTYPE=BACKFILL ) 時,回填工作可以使用保留的工作時段。 配置具有工作的低優先順序佇列以先占回填工作可能會延遲在具有資源或插槽保留的高優先順序佇列中啟動工作。 LSF 容許此配置,但提供警告訊息。
佇列名稱 | 配置 | 優先順序 | 結果 |
---|---|---|---|
queueR | 具有資源或插槽保留 | 80 | 這些佇列中的工作保留資源。 如果已啟用回填排程,則具有已定義執行限制的回填工作可以使用資源。 |
queueB | 作為可先占的回填佇列 | 50 | queueB 中具有已定義執行限制的工作使用 queueR中工作所保留的工作插槽。 |
queueP | 作為先佔佇列 | 75 | 此佇列中的工作不一定有執行限制,而且可能會從具有保留的工作中取得資源。 |
為了保證可岔斷回填工作的執行時間下限, LSF 會在先占時暫停它們。 若要變更此行為,以便 LSF 在預先佔用時終止可岔斷的回填工作,您必須在 lsb.queues中定義參數 TERMINATE_WHEN=PREEMPT 。