Dieses Prinzip in der Säule „Nachhaltigkeit“ des Google Cloud Well-Architected Framework enthält Empfehlungen zur Optimierung der Ressourcennutzung durch Ihre Arbeitslasten in Google Cloud.
Prinzipübersicht
Die Optimierung der Ressourcennutzung ist entscheidend für die Verbesserung der Nachhaltigkeit Ihrer Cloud-Umgebung. Jede bereitgestellte Ressource – von Rechenzyklen bis hin zur Datenspeicherung – wirkt sich direkt auf den Energieverbrauch, die Wasserintensität und die CO2-Emissionen aus. Um die Umweltauswirkungen Ihrer Arbeitslasten zu reduzieren, müssen Sie beim Bereitstellen, Verwalten und Verwenden von Cloud-Ressourcen fundierte Entscheidungen treffen.
Empfehlungen
Berücksichtigen Sie die Empfehlungen in den folgenden Abschnitten, um die Ressourcennutzung zu optimieren.
Automatisierte und dynamische Skalierung implementieren
Durch die automatisierte und dynamische Skalierung wird die Ressourcennutzung optimiert. So lässt sich Energieverschwendung durch inaktive oder überdimensionierte Infrastruktur vermeiden. Die Reduzierung der verschwendeten Energie führt zu niedrigeren Kosten und geringeren CO2-Emissionen.
Verwenden Sie die folgenden Techniken, um die automatisierte und dynamische Skalierbarkeit zu implementieren.
Horizontale Skalierung verwenden
Die horizontale Skalierung ist die bevorzugte Skalierungstechnik für die meisten Cloud-First-Anwendungen. Anstatt die Größe jeder Instanz zu erhöhen ( vertikale Skalierung), fügen Sie Instanzen hinzu, um die Last zu verteilen. Sie können beispielsweise verwaltete Instanzgruppen (Managed Instance Groups, MIGs) verwenden, um eine Gruppe von Compute Engine-VMs automatisch zu skalieren. Horizontal skalierte Infrastruktur ist widerstandsfähiger, da der Ausfall einer Instanz die Verfügbarkeit der Anwendung nicht beeinträchtigt. Die horizontale Skalierung ist auch eine ressourceneffiziente Technik für Anwendungen mit variabler Last.
Geeignete Skalierungsrichtlinien konfigurieren
Konfigurieren Sie die Autoscaling-Einstellungen entsprechend den Anforderungen Ihrer Arbeitslasten. Definieren Sie benutzerdefinierte Messwerte und Grenzwerte, die für das Anwendungsverhalten spezifisch sind. Verlassen Sie sich nicht nur auf die CPU-Auslastung, sondern berücksichtigen Sie auch Messwerte wie die Warteschlangentiefe für asynchrone Aufgaben, die Anfragelatenz und benutzerdefinierte Anwendungs-Messwerte. Um häufige, unnötige Skalierungen oder Flapping zu vermeiden, definieren Sie klare Skalierungs richtlinien. Konfigurieren Sie beispielsweise für Arbeitslasten, die Sie in Google Kubernetes Engine (GKE) bereitstellen, eine geeignete Autoscaling-Richtlinie für Cluster.
Reaktive und proaktive Skalierung kombinieren
Bei der reaktiven Skalierung wird das System als Reaktion auf Laständerungen in Echtzeit skaliert. Diese Technik eignet sich für Anwendungen mit unvorhersehbaren Lastspitzen.
Die proaktive Skalierung eignet sich für Arbeitslasten mit vorhersagbaren Mustern, z. B. feste Geschäftszeiten und wöchentliche Berichte. Verwenden Sie für solche Arbeitslasten das zeitbasierte Autoscaling, um Ressourcen vorab bereitzustellen, damit sie eine erwartete Last bewältigen können. Diese Technik verhindert, dass Ressourcen knapp werden, und sorgt für eine reibungslosere Nutzererfahrung mit höherer Effizienz. Außerdem können Sie so proaktiv für bekannte Lastspitzen planen, z. B. bei großen Verkaufsveranstaltungen und gezielten Marketingmaßnahmen.
Google Cloud Verwaltete Dienste und Funktionen wie GKE Autopilot, Cloud Run und MIGs verwalten die proaktive Skalierung automatisch, indem sie aus Ihren Arbeitslastmustern lernen. Wenn ein Cloud Run-Dienst keinen Traffic empfängt, wird er standardmäßig auf null Instanzen skaliert.
Zustandslose Anwendungen entwickeln
Damit eine Anwendung horizontal skaliert werden kann, müssen ihre Komponenten zustandslos sein. Das bedeutet, dass die Sitzung oder die Daten eines bestimmten Nutzers nicht an eine einzelne Compute-Instanz gebunden sind. Wenn Sie den Sitzungsstatus außerhalb der Compute-Instanz speichern, z. B. in Memorystore for Redis, kann jede Compute-Instanz Anfragen von jedem Nutzer verarbeiten. Dieser Designansatz ermöglicht eine nahtlose und effiziente horizontale Skalierung.
Planung und Batches verwenden
Die Batchverarbeitung ist ideal für umfangreiche, nicht dringende Arbeitslasten. Mit Batchjobs können Sie Ihre Arbeitslasten im Hinblick auf Energieeffizienz und Kosten optimieren.
Verwenden Sie die folgenden Techniken, um Planung und Batchjobs zu implementieren.
Planung für geringe Kohlenstoffintensität
Planen Sie Ihre Batchjobs so, dass sie in Regionen mit geringen CO2-Emissionen und zu Zeiten ausgeführt werden, in denen das lokale Stromnetz einen hohen Anteil an sauberer Energie hat. Im Bericht zur CO2-Bilanzfinden Sie die Zeiten mit der geringsten Kohlenstoffintensität für eine Region.
Spot-VMs für nicht kritische Arbeitslasten verwenden
Spot-VMs ermöglichen es Ihnen, ungenutzte Compute Engine-Kapazität zu einem stark reduzierten Preis zu nutzen. Spot-VMs können vorzeitig beendet werden, bieten aber eine kostengünstige Möglichkeit, große Datasets zu verarbeiten, ohne dass dedizierte, immer aktive Ressourcen erforderlich sind. Spot-VMs sind ideal für nicht kritische, fehlertolerante Batchjobs.
Jobs konsolidieren und parallelisieren
Um den Aufwand für das Starten und Herunterfahren einzelner Jobs zu reduzieren, gruppieren Sie ähnliche Jobs in einem großen Batch. Führen Sie diese Arbeitslasten mit hohem Volumen in Diensten wie Batch aus. Der Dienst stellt die erforderliche Infrastruktur automatisch bereit und verwaltet sie. So wird eine optimale Ressourcennutzung gewährleistet.
Verwaltete Dienste verwenden
Verwaltete Dienste wie Batch und Dataflow übernehmen automatisch die Bereitstellung, Planung und Überwachung von Ressourcen. Die Cloud-Plattform optimiert die Ressourcen. Sie können sich auf die Anwendungslogik konzentrieren. Dataflow skaliert beispielsweise die Anzahl der Worker automatisch basierend auf dem Datenvolumen in der Pipeline, sodass Sie nicht für inaktive Ressourcen bezahlen.
VM-Maschinenfamilien an Arbeitslastanforderungen anpassen
Die Maschinentypen, die Sie für Ihre Compute Engine-VMs verwenden können, sind in Maschinenfamiliengruppiert, die für verschiedene Arbeitslasten optimiert sind. Wählen Sie geeignete Maschinenfamilien basierend auf den Anforderungen Ihrer Arbeitslasten aus.
| Maschinenfamilie | Empfohlen für Arbeitslasttypen | Hinweise zur Nachhaltigkeit |
|---|---|---|
| Instanzen für allgemeine Zwecke (E2, N2, N4, Tau T2A/T2D): Diese Instanzen bieten ein ausgewogenes Verhältnis zwischen CPU und Arbeitsspeicher. | Webserver, Mikrodienste, kleine bis mittelgroße Datenbanken und Entwicklungsumgebungen. | Die E2-Serie ist aufgrund der dynamischen Zuweisung von Ressourcen sehr kosteneffizient und energieeffizient. Die Tau T2A-Serie verwendet Arm-basierte Prozessoren, die bei umfangreichen Arbeitslasten oft energieeffizienter pro Leistungseinheit sind. |
| Computing-optimierte Instanzen (C2, C3): Diese Instanzen bieten ein hohes Verhältnis von vCPU zu Arbeitsspeicher und eine hohe Leistung pro Kern. | Hochleistungs-Computing (HPC), Batchverarbeitung, Gameserver, und CPU-basierte Datenanalyse. | Mit einer Instanz der C-Serie können Sie CPU-intensive Aufgaben schneller erledigen, So werden die gesamte Rechenzeit und der Energieverbrauch des Jobs reduziert. |
| Speicheroptimierte Instanzen (M3, M2): Diese Instanzen sind für Arbeitslasten konzipiert, die viel Arbeitsspeicher benötigen. | Große speicherinterne Datenbanken und Data Warehouses wie SAP HANA oder speicherinterne Analysen. | Mit speicheroptimierten Instanzen können speicherintensive Arbeitslasten auf weniger physischen Knoten konsolidiert werden. Diese Konsolidierung reduziert den Gesamtenergieverbrauch im Vergleich zur Verwendung mehrerer kleinerer Instanzen. Hochleistungsarbeitsspeicher reduziert die Latenz beim Datenzugriff, wodurch die Gesamtzeit, die die CPU im aktiven Zustand verbringt, reduziert werden kann. |
| Speicheroptimierte Instanzen (Z3) : Diese Instanzen bieten lokalen SSD-Speicher mit hohem Durchsatz und geringer Latenz. | Data Warehousing, Protokollanalyse sowie SQL-, NoSQL- und Vektordatenbanken. | Speicheroptimierte Instanzen verarbeiten große Datasets lokal. So wird die Energie eliminiert, die für den Daten-Egress über Standorte hinweg verwendet wird. Wenn Sie lokalen Speicher für Aufgaben mit hohem IOPS-Wert verwenden, vermeiden Sie die Überbereitstellung mehrerer Standardinstanzen. |
| Beschleunigeroptimierte Instanzen (A3, A2, G2): Diese Instanzen sind für GPU- und TPU-beschleunigte Arbeitslasten wie KI, ML und HPC konzipiert. | ML-Modelltraining und -Inferenz sowie wissenschaftliche Simulationen. | TPUs sind für optimale Energie effizienz konzipiert. Sie bieten mehr Berechnungen pro Watt. Eine GPU-beschleunigte Instanz wie die A3-Serie mit NVIDIA H100 GPUs kann für das Training großer Modelle deutlich energieeffizienter sein als eine reine CPU-Alternative. Obwohl eine GPU-beschleunigte Instanz einen höheren nominalen Stromverbrauch hat, wird die Aufgabe viel schneller abgeschlossen. |
Auf die neuesten Maschinentypen upgraden
Die Verwendung der neuesten Maschinentypen kann zur Verbesserung der Nachhaltigkeit beitragen. Wenn Maschinentypen aktualisiert werden, sind sie oft energieeffizienter und bieten eine höhere Leistung pro Watt. VMs, die die neuesten Maschinentypen verwenden, können dieselbe Arbeitsmenge mit geringerem Stromverbrauch erledigen.
CPUs, GPUs und TPUs profitieren oft von technischen Weiterentwicklungen in der Chiparchitektur, z. B.:
- Spezialisierte Kerne: Weiterentwicklungen bei Prozessoren umfassen oft spezialisierte Kerne oder Anweisungen für häufige Arbeitslasten. CPUs können beispielsweise dedizierte Kerne für Vektoroperationen oder integrierte KI-Beschleuniger haben. Wenn diese Aufgaben von der Haupt-CPU ausgelagert werden, werden sie effizienter erledigt und verbrauchen weniger Energie.
- Verbessertes Energiemanagement: Weiterentwicklungen in der Chiparchitektur umfassen oft ausgefeiltere Energiemanagementfunktionen, z. B. die dynamische Anpassung von Spannung und Frequenz basierend auf der Arbeitslast. Mit diesen Energiemanagementfunktionen können die Chips mit maximaler Effizienz ausgeführt werden und in inaktiven Phasen in den Energiesparmodus wechseln. So wird der Energieverbrauch minimiert.
Die technischen Verbesserungen in der Chiparchitektur bieten die folgenden direkten Vorteile für Nachhaltigkeit und Kosten:
- Höhere Leistung pro Watt: Dies ist ein wichtiger Messwert für die Nachhaltigkeit. Die C4-VMs bieten beispielsweise ein um 40% besseres Preis-Leistungs-Verhältnis als C3-VMs bei gleichem Energieverbrauch. Der C4A-Prozessor bietet eine um 60% höhere Energieeffizienz als vergleichbare x86-Prozessoren. Mit diesen Leistungsfunktionen können Sie Aufgaben schneller erledigen oder weniger Instanzen für dieselbe Last verwenden.
- Geringerer Gesamtenergieverbrauch: Mit verbesserten Prozessoren werden Rechen ressourcen für eine bestimmte Aufgabe kürzer verwendet. So werden der Gesamtenergieverbrauch und die CO2-Emissionen reduziert. Die Auswirkungen auf die CO2-Bilanz sind besonders hoch bei kurzlebigen, rechenintensiven Arbeitslasten wie Batchjobs und ML-Modelltraining.
- Optimale Ressourcennutzung: Die neuesten Maschinentypen eignen sich oft besser für moderne Software und sind besser mit erweiterten Funktionen von Cloud-Plattformen kompatibel. Diese Maschinentypen ermöglichen in der Regel eine bessere Ressourcennutzung, wodurch die Notwendigkeit einer Überbereitstellung reduziert wird und sichergestellt wird, dass jedes Watt Strom produktiv genutzt wird.
Containerbasierte Anwendungen bereitstellen
Sie können containerbasierte, vollständig verwaltete Dienste wie GKE und Cloud Run als Teil Ihrer Strategie für nachhaltiges Cloud Computing verwenden. Diese Dienste helfen, die Ressourcennutzung zu optimieren und die Ressourcenverwaltung zu automatisieren.
Funktion „Skalierung auf null“ von Cloud Run nutzen
Cloud Run bietet eine verwaltete serverlose Umgebung, die Instanzen automatisch auf null skaliert, wenn kein eingehender Traffic für einen Dienst vorhanden ist oder wenn ein Job abgeschlossen ist. Autoscaling trägt dazu bei, den Energieverbrauch durch inaktive Infrastruktur zu vermeiden. Ressourcen werden nur mit Strom versorgt, wenn sie Anfragen aktiv verarbeiten. Diese Strategie ist sehr effektiv für intermittierende oder ereignisgesteuerte Arbeitslasten. Für KI-Arbeitslasten können Sie GPUs mit Cloud Run verwenden, so dass Sie nur für die GPUs zahlen, wenn sie verwendet werden.
Ressourcenoptimierung mit GKE automatisieren
GKE ist eine Containerorchestrierungsplattform, die dafür sorgt, dass Anwendungen nur die Ressourcen verwenden, die sie benötigen. Um die Ressourcenoptimierung zu automatisieren, bietet GKE die folgenden Techniken:
- Bin Packing: GKE Autopilot packt mehrere Container intelligent auf die verfügbaren Knoten. Bin Packing maximiert die Auslastung jedes Knotens und reduziert die Anzahl der inaktiven oder unterausgelasteten Knoten. So wird der Energieverbrauch reduziert.
- Horizontales Pod-Autoscaling (Horizontal Pod Autoscaling, HPA): Mit HPA wird die Anzahl der Containerreplikate (Pods) automatisch anhand vordefinierter Messwerte wie der CPU-Auslastung oder benutzerdefinierter anwendungsspezifischer Messwerte angepasst. Wenn beispielsweise der Traffic für Ihre Anwendung ansteigt, fügt GKE Pods hinzu, um die Nachfrage zu decken. Wenn der Traffic nachlässt, reduziert GKE die Anzahl der Pods. Durch diese dynamische Skalierung wird eine Überbereitstellung von Ressourcen verhindert, sodass Sie nicht für unnötige Rechenkapazität bezahlen oder diese mit Strom versorgen müssen.
- Vertikales Pod-Autoscaling (Vertical Pod Autoscaling, VPA): Sie können GKE so konfigurieren, dass die CPU- und Arbeitsspeicherzuweisungen und -limits für einzelne Container automatisch angepasst werden. Diese Konfiguration sorgt dafür, dass einem Container nicht mehr Ressourcen zugewiesen werden als erforderlich. So wird eine Überbereitstellung von Ressourcen verhindert.
- Multidimensionales Pod-Autoscaling in GKE: Für komplexe Arbeitslasten können Sie HPA und VPA gleichzeitig konfigurieren, um sowohl die Anzahl der Pods als auch die Größe der einzelnen Pods zu optimieren. Diese Technik trägt dazu bei, den Energieverbrauch für die erforderliche Leistung so gering wie möglich zu halten.
- Topologieabhängige Planung (Topology-Aware Scheduling, TAS): TAS verbessert die Netzwerkeffizienz für KI- und ML-Arbeitslasten in GKE, indem Pods basierend auf der physischen Struktur der Rechenzentrumsinfrastruktur platziert werden. TAS platziert Arbeitslasten strategisch zusammen, um die Anzahl der Netzwerk-Hops zu minimieren. Diese Platzierung trägt dazu bei, die Kommunikationslatenz und den Energieverbrauch zu reduzieren. Durch die Optimierung der physischen Ausrichtung von Knoten und spezialisierter Hardware beschleunigt TAS die Aufgabenerledigung und maximiert die Energieeffizienz von umfangreichen KI- und ML-Arbeitslasten.
CO2-bewusste Planung konfigurieren
Bei Google verlagern wir unsere Arbeitslasten kontinuierlich an Standorte und Zeiten an denen der sauberste Strom verfügbar ist. Außerdem verwenden wir ältere Geräte für alternative Anwendungsfälle wieder oder verwerten, sie. Mit dieser CO2-bewussten Planungsstrategie können Sie dafür sorgen, dass Ihre containerbasierten Arbeitslasten saubere Energie nutzen.
Um die CO2-bewusste Planung zu implementieren, benötigen Sie Informationen zum Energiemix, der Rechenzentren in einer Region in Echtzeit versorgt. Sie können diese Informationen in einem maschinenlesbaren Format aus dem Repository Carbon free energy for Google Cloud regions auf GitHub oder aus einem öffentlichen BigQuery-Dataset abrufen. Die stündlichen Daten zum Energiemix und zur Kohlenstoffintensität, die zur Berechnung des jährlichen CO2-Datensatzes von Google verwendet werden, stammen von Electricity Maps.
Für die Implementierung der CO2-bewussten Planung empfehlen wir die folgenden Techniken:
- Geografische Verlagerung: Planen Sie Ihre Arbeitslasten so, dass sie in Regionen ausgeführt werden, in denen ein höherer Anteil an erneuerbaren Energiequellen verwendet wird. So können Sie sauberere Stromnetze nutzen.
- Zeitliche Verlagerung: Konfigurieren Sie für nicht kritische, flexible Arbeitslasten wie die Batch verarbeitung, dass sie außerhalb der Spitzenzeiten oder dann ausgeführt werden, wenn am meisten erneuerbare Energie verfügbar ist. Dieser Ansatz wird als zeitliche Verlagerung bezeichnet und trägt dazu bei, die Gesamt-CO2-Bilanz zu verbessern, indem sauberere Energiequellen genutzt werden, wenn sie verfügbar sind.
Energieeffiziente Notfallwiederherstellung entwickeln
Die Vorbereitung auf die Notfallwiederherstellung (Disaster Recovery, DR) umfasst oft die Vorabbereitstellung redundanter Ressourcen in einer sekundären Region. Inaktive oder unterausgelastete Ressourcen können jedoch zu erheblicher Energieverschwendung führen. Wählen Sie DR-Strategien, die die Ressourcennutzung maximieren und die CO2-Auswirkungen minimieren, ohne Ihre Ziele für die Wiederherstellungszeit (Recovery Time Objectives, RTOs) zu beeinträchtigen.
Für effiziente Kaltstarts optimieren
Verwenden Sie die folgenden Ansätze, um aktive Ressourcen in Ihrer sekundären (DR-)Region zu minimieren oder zu eliminieren:
- Kalte DR priorisieren: Halten Sie Ressourcen in der DR-Region ausgeschaltet oder in einem auf null skalierten Zustand. So können Sie die CO2-Emissionen inaktiver Rechenressourcen vermeiden.
- Serverloses Failover nutzen: Verwenden Sie verwaltete serverlose Dienste wie Cloud Run für DR-Endpunkte. Cloud Run wird auf null skaliert, wenn es nicht verwendet wird. So können Sie eine DR-Topologie beibehalten, die keinen Strom verbraucht, bis der Traffic zur DR-Region umgeleitet wird.
- Wiederherstellung mit Infrastruktur als Code (Infrastructure as Code, IaC) automatisieren: Anstatt Ressourcen am DR-Standort aktiv zu halten (warm), verwenden Sie ein IaC-Tool wie Terraform, um Umgebungen nur bei Bedarf schnell bereitzustellen.
Gleichgewicht zwischen Redundanz und Auslastung
Ressourcenredundanz ist ein Hauptgrund für Energieverschwendung. Verwenden Sie die folgenden Ansätze, um die Redundanz zu reduzieren:
- Aktiv/Aktiv gegenüber Aktiv/Passiv bevorzugen: Bei einer Aktiv/Passiv Konfiguration sind die Ressourcen am passiven Standort inaktiv, was zu Energieverschwendung führt. Eine optimal dimensionierte Aktiv/Aktiv-Architektur sorgt dafür, dass alle bereitgestellten Ressourcen in beiden Regionen aktiv Traffic verarbeiten. So können Sie die Energieeffizienz Ihrer Infrastruktur maximieren.
- Redundanz richtig dimensionieren: Replizieren Sie Daten und Dienste nur dann über Regionen hinweg, wenn die Replikation erforderlich ist, um die Anforderungen an hohe Verfügbarkeit oder DR zu erfüllen. Jedes zusätzliche Replikat erhöht die Energiekosten für nichtflüchtigen Speicher und Netzwerk-Egress.