關於前置和後置執行處理
前置及後置執行處理特性由兩種類型組成:
- 工作型前置及後置執行處理程序,適用於循序工作,且僅在第一個執行主機上執行。
- 主機型前置及後置執行處理,適用於平行工作並在所有執行主機上執行。
您可以使用前置及後置執行處理程序,在批次工作啟動之前或完成之後執行指令。 此特性的一般用法包括下列各項:
- 保留無法在 LSF 中直接配置的資源,例如磁帶機和其他裝置
- 除了 LSF 直接支援的決策之外,還制定工作啟動決策
- 建立及刪除工作的暫存目錄
- 根據前置執行指令的結束碼自訂排程
- 檢查軟體授權的可用性
- 指派工作以在 SMP 機器上的特定處理器上執行
- 傳送工作執行所需的資料檔案
- 在工作執行之前及之後修改系統配置檔
- 使用後置執行指令來清除前置執行指令或工作所留下的狀態
任何可執行的指令行都可以作為前置執行或後置執行指令。 依預設,指令會在與工作相同的使用者帳戶、環境、起始目錄及工作目錄下執行。
在應用程式設定檔或 lsb.params中定義 JOB_INCLUDE_POSTPROC 時,當工作處於後置執行階段 (一般工作的「完成」狀態) 時,會將工作視為 RUN 狀態。
工作型前置及後置執行處理
可以在佇列、應用程式及工作層次定義工作型前置執行及後置執行指令。
對於 UNIX 及 Linux,指令路徑最多可以包含 4094 個字元,或者對於 Windows ,最多可以包含 255 個字元,包括 %J (job_ID) 及 %I (index_ID) 的目錄、檔名及展開值。
當工作可調整大小時,會忽略工作成長要求。 不過,可以處理工作收縮要求。 不論任何一種情況, LSF 都不會呼叫工作調整大小的通知指令。
下圖顯示工作型前置及後置執行處理的預設行為 (未啟用特性):

下列範例說明工作型前置和後置執行處理在佇列或應用程式層次如何運作,以在工作執行之前設定環境,以及在工作執行之後傳送產生的檔案。

下表提供工作型前置及後置執行處理的範圍:
| 適用性 | 詳細資料 |
|---|---|
| 作業系統 |
|
| 相依關係 |
|
| 限制 |
|
主機型前置和後置執行處理
主機型前置及後置執行處理不同於工作型前置及後置執行處理,因為它是用於平行工作 (您也可以針對循序工作使用此特性) ,並在所有執行主機上執行,而不是僅在第一個執行主機上執行。 其目的是在所有基於工作的前置執行和其他前置處理 (取決於基於主機的準備) 之前設定執行主機,並在基於工作的後置執行和其他後處理之後清除執行主機。
此特性可透過多種方式使用。 例如:
- HPC 網站可以有多種方式在實際啟動工作之前檢查系統性能狀態,例如檢查主機或節點狀態、裝載金鑰檔案系統、Infiniband 工作中、必要的目錄、檔案、環境,以及設定正確的使用者許可權等。)
- 管理者可以配置網站特定原則來執行主機型前置及後置執行處理,以設定對電腦節點的 ssh 存取。 依預設,會停用 ssh。 不過,使用主機型前置及後置執行處理時,可以在工作生命週期期間啟用對配置給工作之節點的 ssh 存取。 在非第一次執行主機上對平行工作進行除錯時需要此項,且不會影響整體叢集安全原則。
- 管理者可以配置主機型前置和後置執行處理程序,以建立並稍後移除每一部主機上的暫時工作目錄。
您可以在應用程式層次及佇列層次定義主機型前置及後置執行處理。 也支援失敗處理。
有兩種方法可針對工作啟用主機型前置及後置執行處理:
- 在 lsb.queues中配置 HOST_PRE_EXEC 和 HOST_POST_EXEC 。
- 在 lsb.applications中配置 HOST_PRE_EXEC 和 HOST_POST_EXEC 。
在配置主機型前置和後置執行處理時,請注意下列各項:
- 僅在 UNIX 上支援主機型前置及後置執行處理。
- 主機型前置及後置執行處理不支援在輸出中傳回部分環境變數,以及為工作設定那些環境變數。
- 如果工作處於主機型前置執行處理階段,則 sbatchd 會拒絕任何不是終止信號的信號,並要求重新傳送該信號。 如果工作位於主機型後置執行處理階段,則不論如何定義 JOB_INCLUDE_POSTPROC ,都會拒絕或忽略工作信號。
- 您無法將 JOB_PREPROC_TIMEOUT 或 JOB_POSTPROC_TIMEOUT 的預設值用於主機型前置及後置執行處理。 根據主機型前置和後置執行處理執行所需的時間來配置值。
- 在主機型前置執行處理完成之前,無法執行檢查點檢查作業。 在此期間, sbatchd 會傳回重試錯誤。
- 從 LSF 9.1.2版開始,將不會在已配置的主機上執行主機型前置及後置執行處理,這些工作已透過自動調整大小展開至這些主機。
- 主機型前置及後置執行處理會將租賃-in 主機視為與本端主機相同。
- 如果將具有主機型前置或後置執行處理的工作分派給 Windows 主機,則該工作將失敗,然後顯示擱置原因。
- 由於主機型前置和後置執行處理未在工作層次定義, MultiCluster 轉遞 和 XL 工作不會取得本端佇列和應用程式主機型前置和後置執行處理資訊,而是遵循遠端佇列和應用程式配置。
- 只有 LSF 9.1.2 及未來版本才支援主機型前置及後置執行處理特性。