自動垂直調度資源功能可讓 Dataflow Prime 動態擴充或縮減工作站可用的記憶體,以符合工作需求。這項功能旨在讓作業免於記憶體不足 (OOM) 錯誤,並盡可能提高管道效率。Dataflow Prime 會監控管道,偵測工作站記憶體不足或過多的情況,然後以記憶體較多或較少的新工作站取代這些工作站。
重要事項:由於垂直自動調整功能會以新工作人員取代現有工作人員,因此強烈建議使用自訂容器,以改善因調整工作人員大小而可能發生的延遲問題。
串流
對於使用 Dataflow Prime 的所有新串流工作,系統預設會啟用自動垂直調度資源功能。
如果您是透過指令列介面從範本啟動工作,可以傳送 --additional_experiments=disable_vertical_memory_autoscaling
旗標來停用垂直自動調度資源。
所有 Dataflow Prime 串流 Java 和 Python 管道都支援垂直自動調度。您可以使用 Dataflow Prime 串流 Java 管道,不必使用 Streaming Engine。不過,為獲得最佳的垂直自動調度體驗,建議啟用 Streaming Engine。
批次
如果是 Dataflow Prime 批次工作,只有在發生四次記憶體不足錯誤後,自動垂直調度資源功能才會擴充資源。
- 垂直自動調度資源功能會擴充資源,避免工作失敗,但不會縮減資源。
- 整個集區會擴大,以完成其餘工作。
- 如果使用資源提示並建立多個集區,每個集區會分別擴充。
對於批次工作,垂直自動調度資源功能預設為停用。如要為批次作業啟用垂直自動調度資源功能,請設定下列管道選項:
--experiments=enable_batch_vmr
--experiments=enable_vertical_memory_autoscaling
如要停用批次作業的垂直自動調度資源功能,請採取下列任一做法:
- 請勿設定
--experiments=enable_batch_vmr
管道選項。 - 設定
--experiments=disable_vertical_memory_autoscaling
管道選項。
限制
- 只有工作站的記憶體會垂直擴充。
- 根據預設,記憶體調整的上限為 16 GiB,下限為 6 GiB。使用 GPU 時,記憶體大小的上限為 26 GiB,下限為 12 GiB。您可以提供資源提示,變更上下限。
- 使用 A100 GPU 的集區不支援垂直自動調度資源。
- 如果是批次工作,內含失敗項目的組合可能會重試超過 4 次,管道才會完全失敗。
- 垂直自動調度資源不支援 VPC Service Controls。如果您啟用 Dataflow Prime,並在 VPC Service Controls 範圍內啟動新工作,該工作會使用不含垂直自動調度資源的 Dataflow Prime。
- 使用自動垂直調度資源功能時,系統只支援批次管道。
監控垂直自動調度資源
垂直自動調度作業會發布至工作和工作站記錄檔。如要查看這些記錄,請參閱「Dataflow 工作指標」。
對自動水平調度資源的影響
在 Dataflow Prime 中,垂直自動調度資源功能會與水平自動調度資源功能搭配運作。Dataflow Prime 結合這兩項功能後,就能順暢地調度工作站,以配合管道需求,並盡量運用運算容量。
根據設計,垂直自動調度資源 (調整工作站記憶體) 的頻率會低於水平自動調度資源 (調整工作站數量)。在垂直自動調度資源觸發更新期間,以及更新後最多 10 分鐘內,水平自動調度資源功能會停用。如果 10 分鐘後仍有大量輸入資料積壓,系統可能會進行水平自動調度,以清除積壓的資料。如要瞭解串流管道的水平自動調度,請參閱串流自動調度。
疑難排解
本節說明如何排解垂直自動調度相關的常見問題。
自動垂直調度資源功能似乎無法運作
如果垂直自動調度資源功能無法運作,請檢查下列工作詳細資料。
檢查下列工作訊息,確認垂直自動調度資源功能是否已啟用:
Vertical Autoscaling is enabled. This pipeline is receiving recommendations for resources allocated per worker.
如果沒有這則訊息,表示自動垂直調度資源功能未執行。
如果是串流管道,請確認已設定
enable_vertical_memory_autoscaling
標記。如果是批次管道,請確認已設定enable_vertical_memory_autoscaling
和enable_batch_vmr
標記。確認您已為 Google Cloud 專案啟用 Cloud Autoscaling API。 啟用 API
確認工作是否正在執行 Dataflow Prime。詳情請參閱「啟用 Dataflow Prime」。
工作觀察到高積壓和高水位線
這些操作說明僅適用於串流工作。如果工作站的垂直重塑時間超過幾分鐘,工作可能會出現輸入資料大量積壓和浮水印偏高的情況。如要在 Python 管道中解決這個問題,強烈建議您使用自訂容器,因為這樣可以改善重塑工作站時可能發生的延遲問題。如要解決 Java 管道中的這個問題,強烈建議您啟用 Streaming Engine 和 Runner v2。如果啟用這些功能後問題仍未解決,請與客戶服務聯絡。
自動垂直調度資源功能已達到記憶體容量上限。
根據預設,如果未提供任何資源提示,垂直自動調度資源功能不會將每個工作站的記憶體調度超過 16 GiB (使用 GPU 時為 26 GiB),也不會調度低於每個工作站 6 GiB 的記憶體 (使用 GPU 時為 12 GiB)。達到這些限制後,Cloud Logging 會產生下列其中一則記錄訊息。
串流工作:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of X GiB. This is only a problem if the pipeline continues to see
memory throttling and/or OOMs.
批次工作:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of 16.0 GiB. Job will fail because we have upsized to maximum
size, and the pipeline is still OOMing.
如果管線持續發生記憶體不足錯誤,您可以使用適當的 (資源提示) 方式,透過指定 min_ram="numberXB"
定義轉換的記憶體需求。這項設定可讓 Dataflow 為工作站選取初始設定,支援更高的記憶體容量。不過,變更這項初始設定可以增加管道可用的潛在平行處理能力。如果轉換作業需要大量記憶體,由於可用的平行處理程序增加,管道使用的記憶體可能會比以往更多。在這種情況下,您可能需要最佳化轉換,以減少記憶體用量。
工作站記憶體用量穩定,但記憶體上限卻會隨時間起伏
這些操作說明僅適用於串流工作。 如果是 Java 管道,請啟用 Streaming Engine 和 Runner v2。如果問題仍未解決,或是在 Python 管道中觀察到這種行為,請與 Customer Care 團隊聯絡。
常見記錄訊息
本節說明啟用垂直自動調度資源功能時,系統產生的常見記錄訊息。
已啟用垂直自動調度資源功能。這個管道正在接收每個工作站分配資源的建議。
這則訊息表示垂直自動調度資源功能已啟用。如果沒有這則訊息,表示垂直自動調度資源功能未在工作站集區運作。
如果自動垂直調度資源功能未啟用,請參閱「自動垂直調度資源功能似乎無法運作。我應該檢查什麼? 如需疑難排解操作說明,
已觸發垂直自動調度資源更新,將集區的每個工作站記憶體限制從 X GiB 變更為 Y GiB。
這則訊息表示自動垂直調度資源功能已觸發工作站集區記憶體大小調整。