回報出錯的主機

如果 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 執行個體發生硬體問題,且您無法自行解決 (例如效能降低或 GPU 溫度持續偏高),可以將主機回報為故障,盡可能縮短工作負載的停機時間。

本文說明如何回報故障主機,以及追蹤 Slurm 叢集和其他使用 Compute Engine 執行個體的叢集維修狀態。如要回報 Google Kubernetes Engine (GKE) 叢集中的故障主機,請改為參閱「透過 GKE 回報故障主機」。

限制

回報出錯的主機時,請注意下列限制:

  • 只有在主機上執行的運算執行個體符合下列所有條件時,才能回報主機故障:

    • 運算執行個體正在運作。

    • 運算執行個體使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 機型。

    • 運算執行個體採用標準、彈性啟動或取決於預留項目的佈建模式。

  • 如果在 reportHostAsFaulty 作業進行期間刪除運算執行個體,reportHostAsFaulty 作業就會失敗。

  • Google Cloud 會盡力滿足所有回報故障主機的要求。不過,由於容量限制或頻率限制,要求不一定能完成。

瞭解主機故障回報程序

回報運算執行個體的主機故障後,運算執行個體重新啟動的時間,會因運算執行個體所用預留項目中指定的預留項目作業模式而異。如要驗證預留項目的作業模式,請查看預留項目的 reservationOperationalMode 欄位。下表摘要說明兩種可用預留作業模式 (所有容量模式和代管模式) 的故障主機程序。
所有容量模式 (ALL_CAPACITY) 受管理模式 (HIGHLY_AVAILABLE_CAPACITY)
支援的機型 A4X Max 和 A4X A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU)
故障主機回報 API 頻率限制 沒有頻率限制。 API 呼叫可能受到頻率限制。
回報故障主機的程序

如果回報在全容量模式下運作的運算執行個體主機故障,會發生下列情況:

  1. 回報出錯的主機:在回報出錯主機的作業期間,運算執行個體會維持在 RUNNING 狀態,這項作業通常需要 10 到 12 分鐘才能完成。如要查看作業狀態,請參閱本文件中的「查看報告故障主機作業」一節。
  2. 修復主機:回報出錯的主機作業完成後,主機修復作業會在一分鐘內啟動。主機修復作業開始時,運算執行個體會停止,並根據為運算執行個體指定的自動重新啟動 (automaticRestart) 設定變更狀態:

    • 如果運算執行個體已啟用自動重新啟動功能,運算執行個體狀態會變更為 REPAIRING。
    • 如果運算執行個體的自動重新啟動功能已停用,運算執行個體狀態會變更為 TERMINATED。

    修復故障主機可能需要 3 到 14 天,有時甚至更久。

  3. 重新啟動運算執行個體:主機修復作業完成後,會發生下列其中一種情況:

    • 如果運算執行個體處於 REPAIRING 狀態,且修復完成時有可用資源,Compute Engine 會自動在修復後的主機上重新啟動運算執行個體。
    • 否則,如果運算執行個體處於 TERMINATED 狀態,或修復完成時資源無法使用,則運算執行個體狀態會保持或變更為 TERMINATED。如要執行運算執行個體,您必須手動重新啟動。不過,如果重新啟動運算執行個體時沒有可用資源 (例如其他運算執行個體已在使用修復的主機),重新啟動作業可能會失敗。

如果回報在代管模式下執行的運算執行個體主機故障,會發生下列情況:

  1. 回報出錯的主機:在回報出錯主機的作業期間,運算執行個體會維持在 RUNNING 狀態,這項作業通常需要 10 到 12 分鐘才能完成。如要查看作業狀態,請參閱本文的「查看回報故障主機作業」一節。
  2. 開始修復主機:回報出錯的主機作業完成後,主機修復作業會在一分鐘內開始。

    主機修復作業開始時,運算執行個體的行為會因機器系列而異:

    • A4 和 A3 Ultra:Compute Engine 會嘗試將運算執行個體即時遷移至其他主機。如果預留容量不足,或運算執行個體所在可用區沒有可用容量,運算執行個體就會停止。
    • A3 Mega 和 A3 High:Compute Engine 會停止運算執行個體,並在健康的主機上重新啟動。

    如果運算執行個體停止,其狀態會根據為運算執行個體指定的自動重新啟動 (automaticRestart) 設定而變更:

    • 如果運算執行個體已啟用自動重新啟動功能,運算執行個體狀態會變更為「REPAIRING」。除非您先停止運算執行個體,否則主機恢復正常後,執行個體就會自動重新啟動。
    • 如果運算執行個體已停用自動重新啟動功能,運算執行個體狀態會變更為 TERMINATED。主機恢復正常後,您必須手動重新啟動運算執行個體。

    修復原始故障主機可能需要 3 到 14 天,有時甚至更久。

  3. 遷移或重新啟動運算執行個體:主機修復作業開始後,Compute Engine 會嘗試保留健康的主機,在預留容量中取代您回報的故障主機。如果 Compute Engine 找到替代主機,則會發生下列情況:

    • A4 和 A3 Ultra:如果運算執行個體已在上一個步驟中即時遷移,就會繼續在替換主機上執行。如果運算執行個體已停止,則會在替換主機上重新啟動。
    • A3 Mega 和 A3 High:運算執行個體會在替換主機上重新啟動。

    如果 Compute Engine 無法立即找到替代主機,運算執行個體會按照下列方式重新啟動:

    • 如果運算執行個體處於 REPAIRING 狀態,且在修復完成前或完成時有可用資源,Compute Engine 會自動在狀況良好的主機上重新啟動運算執行個體。
    • 否則,如果運算執行個體處於 TERMINATED 狀態,或是在修復完成前或完成時沒有可用資源,則運算執行個體狀態會維持或變更為 TERMINATED。如要執行運算執行個體,您必須手動重新啟動。

    與所有容量模式不同,您不必等待原始故障主機修復,即可恢復工作負載。

回報主機故障前,請先排解問題

回報主機故障前,建議您先排解問題,確認是硬體問題,而非工作負載或叢集設定問題。這種做法有助於避免工作負載不必要的停機時間。

檢查 GPU 記憶體或 Xid 錯誤

如果您在運算執行個體上發現 GPU 記憶體或 Xid 錯誤,請先確認手動復原措施 (例如重設 GPU 或重新啟動運算執行個體) 是否能解決問題,再回報主機故障。詳情請參閱「查看 Xid 訊息」。

檢查 GPU 效能問題和落後者

如果發現效能緩慢,請使用進度落後偵測服務,找出叢集中效能可能低於其他執行個體的運算執行個體。

監控 GPU 溫度和過熱違規

如果記錄中顯示過熱違規警告,或 DCGM 回報這類警告,請參閱下列指南:

  • 警告與重大錯誤:DCGM 診斷可能會將溫度違規回報為警告,嚴重程度為 monitor。這個嚴重性等級表示 GPU 仍可執行工作負載,但建議您監控 GPU。

  • 偽陽性:NVIDIA 正在調查 GPU 溫度違規報告頻率增加的情況,這些 GPU 並未顯示實際溫度問題的跡象。

  • 建議:在因過熱警告而回報主機故障前,請先確認實際 GPU 溫度是否超過安全門檻,以及工作負載效能是否受到影響。如果溫度保持穩定且效能正常,建議您監控 GPU,而不是回報為故障。

如要進一步瞭解 GPU 疑難排解,請參閱 Compute Engine 說明文件中的「排解 GPU VM 問題」。

事前準備

請根據您打算如何使用本頁範例,選取對應的分頁標籤:

控制台

使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

gcloud

在 Google Cloud 控制台啟用 Cloud Shell。

啟用 Cloud Shell

Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。

REST

如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

    安裝 Google Cloud CLI。

    如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。

詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

如要取得回報故障主機所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備回報故障主機所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

必須具備下列權限,才能回報故障主機:

  • 如要回報出錯的主機: compute.instances.update 運算執行個體或專案
  • 如要使用 Logging 查看作業清單,請按照下列步驟操作: logging.logEntries.list 在專案中
  • 如要查看 Compute Engine 的作業清單: compute.zoneOperations.list 專案
  • 如要查看 Compute Engine 作業的詳細資料,請在專案中執行下列操作:compute.zoneOperations.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

回報出錯的主機

如要回報故障的主機,請完成下列步驟:

  1. 查看執行運算執行個體的主機。您必須檢查運算執行個體執行所在的主機 ID。

    如需操作說明,請參閱「查看運算執行個體的拓撲」。

  2. 選用:備份本機 SSD 資料。運算執行個體停止時,Compute Engine 會自動捨棄附加至運算執行個體的任何本機 SSD 磁碟資料。Compute Engine 捨棄本機 SSD 資料後,您就無法復原這些資料。

    如要瞭解如何保留本機 SSD 資料,請參閱「本機 SSD 資料備份」。

  3. 回報出錯的主機。主機修復作業會在回報故障主機作業完成後一分鐘內立即啟動。如果運算執行個體在您啟動故障主機回報作業後停止回應,建議您等待至少 15 分鐘,然後重新啟動運算執行個體。

    如要回報出錯的主機,請選取下列其中一個選項:

    gcloud

    如要回報出錯的主機,請使用 gcloud compute instances report-host-as-faulty 指令:

    gcloud compute instances report-host-as-faulty INSTANCE_NAME \
        --async \
        --disruption-schedule=IMMEDIATE \
        --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \
        --zone=ZONE
    

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱。

    • FAULT_REASON:運算執行個體遇到的主機問題清單,以半形逗號分隔,例如 ISSUE_1,ISSUE_2。可指定的值如下:

      • PERFORMANCE:與叢集中的其他 GPU 相比,附加至運算執行個體的 GPU 有效能問題,記錄中未顯示 Xid 錯誤,且 Compute Engine 未偵測到其他常見的故障模式,例如無訊息資料損毀。

      • SILENT_DATA_CORRUPTION:運算執行個體中的資料損毀,但執行個體仍持續運作。無聲資料毀損可能是由 vCPU 缺陷、軟體錯誤或核心問題等因素造成。

      • UNRECOVERABLE_GPU_ERROR:您發現 Xid 發生無法復原的 GPU 錯誤。

      • BEHAVIOR_UNSPECIFIED:不確定運算執行個體發生什麼問題。

    • DESCRIPTION:說明影響運算執行個體的問題,例如 Xid 資訊或疑似效能問題。

    • ZONE:運算執行個體所在的可用區。

    REST

    如要回報故障的主機,請向 instances.reportHostAsFaulty 方法發出 POST 要求。

    回報故障主機時,您可以一次指定多個故障原因。舉例來說,如要指定兩個故障原因,請提出如下要求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/reportHostAsFaulty
    
    {
      "disruptionSchedule": "IMMEDIATE",
      "faultReasons": [
        {
          "behavior": "FAULT_REASON_1",
          "description": "DESCRIPTION_1"
        },
        {
          "behavior": "FAULT_REASON_2",
          "description": "DESCRIPTION_2"
        }
      ]
    }
    

    更改下列內容:

    • PROJECT_ID:運算執行個體所在的專案 ID。

    • ZONE:運算執行個體所在的可用區。

    • INSTANCE_NAME:運算執行個體的名稱。

    • FAULT_REASON_1 和 FAULT_REASON_2:運算執行個體遇到的各個主機問題。可指定的值如下:

      • PERFORMANCE:與叢集中的其他 GPU 相比,附加至運算執行個體的 GPU 有效能問題,記錄中未顯示 Xid 錯誤,且 Compute Engine 未偵測到其他常見故障模式,例如無訊息資料損毀。

      • SILENT_DATA_CORRUPTION:運算執行個體中的資料損毀,但執行個體仍持續運作。無聲資料毀損可能是由 vCPU 缺陷、軟體錯誤或核心問題等因素造成。

      • UNRECOVERABLE_GPU_ERROR:您發現 Xid 發生無法復原的 GPU 錯誤。

      • BEHAVIOR_UNSPECIFIED:不確定運算執行個體發生什麼問題。

    • DESCRIPTION_1 和 DESCRIPTION_2:您指定的每個主機問題說明,例如 Xid 資訊或疑似效能問題。

查看回報出錯的主機作業

回報故障主機後,Compute Engine 會啟動一系列作業,將主機標示為故障,並準備維修主機。具體來說,在回報出錯的主機作業期間,會發生以下程序:

  1. 將主機標示為故障。Compute Engine 會建立報告故障主機作業。接著,回報出錯的主機作業會建立一系列子作業。這些子作業會將基礎主機標示為故障。

  2. 準備維修主機。所有子作業完成後,系統會開始回報故障主機作業。Compute Engine 會停止運算執行個體,並開始修復故障的主機。視預留項目的預留項目作業模式和主機可用性而定,Compute Engine 會讓運算執行個體保持停止狀態,或嘗試遷移並重新啟動。

  3. 回報完成並維修主機。Compute Engine 會完成回報出錯主機作業,並執行主機修復作業。

如要進一步瞭解可用於追蹤維修、遷移和自動重新啟動的其他作業,請參閱 Compute Engine 說明文件中的「維護和重新啟動行為」和「監控及規劃主機維護事件」。

如要追蹤專案中回報故障主機 (compute.instances.reportHostAsFaulty) 作業的狀態,請選取下列其中一個選項:

控制台 (執行個體作業)

  1. 前往 Google Cloud 控制台的「Operations」(作業) 頁面。

    前往「Operations」

  2. 在顯示的表格中,找出您回報的運算執行個體。

  3. 在包含運算執行個體的資料列中,您可以在「Status」(狀態) 欄中查看回報故障主機作業的狀態。作業完成後,值會變成「Done」。

  4. 選用:如要確認 Compute Engine 是否已重新啟動運算執行個體,請查看執行個體的詳細資料。

控制台 (運算執行個體記錄)

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往 Logs Explorer

  2. 確認「顯示查詢」切換鈕已設為開啟。

  3. 在查詢編輯器中輸入下列查詢:

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. 按一下「Run query」(執行查詢)。「Query results」(查詢結果) 窗格會顯示查詢結果。

gcloud

  1. 如要查看專案中回報故障主機作業的狀態,請使用 gcloud compute operations list 指令,並將 --filter 旗標設為 operationType:reportHostAsFaulty:

    gcloud compute operations list --filter="operationType:reportHostAsFaulty"
    
  2. 如要查看特定故障主機作業的詳細資料,請使用 gcloud compute operations describe 指令:

    gcloud compute operations describe OPERATION_NAME \
        --zone="ZONE"
    

    更改下列內容:

    • OPERATION_NAME:作業名稱。

    • ZONE:作業所在的可用區。

REST

如要查看專案中回報出錯主機作業的狀態,請向 zoneOperations.list 方法發出 GET 要求。在要求網址中,加入設為 items.operationType:reportHostAsFaulty 的 filter 查詢參數。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:reportHostAsFaulty

更改下列內容:

  • PROJECT_ID:作業所在的專案 ID。

  • ZONE:作業所在的可用區。

後續步驟