

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 競價型執行個體
<a name="spot"></a>

AWS ParallelCluster 如果叢集組態已設定 [`cluster_type`](cluster-definition.md#cluster-type) = Spot， 會使用 Spot 執行個體。Spot 執行個體比隨需執行個體更具成本效益，但可能會中斷。中斷的效果會根據使用的特定排程器而有所不同。這可能有助於利用 *Spot 執行個體中斷通知*，在 Amazon EC2 必須停止或終止 Spot 執行個體之前提供兩分鐘的警告。如需詳細資訊，請參閱《*Amazon EC2 使用者指南》中的* [Spot 執行個體中斷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)。下列章節說明可能中斷 Spot 執行個體的三種案例。

**注意**  
使用 Spot 執行個體需要服務`AWSServiceRoleForEC2Spot`連結角色存在於您的帳戶中。若要使用 在帳戶中建立此角色 AWS CLI，請執行下列命令：  

```
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
```
如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Spot 執行個體請求的服務連結角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests)。

## 案例 1：沒有執行中任務的 Spot 執行個體遭到中斷
<a name="no-jobs"></a>

發生此中斷時，如果排程器佇列有待定任務需要額外執行個體，或作用中執行個體的數量低於 [`initial_queue_size`](cluster-definition.md#configuration-initial-queue-size)設定， 會 AWS ParallelCluster 嘗試取代執行個體。如果 AWS ParallelCluster 無法佈建新的執行個體，則會定期重複對新執行個體的請求。

## 案例 2：執行單一節點任務的 Spot 執行個體遭到中斷
<a name="single-node"></a>

此類中斷的行為取決於所使用的排程器。

Slurm  
任務失敗，狀態碼為 `NODE_FAIL`，且任務會重新排入佇列 （除非在提交任務時`--no-requeue`指定 )。如果節點是靜態節點，則會予以取代。如果節點是動態節點，則會終止節點並重設。如需 的詳細資訊`sbatch`，包括 `--no-requeue` 參數，請參閱 *Slurm 文件*[https://slurm.schedmd.com/sbatch.html](https://slurm.schedmd.com/sbatch.html)中的 。  
此行為在 2.9.0 AWS ParallelCluster 版中已變更。舊版以 狀態碼 終止任務，`NODE_FAIL`且節點已從排程器佇列中移除。

SGE  
這僅適用於 AWS ParallelCluster 2.11.4 及 之前的版本。從 2.11.5 版開始， AWS ParallelCluster 不支援使用 SGE或 Torque排程器。
任務已終止。如果任務已啟用重新執行旗標 (使用 `qsub -r yes` 或 `qalter -r yes`)，或佇列的 `rerun` 組態設定為 `TRUE`，則該任務會重新排程。運算執行個體會從排程器佇列中移除。這種行為來自這些 SGE 組態參數：  
+ `reschedule_unknown 00:00:30`
+ `ENABLE_FORCED_QDEL_IF_UNKNOWN`
+ `ENABLE_RESCHEDULE_KILL=1`

Torque  
這僅適用於 AWS ParallelCluster 2.11.4 及 之前的版本。從 2.11.5 版開始， AWS ParallelCluster 不支援使用 SGE或 Torque排程器。
任務會從系統中移除，並從排程器中移除節點。任務不會重新執行。如果執行個體在中斷時執行多個任務，則 Torque 可能會在節點移除期間逾時。[`sqswatcher`](processes.md#sqswatcher) 日誌檔案中可能會顯示錯誤。這不會影響擴展邏輯，且後續重試會執行適當的清除。

## 案例 3：執行多節點任務的 Spot 執行個體遭到中斷
<a name="multi-node"></a>

此類中斷的行為取決於所使用的排程器。

Slurm  
任務失敗，狀態碼為 `NODE_FAIL`，且任務會重新排入佇列 （除非在提交任務時`--no-requeue`指定）。如果節點是靜態節點，則會予以取代。如果節點是動態節點，則會終止節點並重設。執行已終止任務的其他節點可能會配置給其他待定任務，或在設定[`scaledown_idletime`](scaling-section.md#scaledown-idletime)的時間過後縮減規模。  
此行為在 2.9.0 AWS ParallelCluster 版中已變更。舊版以 狀態碼 終止任務，`NODE_FAIL`且節點已從排程器佇列中移除。執行已終止任務的其他節點可能會在設定[`scaledown_idletime`](scaling-section.md#scaledown-idletime)時間過後縮減。

SGE  
這僅適用於 AWS ParallelCluster 2.11.4 及 之前的版本。從 2.11.5 版開始， AWS ParallelCluster 不支援使用 SGE或 Torque排程器。
任務不會終止，並繼續在其餘節點上執行。運算節點會從排程器佇列中移除，但會在主機清單中顯示為孤立且無法使用的節點。  
發生這種情況時，使用者必須刪除任務 (`qdel <jobid>`)。節點仍會顯示在主機清單 (`qhost`) 中，但這不會影響 AWS ParallelCluster。若要從清單中移除主機，請在取代執行個體後執行下列命令。  

```
sudo -- bash -c 'source /etc/profile.d/sge.sh; qconf -dattr hostgroup hostlist <hostname> @allhosts; qconf -de <hostname>'
```

Torque  
這僅適用於 AWS ParallelCluster 2.11.4 及 之前的版本。從 2.11.5 版開始， AWS ParallelCluster 不支援使用 SGE或 Torque排程器。
任務會從系統中移除，並從排程器中移除節點。任務不會重新執行。如果執行個體在中斷時執行多個任務，則 Torque 可能會在節點移除期間逾時。[`sqswatcher`](processes.md#sqswatcher) 日誌檔案中可能會顯示錯誤。這不會影響擴展邏輯，且後續重試會執行適當的清除。

如需 Spot 執行個體的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)。