Google Cloud 架構完善架構永續發展支柱的這項原則提供相關建議,協助您在 Google Cloud中,以最佳方式使用工作負載的資源。
原則總覽
充分運用資源是提升雲端環境永續性的關鍵。從運算週期到資料儲存空間,凡是佈建的資源都會直接影響能源用量、用水強度和碳排放量。如要減少工作負載對環境的影響,您必須在佈建、管理及使用雲端資源時做出明智的選擇。
建議
如要充分運用資源,請參考下列各節的建議。
導入自動和動態資源調度
自動和動態調整資源配置可確保資源使用率達到最佳狀態,有助於避免閒置或過度佈建的基礎架構造成能源浪費。減少能源浪費,降低成本和碳排放量。
請使用下列技術,實作自動和動態擴充性。
使用水平資源調度
對於大多數雲端優先應用程式而言,水平資源調度是較好的資源調度技術。您會新增執行個體來分散負載,而不是增加每個執行個體的大小 (稱為垂直擴展)。舉例來說,您可以使用代管執行個體群組 (MIG),自動擴充一組 Compute Engine VM。水平擴充基礎架構的復原能力較強,因為執行個體故障不會影響應用程式的可用性。對於負載量不穩定的應用程式,水平擴充也是節省資源的技術。
設定適當的資源調度政策
根據工作負載需求設定自動調度資源設定。定義應用程式行為專屬的自訂指標和門檻。 除了 CPU 使用率,您也可以考慮非同步工作佇列深度、要求延遲時間和自訂應用程式指標等指標。為避免頻繁且不必要的資源調度或擺盪,請定義明確的資源調度政策。舉例來說,如果是在 Google Kubernetes Engine (GKE) 中部署工作負載,請設定適當的叢集自動調度資源政策。
結合被動和主動式擴展
透過反應式調度,系統會根據即時負載變化進行調度。 這項技術適用於負載會突然大幅增加的應用程式。
主動式調度資源功能適合具有可預測模式的工作負載,例如固定的每日營業時間和每週報表產生作業。對於這類工作負載,請使用排程自動調度資源功能預先佈建資源,以便處理預期負載量。這項技術可避免資源爭用,確保使用者體驗更流暢,效率也更高。這項技術也有助於您主動規劃,因應已知的負載尖峰,例如大型銷售活動和重點行銷活動。
Google Cloud GKE Autopilot、Cloud Run 和 MIG 等代管服務和功能會從工作負載模式中學習,自動管理主動調度資源。根據預設,如果 Cloud Run 服務未收到任何流量,系統會將執行個體數量調度至零。
設計無狀態應用程式
如要水平擴充應用程式,其元件應為無狀態。也就是說,特定使用者的工作階段或資料不會與單一運算執行個體建立關聯。將工作階段狀態儲存在運算執行個體外部 (例如 Memorystore for Redis) 時,任何運算執行個體都能處理任何使用者的要求。這種設計方法可實現順暢且有效率的水平資源調度。
使用排程和批次作業
批次處理非常適合大規模的非緊急工作負載。批次工作可協助您提高工作負載的能源效率和成本效益。
請使用下列技術實作排程和批次工作。
低碳強度排程
排定批次作業在低碳區域執行,並選在當地電網使用高比例潔淨能源的時段執行。如要找出特定區域一天中碳排放量最低的時段,請使用碳足跡報告。
使用 Spot VM 處理非重要工作負載
Spot VM 可讓您以大幅折扣價,使用未使用的 Compute Engine 容量。Spot VM 可能遭到先占,但可讓您以符合成本效益的方式處理大型資料集,無須使用專屬的常時運作資源。Spot VM 非常適合非重要且容錯的批次工作。
合併及平行處理工作
為減少啟動和關閉個別工作的額外負擔,請將類似工作分組為單一大型批次。在 Batch 等服務上執行這些大量工作負載。這項服務會自動佈建及管理必要基礎架構,確保資源使用率達到最佳狀態。
使用代管服務
Batch 和 Dataflow 等代管服務會自動處理資源佈建、排程和監控作業。雲端平台會負責資源最佳化。您可以專注於應用程式邏輯。舉例來說,Dataflow 會根據管道中的資料量自動調度工作站數量,因此您不必為閒置資源付費。
根據工作負載需求選擇 VM 機器系列
可用於 Compute Engine VM 的機器類型會歸類為機器系列,這些系列經過最佳化,可處理不同的工作負載。根據工作負載需求,選擇合適的機器系列。
| 機器家族 | 建議用於工作負載類型 | 永續發展指南 |
|---|---|---|
| 一般用途執行個體 (E2、N2、N4、Tau T2A/T2D):這類執行個體提供 CPU 與記憶體的平衡比率。 | 網路伺服器、微服務、中小型資料庫和開發環境。 | E2 系列會動態分配資源,因此能源效率極高,且物超所值。Tau T2A 系列採用 Arm 架構處理器,這類處理器通常在大型工作負載中,每單位效能的能源效率更高。 |
| 運算最佳化執行個體 (C2、C3):這些執行個體提供高 vCPU 與記憶體比率,以及每個核心的高效能。 | 高效能運算 (HPC)、批次處理、遊戲伺服器和以 CPU 為基礎的資料分析。 | C 系列執行個體可加快完成 CPU 密集型工作,進而縮短工作總運算時間並減少能源消耗。 |
| 記憶體最佳化執行個體 (M3、M2):這類執行個體專為需要大量記憶體的工作負載設計。 | 大型記憶體內資料庫和資料倉儲,例如 SAP HANA 或記憶體內分析。 | 記憶體最佳化執行個體可將耗用大量記憶體的工作負載,整合到較少的實體節點上。相較於使用多個較小的執行個體,這種整合方式可減少總能源需求。高效能記憶體可縮短資料存取延遲時間,進而減少 CPU 處於活動狀態的總時間。 |
| 儲存空間最佳化執行個體 (Z3): 這類執行個體提供總處理量高、延遲時間短的本機 SSD 儲存空間。 | 資料倉儲、記錄檔分析,以及 SQL、NoSQL 和向量資料庫。 | 儲存空間最佳化執行個體會在本地處理大量資料集,有助於減少跨位置網路資料輸出所用的能源。使用本機儲存空間執行高 IOPS 工作時,可避免過度佈建多個標準執行個體。 |
| 加速器最佳化執行個體 (A3、A2、G2):這些執行個體專為 GPU 和 TPU 加速工作負載而建構,例如 AI、機器學習和 HPC。 | 機器學習模型訓練和推論,以及科學模擬。 | TPU 專為最佳能源效率而設計。每瓦可提供更高的運算量。 與僅使用 CPU 的替代方案相比,搭載 NVIDIA H100 GPU 的 A3 系列等 GPU 加速執行個體,在訓練大型模型時的能源效率顯著提升。雖然 GPU 加速執行個體的額定耗電量較高,但完成工作所需的時間短得多。 |
升級至最新機型
使用最新機器類型可能有助於提升永續發展性。機器類型更新時,通常會設計成更節省能源,並提供更高的每瓦效能。使用最新機器類型的 VM 可能會以較低的耗電量完成相同的工作量。
CPU、GPU 和 TPU 通常會受益於晶片架構的技術進展,例如:
- 專用核心:處理器進步通常包括專用核心或常見工作負載的指令。舉例來說,CPU 可能有專為向量運算或整合式 AI 加速器設計的專用核心。將這些工作從主要 CPU 卸載後,工作完成效率會更高,耗電量也會減少。
- 提升電源管理效率:晶片架構的進步通常包括更精密的電源管理功能,例如根據工作負載動態調整電壓和頻率。這些電源管理功能可讓晶片以最高效率運作,並在閒置時進入低功耗狀態,進而減少能源消耗。
晶片架構的技術改良項目可直接帶來以下永續性和成本效益:
- 每瓦特效能更高:這是永續發展的重要指標。 舉例來說,在能源消耗量相同的情況下,C4 VM 的成本效益比 C3 VM 高出 40%。C4A 處理器的能源效率比同類型的 x86 處理器高出 60%。這些效能功能可讓您更快完成工作,或以較少的執行個體處理相同負載。
- 降低總能源消耗量:改良後的處理器可縮短特定工作使用運算資源的時間,進而減少整體能源使用量和碳足跡。對於短期、耗用大量運算資源的工作負載 (例如批次工作和機器學習模型訓練),碳排放影響尤其高。
- 資源使用率最佳化:最新機型通常更適合現代軟體,且與雲端平台的進階功能更相容。這類機器類型通常可提高資源使用率,減少過度佈建的需求,並確保每瓦電力都能有效運用。
部署容器化應用程式
您可以將 GKE 和 Cloud Run 等以容器為基礎的全代管服務,納入永續雲端運算策略。這些服務可協助您最佳化資源用量,並自動管理資源。
善用 Cloud Run 的「擴充至零」功能
Cloud Run 提供代管無伺服器環境,當服務沒有傳入流量或工作完成時,系統會自動將執行個體數縮減至零。自動調度資源功能可減少閒置基礎架構的能源消耗。只有在主動處理要求時,資源才會啟動。這項策略非常適合間歇性或以事件為核心的工作負載。對於 AI 工作負載,您可以使用Cloud Run 的 GPU,這樣一來,您只須在 GPU 實際使用時付費。
使用 GKE 自動執行資源最佳化
GKE 是容器自動化調度管理平台,可確保應用程式只使用所需的資源。為協助您自動化資源最佳化作業,GKE 提供下列技術:
- 裝箱: GKE Autopilot 會在可用節點上智慧地裝箱多個容器。裝箱演算法可盡量提高每個節點的利用率,並減少閒置或未充分利用的節點數量,進而降低能源消耗。
- 水平 Pod 自動調度資源 (HPA): HPA 會根據預先定義的指標 (例如 CPU 使用率或自訂應用程式專屬指標),自動調整容器副本 (Pod) 的數量。舉例來說,如果應用程式的流量突然暴增,GKE 會新增 Pod 來滿足需求。流量減少時,GKE 會減少 Pod 數量。這項動態擴充功能可避免資源過度佈建,因此您不必為不必要的運算容量付費或啟動電源。
- 垂直自動調度 Pod 資源 (VPA): 您可以設定 GKE,自動調整個別容器的 CPU 和記憶體分配量及限制。這項設定可確保系統不會為容器分配超出需求的資源,有助於避免資源過度佈建。
- GKE 多維度 Pod 自動調度資源: 對於複雜的工作負載,您可以同時設定 HPA 和 VPA,以最佳化 Pod 數量和每個 Pod 的大小。這項技術可確保在達到所需效能的同時,盡可能減少能源消耗。
- 拓撲感知排程 (TAS): TAS 會根據資料中心基礎架構的實體結構放置 Pod,藉此提升 GKE 中 AI 和機器學習工作負載的網路效率。TAS 會策略性地將工作負載共置,以盡量減少網路躍點。這種共置方式有助於減少通訊延遲和能源消耗。透過節點和專用硬體的實體對齊最佳化,TAS 可加速完成工作,並盡可能提高大規模 AI 和機器學習工作負載的能源效率。
設定碳感知排程
Google 持續將工作負載轉移至可提供最潔淨電力的地點和時段。我們也會將舊設備改造成其他用途,或回收舊設備。您可以運用這項碳感知排程策略,確保容器化工作負載使用乾淨能源。
如要實作碳感知排程,您需要即時取得某個區域資料中心的能源結構資訊。您可以從 GitHub 的「Carbon free energy for regions」 Google Cloud 存放區,或從 BigQuery 公開資料集,以機器可讀取的格式取得這項資訊。計算 Google 年度碳資料集時,所用的每小時電網組合和碳強度資料,是來自 Electricity Maps。
如要實作碳感知排程,建議採用下列技術:
- 地理位置轉移:排定工作負載在再生能源比例較高的區域執行。這種做法可讓你使用更潔淨的電網。
- 時間轉移:對於批次處理等非關鍵的彈性工作負載,請設定在離峰時段或再生能源最充足時執行工作負載。這種做法稱為「時間轉移」,可充分利用可用的潔淨能源,進而減少整體碳足跡。
建構節能的災難復原機制
準備災難復原 (DR) 時,通常會在次要區域預先佈建備援資源。不過,閒置或未充分運用的資源可能會造成大量能源浪費。選擇可盡量提高資源使用率、盡量減少碳排放影響,同時不影響復原時間目標 (RTO) 的 DR 策略。
針對冷啟動效率進行最佳化
請使用下列方法,盡量減少或完全消除次要 (DR) 區域中的現用資源:
- 優先採用冷 DR:讓 DR 區域的資源保持關閉或縮減至零的狀態。這種做法有助於消除閒置運算資源的碳足跡。
- 善用無伺服器容錯移轉功能:使用 Cloud Run 等代管無伺服器服務做為 DR 端點。Cloud Run 在閒置時會縮減至零,因此您可以維護 DR 拓撲,在流量改向 DR 區域前,不會消耗任何能源。
- 使用基礎架構即程式碼 (IaC) 自動執行復原作業:不必讓 DR 網站的資源持續運作 (暖機),只要在需要時使用 Terraform 等 IaC 工具快速佈建環境即可。
在備援和使用率之間取得平衡
資源重複是造成能源浪費的主要原因。如要減少冗餘,請採取下列做法:
- 優先採用雙主動模式,而非主動/被動模式:在主動/被動設定中,被動網站的資源會閒置,導致能源浪費。雙主動架構會確保兩個區域的所有佈建資源都能主動處理流量,這種做法有助於盡可能提高基礎架構的能源效率。
- 適當調整備援機制:只有在需要複製資料和服務,才能符合高可用性或災害復原需求時,才跨區域複製資料和服務。每增加一個副本,持久性儲存空間和網路輸出就會增加能源成本。