執行個體狀態
每個執行個體都恰好處於八種狀態之一。執行個體 頁面上的徽章、執行個體詳細頁面上的徽章,以及 API 回傳的 status 欄位,回報的都是同一個值。
這些狀態
| 狀態 | 轉換中 | 代表什麼 | 計什麼費 | 可以從它做什麼 |
|---|---|---|---|---|
creating | 是 | 你的部署已被接受,Superheat 正在佈建切片並拉取映像檔 | 不收費 | 等待,或直接銷毀 |
starting | 是 | 一個已停止的執行個體正在同一台機器上、用同一顆硬碟重新起來 | 不收費 | 等待,或直接銷毀 |
running | 否 | 工作負載已就緒,連線資訊已公布 | GPU:整個切片依報價的每小時價格計價,按秒計量 | 用 SSH 連線、開啟 JupyterLab、讀取日誌、停止、銷毀 |
stopping | 是 | 工作負載正在關閉;硬碟會保留 | 不收費 | 等待,或直接銷毀 |
stopped | 否 | 工作負載已關閉;你的硬碟留在那台機器上,你的 GPU 插槽也一樣,除非平台將它釋放 — 餘額到了零,或一筆付款爭議凍結了付款 | 硬碟:你的硬碟容量乘上每 GB 每小時的儲存費率 | 啟動、銷毀 |
destroying | 是 | 拆除進行中,切片正在釋出 | 不收費 | 等待。再銷毀一次會重新送出拆除 |
destroyed | 否 | 終端狀態。硬碟已刪除,報價已回到市集上 | 不收費 | 沒有動作。已銷毀的執行個體不會出現在清單裡,除非你特地把它們叫出來 |
error | 否 | 工作負載無法啟動、執行失敗或遺失,或自己跑完了。error_code 會說明是哪一種 | 不收費 | 讀取日誌、銷毀 |
error 不收任何費用。一旦平台看到工作負載結束 — 失敗、遺失或跑完 — 那些 GPU 就會被釋出,回到該報價的 available_units 裡。在工作負載送到主機之前就失敗的部署,則會一直佔著它們,直到執行個體被銷毀為止。每個出錯的執行個體在被銷毀之前,都會計入 25 個執行個體的上限。
轉換中狀態
有四種狀態 — creating、starting、stopping 和 destroying — 屬於轉換中:Superheat 正在把這次變更做完,沒有任何計量在跑,而你做什麼都不會讓它更快 — 不過處於 creating、starting 或 stopping 的執行個體可以直接銷毀,不必等它跑完。主控台會為這幾種狀態畫出閃動的徽章,只要你有任何執行個體處在其中一種,就每 3 秒輪詢一次,等一切都安定下來後再退回每 15 秒一次。
執行個體處於 creating 時,主控台會顯示提示 正在佈建你的機器…。映像檔很大時,拉取可能讓它在這裡停上幾分鐘,而拉取時間一律不收費。
哪些轉換是合法的
| 從 | 你可以要求 | 平台也可能把它移到 |
|---|---|---|
creating | destroying | running、error |
starting | destroying | running、stopped(恢復被拒或始終未獲確認)、error |
running | stopping、destroying | stopped、error |
stopping | destroying | stopped、running(停止始終未獲確認)、error |
stopped | starting、destroying | running、error(容器不見了) |
destroying | —(再要求一次會重新送出拆除) | destroyed、error |
destroyed | 無 — 這個狀態是最終的 | 無 |
error | destroying | running、stopped(發現工作負載仍然健在) |
正常的路徑是 creating → running → stopping → stopped → starting → running。拆除永遠是 destroying → destroyed。
destroying 之所以能從每個仍然存活的狀態到達,是刻意的。一個永遠落不了地的部署——放置一直在等、因為機群裡沒有任何東西符合,或者主機已經不認得那個作業——或是一次主機始終不回應的停止或啟動,否則就會留下一個你刪不掉的執行個體。還在起來、啟動中或停止中的執行個體,你都可以把它銷毀。對已經處於 destroying 的執行個體送出 DELETE 也不會被拒絕:它會再要求一次拆除。
平台自己的移動,是為了讓狀態保持真實。主機在 30 分鐘內沒有確認的停止,會把執行個體放回 running — 容器還在執行,所以 GPU 計量重新開始 — 並重試停止。主機拒絕、連不上,或在 30 分鐘內沒有確認的啟動,會把它放回 stopped — 對 GPU 已被釋放的執行個體來說,拒絕通常表示另一位租用者現在正在用它們(gpus_unavailable)。容器從機器上消失的已停止執行個體會轉為 error(workload_gone),因為已經沒有可以啟動的東西了。執行個體上的 error_code 會指出發生了什麼事,執行個體頁面也會說明它。
任何要求「你可以要求」欄位以外之轉換的請求,都會以 409 INVALID_STATE 被拒絕,執行個體則原封不動。API 會在執行個體的 allowed_actions 中列出此刻允許的動作。