CPU-Overcommit auf VMs für einzelne Mandanten


Mit einem CPU-Overcommit auf Knoten für einzelne Mandanten können Sie Instanzen planen, die ihre freien CPU-Zyklen gemeinsam nutzen. Dadurch ist eine Überdimensionierung von Ressourcen eines Knotens für einzelne Mandanten möglich. Außerdem können mehr VM-CPUs auf einem Knoten für einzelne Mandanten geplant werden, als normalerweise verfügbar sind. Ein CPU-Overcommit ist besonders für Arbeitslasten hilfreich, die nicht komplett genutzt werden, bei denen jedoch relativ unkorrelierte Bursts auftreten.

Mit einem CPU-Overcommit können Sie die Kosten pro VM reduzieren, indem Sie die Kosten eines Knotens für einzelne Mandanten auf mehr VMs verteilen. Außerdem sind die Lizenzkosten pro VM niedriger, wenn Lizenzen pro Socket oder pro Kern verwendet werden.

VMs mit mehrfach vergebenen CPUs (Overcommit) können auf folgende Weise ansonsten nicht verwendete CPU-Ressourcen nutzen:

  • Wenn ein Knoten für einzelne Mandanten nicht voll ist, können VMs mit einem Overcommit nicht zugewiesene Kerne nutzen.

  • Wenn eine andere VM auf einem Knoten für einzelne Mandanten nicht alle ihre CPU-Ressourcen nutzt, z. B. weil die CPU inaktiv ist, kann eine VM mit Overcommit diese CPU-Ressourcen nutzen.

Overcommit-Stufe

Sie können den Wert für die Mindestanzahl an CPUs angeben, die einer VM beim Erstellen einer VM oder nach dem Beenden einer VM zugewiesen werden. Die Overcommit-Stufe stellt die Mindestanzahl der zugrunde liegenden CPU-Threads dar, die für eine VM garantiert verfügbar sind. Wenn die VM mehr vCPUs als zugrunde liegende Threads hat, teilen sich die vCPUs der VM die zugrunde liegenden Rechenressourcen und werden mit beeinträchtigter Leistung ausgeführt.

Sie können diesen Wert für jede VM festlegen, sodass Sie VMs mit unterschiedlichen CPU-Overcommit-Relationen auf einem einzelnen Knoten für einzelne Mandanten bereitstellen können. Niedrigere Werte reduzieren die Kapazitätsanforderungen auf Kosten der Leistung, wenn korrelierte Bursts auftreten. Um den optimalen Wert für die Mindestanzahl von CPUs zu ermitteln, müssen Sie sowohl Ihre Arbeitslasten als auch die iterative Anpassung dieses Werts verstehen.

Achten Sie beim Festlegen dieses Werts auf Folgendes:

  • Wenn Sie den Wert für die Mindestanzahl der CPUs nicht festlegen oder den Wert für die Mindestanzahl der CPUs auf die Anzahl der CPUs auf dem Maschinentyp der VM festlegen, ist das zulässige Overcommit-Verhältnis der VM 1,0. In diesem Fall sind alle CPUs nur für diese VM zugänglich und es sind keine CPU-Ressourcen für ein Overcommit anderer VMs verfügbar.

  • Die Mindestanzahl an CPUs darf nicht größer sein als die Anzahl an CPUs, die durch den VM-Maschinentyp festgelegt ist.

  • Die Summe der Werte für die Mindestanzahl an CPUs für alle VMs auf einem Knoten für einzelne Mandanten darf die CPU-Kapazität dieses Knotentyps für einzelne Mandanten nicht überschreiten. Für den Knotentyp n1-node-96-624 beträgt diese Kapazität 96.

Der vom Maschinentyp der VM festgelegte Wert für die CPU-Anzahl ist ein statischer Wert. Er steht für die Anzahl der CPUs, auf die die VM vorübergehend zugreifen darf, wenn diese CPUs verfügbar sind. Wenn Sie eine andere Anzahl an CPUs als die von fest vordefinierten Maschinentypen bereitgestellte Anzahl benötigen, können Sie einen benutzerdefinierten Maschinentyp verwenden.

Hinweise

Bevor Sie die CPU-Overcommit-Stufen für VMs konfigurieren, sollten Sie prüfen, wie kritisch die Arbeitslast ist. Für weniger kritische Arbeitslasten wie Entwicklungs- und Testarbeitslasten sind höhere Overcommit-Stufen potenziell kein Problem. Für kritischere Arbeitslasten, z. B. für ein Zahlungssystem in einer Produktionsumgebung, kommt ein Overcommit jedoch möglicherweise kaum oder gar nicht infrage.

Berücksichtigen Sie auch die Nutzung Ihrer Arbeitslast. Arbeitslasten mit hoher CPU-Nutzung sind keine guten Kandidaten für ein CPU-Overcommit, da sie höchstwahrscheinlich keine freien Nutzungszyklen für andere VMs mit einem Overcommit haben. Darüber hinaus profitieren eventuell Arbeitslasten mit niedriger durchschnittlicher CPU-Nutzung und niedrigen Auslastungsspitzen von unterschiedlich großen Maschinentypen.

Die Verwendung eines CPU-Overcommit ist besonders sinnvoll bei Arbeitslasten mit nur sporadischen Bursts und hoher Spitzenauslastung, aber niedriger durchschnittlicher Auslastung, da diese Arbeitslasten mit größerer Wahrscheinlichkeit verfügbare CPU-Ressourcen freigeben können, wenn einige VMs ihre Nutzung vorübergehend erhöhen müssen. Wenn für alle VMs auf einem Host gleichzeitig ein Burst auftritt, hat der Host nicht genügend Ressourcen für Ihre VMs.

Beschränkungen

Arbeitslasteinschränkungen

Ein CPU-Overcommit eignet sich optimal für Arbeitslasten ohne feste Leistungsanforderungen, beispielsweise für Entwicklungs- und Testarbeitslasten sowie Virtual Desktop Infrastructures.

Ein hoher CPU-Overcommit-Wert ist ungeeignet für Arbeitslasten, die empfindlich auf Leistungsschwankungen reagieren.

Für Arbeitslasten, deren durchschnittliche und Spitzenauslastung gleichbleibend gering sind, empfiehlt Google die Größenanpassung. Das heißt, statt eines CPU-Overcommits empfiehlt Google, die Größe der VM-Instanz an die Ressourcenanforderungen dieser Arbeitslast anzupassen.

Wenn das Overcommit für Ihre Instanzen zu hoch ist, verschieben Sie sie auf einen anderen Knoten für einzelne Mandanten.

Einschränkungen für Maschinentypen

CPU-Overcommits sind nur auf folgenden Maschinentypen möglich:

Einschränkungen für Overcommit-Stufen

Sie können die Mindestanzahl an CPUs auf jedem Knoten für einzelne Mandanten nur für die Hälfte der CPUs einer VM konfigurieren. Dadurch beträgt das maximale Overcommit-Verhältnis von Knoten für einzelne Mandanten 2,0.

Einschränkungen für die VM-Planung

Knotengruppen für einzelne Mandanten, die auf Knotenvorlagen für einzelne Mandanten basieren und nicht für CPU-Overcommits konfiguriert sind, ermöglichen keine Bereitstellung von VMs mit aktiviertem CPU-Overcommit. Das heißt, Sie können keine VM mit einer bestimmten Mindestanzahl an CPUs in einer Knotengruppe für einzelne Mandanten planen, die nicht für ein CPU-Overcommit konfiguriert ist.

Kontingent

Das CPU-Kontingent basiert auf der Anzahl der vCPUs des Knotentyps für einzelne Mandanten und nicht auf der möglichen maximalen Anzahl an vCPUs, die für ein Overcommit verfügbar sind.

Kosten

Bei Knoten für einzelne Mandanten, für die in der Knotenvorlage ein CPU-Overcommit ausgewählt ist, werden zusätzlich 25 % abgerechnet. Diese Gebühr gilt ergänzend zu den 10 % Aufpreis für die Ausführung von VMs auf Knoten für einzelne Mandanten. Der CPU-Overcommit-Preisaufschlag ist fix, d. h. unabhängig von der CPU-Overcommit-Stufe und von der Anzahl der auf dem Knoten für einzelne Mandanten geplanten VMs.

Knoten für einzelne Mandanten bieten Rabatte für zugesicherte Nutzung. Rabatte für kontinuierliche Nutzung sind für den Preisaufschlag bei der Nutzung durch einen einzelnen Mandanten und für den CPU-Overcommit-Preisaufschlag verfügbar.

Die Kosten für das Ausführen von VMs auf Knoten für einzelne Mandanten können Sie mit dem Preisrechner schätzen.

VMs für einzelne Mandanten für Overcommit konfigurieren

Auf folgende Weise konfigurieren Sie VMs für einzelne Mandanten, damit CPU-Ressourcen für ein Overcommit verfügbar sind:

  1. Erstellen Sie eine Vorlage für einen Knoten für einzelnen Mandanten, in der ein CPU-Overcommit aktiviert ist. Sie müssen das CPU-Overcommit beim Erstellen der Knotenvorlage aktivieren. Sie können es nicht aktivieren, nachdem Sie eine Knotenvorlage erstellt haben.

  2. Erstellen Sie eine Gruppe von Knoten für einzelne Mandanten anhand der Knotenvorlage, für die ein CPU-Overcommit aktiviert ist.

  3. Erstellen Sie eine VM und tun Sie Folgendes:

    1. Wählen Sie einen Maschinentyp für die VM aus. Die Anzahl der CPUs für den Maschinentyp stellt die maximale Anzahl an CPUs dar, auf die die VM ausgehend von der Mindestanzahl vorübergehend zugreifen kann, wenn die Mindestanzahl an CPUs kleiner ist als die vom Maschinentyp festgelegte Anzahl an CPUs.

      Sie können für jede VM auf einem Knoten für einzelne Mandanten einen anderen Maschinentyp auswählen, sofern Sie die CPU- und Arbeitsspeicherkapazität des Knotens für einzelne Mandanten nicht überschreiten.

    2. Geben Sie die Mindestanzahl an CPUs an, die dieser einzelnen VM zugewiesen werden soll, oder erstellen Sie mit einer verwalteten Instanzgruppe mehrere VMs mit der gleichen CPU-Overcommit-Stufe.

Hinweise

  • Erstellen Sie eine Knotenvorlage für einzelne Mandanten und geben Sie --cpu-overcommit-type=enabled an.
  • Erstellen Sie eine Knotengruppe für einzelne Mandanten anhand der Knotenvorlage für einzelne Mandanten mit aktiviertem CPU-Overcommit.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

CPU-Overcommit-Stufe festlegen

Die folgenden Verfahren zeigen, wie Sie eine VM für einzelne Mandanten mit CPU-Ressourcen erstellen, die für ein Overcommit verfügbar sind. Zum Ändern der CPU-Overcommit-Stufe einer ausgeführten VM müssen Sie diese VM zuerst beenden.

Console

Erstellen Sie in der Google Cloud Console eine VM für einzelne Mandanten in einer Knotengruppe für einzelne Mandanten. Diese Gruppe muss aus einer Knotenvorlage für einzelne Mandanten erstellt worden sein, für die ein CPU-Overcommit aktiviert ist:

  1. Rufen Sie die Seite Knoten für einzelne Mandanten auf.

    Zur Seite "Knoten für einzelne Mandanten"

  2. Klicken Sie auf Knotengruppen.

  3. Klicken Sie auf die Knotengruppe für einzelne Mandanten, für die Sie eine VM erstellen möchten.

  4. Klicken Sie auf Instanz erstellen.

  5. Geben Sie unter Name, Region und Zone die entsprechenden Werte für die VM an.

  6. Wählen Sie unter Maschinenkonfiguration einen festen oder benutzerdefinierten Maschinentyp mit mindestens 4 vCPUs aus.

  7. Wählen Sie unter CPU-Overcommit die Option CPU-Overcommit aktivieren aus.

  8. Passen Sie unter Mindestens zugeteilte vCPUs den Schieberegler an oder geben Sie die Anzahl der vCPUs manuell ein, um die Overcommit-Stufe für die CPUs auf dieser VM festzulegen.

  9. Klicken Sie auf Erstellen, um eine VM-Instanz anzulegen, deren CPU-Ressourcen für ein Overcommit verfügbar sind.

gcloud

Das folgende Beispiel zeigt, wie Sie mit dem Befehl gcloud compute instances create eine VM für einzelne Mandanten mit einem festen Maschinentyp und mit CPU-Ressourcen erstellen, die für ein Overcommit verfügbar sind.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

Ersetzen Sie Folgendes:

  • VM_NAME ist der Name der VM, über die CPUs per Overcommit verteilt werden.

  • MACHINE_TYPE ist der Maschinentyp, für den die VM für einzelne Mandanten bereitgestellt werden soll. Die vom Maschinentyp festgelegte Anzahl an CPUs ist die maximale Anzahl an CPUs, auf die die VM ausgehend von MIN_VCPUS vorübergehend zugreifen kann.

  • MIN_VCPUS ist die Mindestanzahl an vCPUs, die garantiert für diese VM verfügbar sein soll.

  • GROUP_NAME ist der Name der Knotengruppe für einzelne Mandanten, in der die VM bereitgestellt werden soll.

Overcommit-Stufe für benutzerdefinierten Maschinentyp festlegen

Wenn Sie eine VM für einzelne Mandanten mit CPU-Ressourcen erstellen möchten, die für einen benutzerdefinierten Maschinentyp mehrfach vergeben werden können, lassen Sie das Flag --machine-type weg. Verwenden Sie stattdessen die Flags --custom-cpu und --custom-memory, um die Anzahl der CPUs und die Arbeitsspeichermenge in Gigabyte für die benutzerdefinierte Maschine festzulegen.

REST

Das folgende Beispiel zeigt, wie Sie mit dem Befehl instances.insert eine VM für einzelne Mandanten mit einem festen Maschinentyp und mit CPU-Ressourcen erstellen, die für ein Overcommit verfügbar sind.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die Projekt-ID.

  • ZONE ist die Zone für diese Anfrage.

  • MACHINE_TYPE_ZONE ist die Zone, die den Maschinentyp hostet.

  • MACHINE_TYPE ist der Maschinentyp, für den die VM für einzelne Mandanten bereitgestellt werden soll. Die vom Maschinentyp festgelegte Anzahl der CPUs ist die maximale Anzahl an CPUs, auf die die VM ausgehend von MIN_VCPUS vorübergehend zugreifen kann.

  • VM_NAME ist der Name der VM für einzelne Mandanten, für die ein CPU-Overcommit festgelegt werden soll.

  • MIN_VCPUS ist die Mindestanzahl an vCPUs, die garantiert für diese VM verfügbar sein soll.

  • GROUP_NAME ist der Name der Knotengruppe für einzelne Mandanten, in der die VM bereitgestellt werden soll.

Overcommit-Stufe für benutzerdefinierten Maschinentyp festlegen

Wenn Sie eine VM für einzelne Mandanten mit CPU-Ressourcen erstellen möchten, die mit einem benutzerdefinierten Maschinentyp für ein Overcommit verfügbar sein sollen, ersetzen Sie den Wert für das Feld machineType durch zones/zone/machineTypes/custom-CPUS-MEMORY. Geben Sie dabei für CPUS die Anzahl der CPUs und für MEMORY die Arbeitsspeichermenge in Megabyte für den benutzerdefinierten Maschinentyp an.

CPU-Overcommit-Stufe aktualisieren

Die folgenden Verfahren zeigen, wie Sie die CPU-Overcommit-Stufe einer VM für einzelne Mandanten aktualisieren.

gcloud

  1. Sie müssen diese VM zuerst beenden, um die CPU-Overcommit-Stufe einer ausgeführten VM zu ändern. Verwenden Sie zum Beenden einer VM den Befehl gcloud compute instances stop so:

    gcloud compute instances stop VM_NAME
    

    Ersetzen Sie dabei VM_NAME durch den Namen der Instanz, die Sie beenden möchten.

  2. Verwenden Sie den Befehl gcloud compute instances set-scheduling, um die CPU-Overcommit-Stufe einer VM für einzelne Mandanten zu aktualisieren:

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS
    

    Ersetzen Sie Folgendes:

    • VM_NAME ist der Name der VM für einzelne Mandanten, um die CPU-Overcommit-Stufe zu ändern.

    • MIN_VCPUS ist die Mindestanzahl an vCPUs, die garantiert für diese VM verfügbar sein soll.

REST

  1. Sie müssen diese VM zuerst beenden, um die CPU-Overcommit-Stufe einer ausgeführten VM zu ändern. Um eine VM zu beenden, erstellen Sie eine POST-Anfrage mit der Methode instances.stop so:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID.

    • ZONE ist die Zone für diese Anfrage.

    • VM_NAME ist der Name der VM für einzelne Mandanten, um die CPU-Overcommit-Stufe zu ändern.

  2. Verwenden Sie die Methode instances.setScheduling so, um die CPU-Overcommit-Stufe einer VM für einzelne Mandanten zu aktualisieren:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID.

    • ZONE ist die Zone für diese Anfrage.

    • VM_NAME ist der Name der VM für einzelne Mandanten, um die CPU-Overcommit-Stufe zu ändern.

    • MIN_VCPUS ist die Mindestanzahl an vCPUs, die garantiert für diese VM verfügbar sein soll.

CPU-Overcommitment für VMs für einzelne Mandanten deaktivieren

Die folgenden Verfahren zeigen, wie Sie die CPU-Überlastung einer VM für einzelne Mandanten deaktivieren.

gcloud

Das folgende Beispiel zeigt, wie Sie mit dem Befehl gcloud compute instances set-scheduling die CPU-Überlastung einer VM für einzelne Mandanten deaktivieren.

gcloud compute instances set-scheduling VM_NAME \
  --clear-min-node-cpu

Ersetzen Sie Folgendes:

  • VM_NAME: der Name der VM für einzelne Mandanten, um das CPU-Overcommitment zu deaktivieren.

REST

Das folgende Beispiel zeigt, wie Sie mit dem Befehl instances.setScheduling das CPU-Overcommitment einer VM für einzelne Mandanten deaktivieren.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
  "minNodeCpus":null
}

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die Projekt-ID.

  • ZONE ist die Zone für diese Anfrage.

  • VM_NAME: Name der VM für einzelne Mandanten, um die CPU-Overcommitment zu deaktivieren.

CPU-Auslastung ansehen

So prüfen Sie die CPU-Nutzung von VMs für einzelne Mandanten in einer Knotengruppe für einzelne Mandanten:

  1. Rufen Sie in der Cloud Console die Seite Knoten für einzelne Mandanten auf.

    Zur Seite "Knoten für einzelne Mandanten"

  2. Klicken Sie auf Knotengruppen.

  3. Klicken Sie auf die Knotengruppe für einzelne Mandanten, die den Knoten für einzelne Mandanten enthält, in dem sich die VM mit mehrfach vergebenen CPUs befindet.

  4. Klicken Sie auf den Knoten für einzelne Mandanten, der die VM mit mehrfach vergebenen CPUs enthält.

  5. Unter dem Namen des Knotens für einzelne Mandanten sind die CPU-Nutzung, der CPU-Overcommit-Typ und die CPU-Mindestnutzung zu sehen.

    • Unter CPU-Nutzung wird die Gesamtzahl der maximalen CPUs für alle VMs auf diesem Knoten für einzelne Mandanten angezeigt, geteilt durch die Anzahl der CPUs, die durch den Knotentyp für einzelne Mandanten festgelegt ist.

      Die Anzahl der CPUs auf dem Knoten, die für ein Overcommit zur Verfügung stehen, ist der Zähler ohne den Nenner und die Overcommit-Stufe ist der Quotient aus Zähler und Nenner.

    • Unter CPU-Mindestnutzung wird die Summe der Werte der Mindestanzahl an CPUs, die allen VMs auf einem Knoten für einzelne Mandanten zugewiesen wurde, angezeigt, geteilt durch die Anzahl der CPUs, die durch den Knotentyp festgelegt ist.

CPU-Overcommit-Stufen optimieren

Zur Optimierung der CPU-Overcommit-Stufe bietet Compute Engine den Messwert Scheduler Wait Time. Der Messwert Scheduler Wait Time gibt die aggregierte Wartezeit für alle vCPUs auf der VM an. Damit können Sie die Auswirkung des CPU-Overcommits auf die VM-Leistung ermitteln.

Die Empfindlichkeit der Arbeitslasten variiert, aber als Faustregel sollten 20 Millisekunden Wartezeit pro Sekunde (20 ms/s) als maximale Wartezeit pro vCPU verwendet werden. Wenn für eine VM z. B. 8 vCPUs festgelegt wurden, ergibt sich nach der Faustregel ein Grenzwert von 160 ms/s, was eine akzeptable durchschnittliche Scheduler Wait Time von 20 ms/s pro vCPU bedeutet. Die Leistungsanforderungen Ihrer Arbeitslast legen letztendlich die akzeptablen Grenzwerte fest.

  1. Rufen Sie in der Google Cloud Console die Seite Monitoring auf.

    Zu Monitoring

  2. Klicken Sie auf Metrics Explorer.

  3. Geben Sie im Feld Ressourcentyp VM-Instanz ein.

  4. Geben Sie im Feld Messwert Scheduler Wait Time ein.

  5. Optional können Sie Auslöser für Benachrichtigungen zu Grenzwerten der VM-Wartezeit einrichten. Klicken Sie dazu auf Alerting.

Nächste Schritte