PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke...

20
PERFORMANCE TUNING OF LATENCY-SENSITIVE WORKLOADS IN VSPHERE VMS TUNING MAßNAHMEN

Transcript of PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke...

Page 1: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

PERFORMANCE TUNING OF LATENCY-SENSITIVE WORKLOADS IN

VSPHERE VMS

TUNING MAßNAHMEN

Page 2: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.
Page 3: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

Inhalt

INHALT

1 Einführung ............................................................................................................................ 1

2 Tuning-Maßnahmen ............................................................................................................. 3

2.1 Empfohlene Reihenfolge der Tuning-Maßnahmen ............................................................. 3

2.2 BIOS Einstellungen ............................................................................................................ 4

2.3 Host-Energieverwaltungsrichtlinien .................................................................................... 6

2.4 VM Einstellungen ............................................................................................................... 6

2.4.1 Systemvoraussetzungen für NEVARIS Build ................................................................ 7

2.4.2 Latency Sensitivity ........................................................................................................ 8

2.4.3 Memory ........................................................................................................................ 9

2.4.4 Reservierung ................................................................................................................ 9

2.4.5 CPU .............................................................................................................................. 9

2.5 Gastbetriebssystem ......................................................................................................... 10

2.6 VMware Tools .................................................................................................................. 11

2.7 NUMA Einstellungen ........................................................................................................ 11

2.8 Einstellungen der physikalischen Netzwerkkarte .............................................................. 13

2.9 Einstellungen der virtuellen Netzwerkkarte ....................................................................... 14

2.10 LRO deaktivieren in Linux ................................................................................................ 15

2.11 LRO global deaktivieren in Windows ................................................................................ 16

Page 4: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

Versionshistorie

VERSIONSHISTORIE

Datum Version Beschreibung Author

2017-10-16 1.00 Tuning VMware vSphere WESTERMANN Boris

Page 5: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

Einführung | 1

1 Einführung

Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1

Programme in virtuellen Maschinen ausführen kann. Standardmäßig ist der ESXi Hypervisor

darauf ausgelegt den I/O-Durchsatz effektiv zu steuern, indem weniger CPU-Zyklen benötigt

werden und Energie gespart wird, wenn eine große Menge von Workloads ausgeführt werden.

Allerdings verlangen einige Anwendungen, dass die I/O-Latenz minimiert wird, auch auf Kosten

einer höheren CPU-Auslastung und eines höheren Stromverbrauchs.

Wir haben die Leistung von NEVARIS Build untersucht und herausgefunden, dass die Memory

Latenz eine herausragende Bedeutung für diese Applikation hat.

Den Empfehlungen folgend, die wir in diesem Best Practice Dokument beschrieben haben,

konnten wir die Memory Latenz von 17,313 ms auf 11,994 ms senken bzw. den Passmark Memory

Latenz Score von 37,3 auf 31,3 verbessern.1 Gleichzeitig war auffällig, dass nach der

Konfiguration, die Leistung gleichmäßig anfiel und nicht schwankte. Dies führt zu einer insgesamt

vorhersagbaren Leistungserbringung.

Beachten Sie bitte, dass die beschriebenen Einstellungen und die daraus resultierenden

Resultate von der eingesetzten Hardware und den darauf laufenden Workloads abhängig

sind. Bitte testen Sie die beschriebenen Einstellungen aus bevor Sie diese in einer

Produktivumgebung einsetzen.

1 https://www.passmark.com/products/pt.htm

Page 6: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

2 | Einführung

Page 7: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

Empfohlene Reihenfolge der Tuning-Maßnahmen | 3

2 Tuning-Maßnahmen

2.1 Empfohlene Reihenfolge der Tuning-Maßnahmen

In der folgenden Tabelle finden Sie eine Aufstellung der möglichen Maßnahmen. Wir haben für

unsere Tests alle grün unterlegten Maßnahmen durchgeführt und getestet.

BIOS

1. Power

Management

Static High/Max Performance

All versions of

vSphere Disable Processor C-states including C1E

Disable chipset power management

2. Processor

Options

Disable QPI Link Power Management

All versions of

vSphere

Enable Hyperthreading

Enable Virtualization Technology

Enable Intel VT-d

Enable SR-IOV

Enable Turbo Boost

Disable Node Interleaving

Host

3. Power

Management

Policy

High Performance vSphere 5.5 and

newer

NUMA

vCPU and

memory

affinities

VM Settings > Options tab > Advanced General > Configuration Parameters

numa.nodeAffinity = “0, 1, …”

vSphere 5.0 and

newer

PHYSICAL NIC

Disable

interrupt

moderation

esxcli system module parameters set -m <driver> -p "param=val" vSphere 5.0 and

newer

VIRTUAL NIC

Disable

interrupt

coalescing

VM Settings > Options tab > Advanced General > Configuration Parameters

ethernetX.coalescingScheme = "disabled"

vSphere 5.0 and

newer

Configuration > Advanced Settings > Net CoalesceDefaultOn = 0 vSphere 4.0/4.1

Disable LRO modprobe -r vmxnet3; modprobe vmxnet3 disable_lro=1 All versions of

vSphere

Page 8: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

4 | BIOS Einstellungen

VM

Reduce idle-

wakeup

latencies

VM Settings > Options tab > Advanced Genera > Configuration Parameters

monitor_control.halt_desched = "false" OR For > 1 vCPU VMs:

monitor.idleLoopSpinBeforeHalt = "true" For 1 vCPU VMs:

monitor.idleLoopSpinBeforeHaltUP = "true"

vSphere 5.1 and

older

4. Latency

Sensitivity Edit Settings > VM Options tab > Advanced > Latency Sensitivity > High

vSphere 5.5 and

newer

5. VMware

Tools

Install Vmware Tools and use VMXNET 3 network driver and Vmware Paravirtual

SCSI controller.

All versions of

vSphere

GUEST OS

Disable

interrupt

coalescing

netsh int tcp set global rsc=disable

All versions of

vSphere 6. Enable High

Performance

powerplan

Powercfg -setacvalueindex scheme_min sub_processor PERFBOOSTMODE 2

Powercfg -setactive scheme_min

2.2 BIOS Einstellungen

Server mit neuen Intel- und AMD-Prozessoren bieten Energieeinsparungsfunktionen, die

verschiedene Techniken verwenden, um die Last auf einem System dynamisch zu erkennen und

verschiedene Komponenten des Servers, einschließlich der CPU, des Chipsatzes und

Peripheriegeräte, in Energiesparzustände zu setzen, wenn das System idle ist.

Es gibt zwei Bereiche des Powermanagements der ESXi Plattform:

o Die BIOS-Einstellungen für die Energieverwaltung, die beeinflussen, was das BIOS an den Hypervisor weitergibt.

o Die Hypervisor-Einstellungen für das Power Management. Diese Richtlinien beeinflussen, was zu tun ist, wenn der Hypervisor erkennt, dass das System im Leerlauf ist.

Die Powermanagement-Funktionen der verschiedenen Stromsparmodi führen zu einer erhöhten

Latenz. Deshalb empfehlen wir die BIOS-Einstellungen für das Powermanagement auf „Static

High“ zu setzen. Dies führt zu Deaktivierung sämtlicher Powermanagement-Funktionen im BIOS.

Beachten Sie, dass die Erreichung der geringstmöglichen Latenz im Widerspruch zu

Energieeinsparung (Stromverbrauch, Kühlung) steht.

Prozessoren ab der Intel Nehalem Klasse (Intel Xeon 55xx und neuere) bieten zwei weitere

Powermanagement Optionen: C-State und Intel Turbo Boost. Die Aktivierung der C-States kann

die Speicherlatenz erhöhen und wird daher nicht für Workloads mit niedriger Latenz empfohlen.

Auch der erweiterte C-State C1E, führt zu erhöhten Latenzen. Intel Turbo Boost erhöht die

Taktfrequenz des Prozessors, wenn ein VM-Workload mehr Leistung anfordert und sollte für Low-

latency und hoch performante Workloads aktiviert werden. Da Turbo Boost jedoch Teile der CPU

Page 9: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

BIOS Einstellungen | 5

übertakten kann, sollte es deaktiviert bleiben, wenn die Anwendungen eine stabile, vorhersagbare

Leistung und eine geringe Latenzzeit mit minimalem Jitter erfordert.

Die Performance-Einstellungen unterscheiden sich bei den verschiedenen Server-Herstellern.

Hier z.B., für HP ProLiant Gen9 Server:

Gehe zu System Configuration > BIOS/Platform Configuration (RBSU)

o System Options > Processor Options: Setze “Hyperthreading” auf Enabled.

o System Options > Virtualization Options: Setze “Virtualization Technology” auf Enabled.

o System Options > Virtualization Options: Setze “Intel VT-d” auf Enabled.

o System Options > Virtualization Options: “Setze SR-IOV” auf Enabled.

o System Options > Serial Port Options: Disable alle seriellen Ports.

o Power Management: Setze das Power Profile auf ”Maximum Performance“.

o Power Management > Advanced Power Options: Setze ”Intel QPI Link Power Management“ auf Disabled.

o Performance Options: Setze “Intel Turbo Boost Technology” auf Enable.

o Performance Options > Advanced Performance Tuning Options: Setze “Node Interleaving” auf Disabled (aktiviert NUMA).

und für Dell PowerEdge Server:

o Memory Setting: Node Interleaving auf Disabled (aktiviert NUMA).

o Power Management: Setze Power Management auf Maximum Performance. Die manuelle Selektion (CPU Power and Performance Management, Fan Power and Performance Management, Memory Power and Performance Management) ist deaktiviert.

o Processor Setting: Setze Logical Processor auf Enabled. (aktiviert Hyper Threading)

o Processor Settings: Setze Virtualization Technology auf Enabled.

o Processor Settings: Setze Turbo Mode auf Enabled.

o Processor Settings: Setze C1E auf Disabled.

o Processor Settings: Setze C States auf Disabled.

Page 10: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

6 | Host-Energieverwaltungsrichtlinien

Anmerkungen

o Integrierte Geräte: VMware empfiehlt, Deaktiviere im BIOS alle nicht benötigten Geräte, wie z.B. serielle Ports, USB Ports, Floppy Drive.

o Processor Prefetchers: Die verschiedenen Prozessor Architekturen haben eventuell weitere “Processor Settings”, wie z.B. Hardware Prefetcher, Adjacent Cache Line Prefetch, DCU Streamer Prefetcher, Data Reuse, DRAM Prefetcher, usw. Die Standard-Einstellung ist Enabled, und generell sollten diese Einstellungen so belassen werden, da sie die Performance verbessern. Für sehr seltene, memory-intensive Workloads, können sie die einzelnen Einstellungen deaktivieren, um zu prüfen ob die Performance gesteigert wird.

Für weitere Empfehlungen schauen sie bitte in die Server-Dokumentation des jeweiligen

Herstellers.

2.3 Host-Energieverwaltungsrichtlinien

ESXi kann die Vorteile aus den verschiedenen Energieverwaltungsfunktionen, die von der

Hosthardware bereitgestellt werden, nutzen, um das Verhältnis von Leistung und Stromverbrauch

auszutarieren. Sie können steuern, wie ESXi diese Funktionen nutzt, indem Sie eine

Energieverwaltungsrichtlinie auswählen.

Die Auswahl einer Richtlinie für hohen Energieverbrauch bietet im Allgemeinen mehr absolute

Leistung, jedoch eine niedrigere Effizienz (Leistung pro Watt). Richtlinien für weniger

Energieverbrauch bieten weniger absolute Leistung, aber eine höhere Effizienz.

ESXi bietet fünf Energieverwaltungsrichtlinien (Hochleistung, Ausgeglichen, Geringer

Energieverbrauch, Benutzerdefiniert, nicht unterstützt). Wenn die Energieverwaltung vom Host

nicht unterstützt wird oder die BIOS-Einstellungen festlegen, dass das Hostbetriebssystem die

Energie nicht verwalten darf, steht nur die Richtlinie „Nicht unterstützt“ zur Verfügung.

Sie wählen mit dem vSphere Web Client eine Richtlinie für einen Host aus. Wenn Sie keine

Richtlinie auswählen, verwendet ESXi standardmäßig die Richtlinie „Ausgeglichen“. Wenn Sie

sicherstellen wollen, dass die VMs immer die höchste Performance erhalten, dann sollten Sie die

Richtlinie auf „Hochleistung“ stellen. Hierzu gehen Sie im vSphere Web Client zu Select Host >

Select Configure tab > Hardware > Power Management > Click Edit > Change Power Management

Rule auf „Hochleistung“ setzen.

Weitere Informationen finden sie hier:

https://docs.vmware.com/de/VMware-vSphere/6.0/com.vmware.vsphere.resmgmt.doc/GUID-4D1A6F4A-

8C99-47C1-A8E6-EF3865603F5B.html

2.4 VM Einstellungen

Generell gilt für virtuelle Maschinen, dass nur die notwendigen Ressourcen konfiguriert werden!

Bitte entfernen sie alle Geräte, die nicht benötigt werden, wie u.a. Floppy Controller, Serielle Ports.

Page 11: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

VM Einstellungen | 7

Überprovisionierung ist zu vermeiden, da die Konfiguration von zu vielen Ressourcen sich

nachteilig auf die Performance auswirkt. Der VMkernel Scheduler schafft es eventuell nicht die

Ressourcen in schnellstmöglicher Zeit zur Verfügung zu stellen, was wiederum Latenzen

verursacht. Insbesondere dann, wenn viele VMs auf einem Host zusammen laufen und im Falle

einer Überprovisionierung der Hostressourcen (Summe des Arbeitsspeicher aller VMs ist größer

als der physikalische Arbeitsspeicher des Hosts, Summe der vCPUs ist größer als die Summe der

logischen Prozessoren des Hosts) sich die VMs um die Ressourcen streiten müssen. Weiterhin ist

auch der CPU Core-Takt mitentscheidend für Memory-Latenzen. Umso höher der Core-Takt, umso

niedriger die Memory-Latenz! Die Anzahl der Prozessoren ist nicht entscheidend für die Memory-

Latenz, solange alle VMs genügend CPU-Ressourcen finden.

2.4.1 Systemvoraussetzungen für NEVARIS Build

Einzelplatz-VM Normal-User

o Dual Core ab 2,4 GHZ

o Min. 4 GB RAM (32bit) bzw. 8 GB RAM (64bit)

o Min. 4 GB freier Festplattenspeicher

Page 12: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

8 | VM Einstellungen

Einzelplatz-VM Power-User

o Quad Core ab 2,4 GHZ

o Min. 4 GB RAM (32bit) bzw. 8 GB RAM (64bit)

o Min. 4 GB freier Festplattenspeicher

Terminalserver

o Quad Core ab 2,4 GHz

o Min. 8 GB RAM plus 4 GB für jeden User

o Min. 4 GB freier Festplattenspeicher

o Empfehlung Pro aktivem Benutzer:

1 logischer Prozessorkern

2.4.2 Latency Sensitivity

Seit vSphere 5.5 gibt es eine VM-Option namens Latency Sensitivity, die standardmäßig auf Normal

gesetzt ist. Wird diese Einstellung auf High gesetzt kann das zu signifikant niedrigeren Latenzen

und Jitter führen, als Folge der folgenden Mechanismen, die im ESXi Hypervisor wirksam werden:

o Exklusiver Zugriff auf physische Ressourcen, einschließlich pCPUs für vCPUs ohne konkurrierende Threads für die Ausführung auf diesen pCPUs.

o Full-Memory-Reservierung eliminiert Ballooning oder Hypervisor Swapping, dies führt zu mehr vorhersagbarer Leistung ohne Latenzoverheads aufgrund solcher Mechanismen.

o Wenn die vCPU im Leerlauf ist führt das Halting im VM-Monitor, zu einem schnelleren vCPU-Wake-up von Halt unter Umgehung des VMkernel Scheduler für die Bereitstellung der pCPU. Dies schont auch die Leistung, da das Stoppen die pCPU in einen Low-Power Modus bringt, verglichen mit dem Spinnen im VM Monitor mit der "monitor_control.halt_desched=FALSE" Option.

o Deaktivieren der Interrupt-Koaleszenz und LRO automatisch für VMXNET 3 Netzwerkkarten.

o Optimierter Interrupt-Delivery-Pfad für VM DirectPath I/O- und SR-IOV Passthrough-Geräte, mittels heuristischer Daten aus dem Gast-OS über die optimale Platzierung von physikalischen Interrupt-Vektoren auf physischen CPUs abzuleiten.

Um mehr über dieses Thema zu erfahren, schauen Sie sich bitte das folgende technische

Whitepaper an:

https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/latency-sensitive-perf-

vsphere55-white-paper.pdf

Page 13: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

VM Einstellungen | 9

2.4.3 Memory

Jede virtuelle Maschine verbraucht Arbeitsspeicher auf der Grundlage der für sie konfigurierten

Größe, sowie einen zusätzlichen Overhead-Arbeitsspeicher für die Virtualisierung.

Die konfigurierte Größe ist die Größe des Arbeitsspeichers, der dem Gastbetriebssystem zur

Verfügung gestellt wird. Dieser Wert unterscheidet sich von dem physischen Arbeitsspeicher, der

der virtuellen Maschine zugeteilt ist. Der Letztere hängt von den Ressourceneinstellungen (Anteile,

Reservierung, Grenzwert) und dem Grad der Arbeitsspeicherbelastung auf dem Host ab.

Wenn Ihre Anwendung eine große Menge an physischem Speicher benötigt, wenn sie nicht

virtualisiert ausgeführt wird, sollten sie ihre VM auch mit viel RAM konfigurieren. Aber prüfen sie

den tatsächlichen Verbrauch des Arbeitsspeichers, um gegebenenfalls die Anforderungen zu

reduzieren. Sie können sich die Speicherstatistik im vSphere-Client Select Host and Clusters >

Select Host > Configure tab > Hardware > Memory ansehen, um zu sehen, wie viel Speicher Sie für

die VMs konfigurieren können, nachdem der gesamte Virtualisierungs-Overhead (System)

berücksichtigt wurde.

2.4.4 Reservierung

Die Reservierung ist eine garantierte Untergrenze für die Menge an physischem Arbeitsspeicher,

die der Host für eine virtuelle Maschine reserviert, auch wenn der Arbeitsspeicher mehrfach

vergeben wird. Die Reservierung sollte so festgelegt werden, dass die virtuelle Maschine über

ausreichend Arbeitsspeicher verfügt, um eine effiziente Ausführung ohne übermäßiges Paging zu

gewährleisten.

Für Memory-latenzsensitive VMs empfiehlt es sich den gesamten Arbeitsspeicher zu reservieren.

Gehen Sie hierfür zu vSphere Web Client > Select VM > Edit Settings > Expand Memory Category >

Select “Reserve all guest memory (all locked)”.

2.4.5 CPU

NEVARIS Build profitiert von einem Mehrprozessorsystem. Für latenzempfindliche Anwendungen

sollten Sie jedoch nicht mehr vCPUs in einer VM, als physikalisch vorhandene CPUs (pCPUs) auf

einem ESXi-Host, konfigurieren. Zum Beispiel, wenn Ihr Host 8 CPU-Cores hat, beschränken Sie

die Anzahl vCPUs für Ihre VM auf 7. Dies stellt sicher, dass der ESXi VMkernel Scheduler eine

bessere Chance hat, ihre vCPUs auf pCPUs zu platzieren, die nicht von anderen Scheduling-

Kontexten benutzt werden, wie vCPUs von anderen VMs oder ESXi helper worlds. Darüber hinaus

sollten Sie, wenn möglich nie mehr vCPUs einer VM zu ordnen, als pCPUs in einem CPU-Socket.

Der ESXi Hypervisor versucht auf einem NUMA-System (siehe auch: Kapitel 2.7 NUMA

Einstellungen) die vCPUs einem NUMA-Node zuzuordnen.

Wenn Sie sicherstellen möchten, dass der ESXi VMkernel Ihre VM nicht ausplant (deschedule),

wenn die vCPU im Leerlauf ist, können Sie die folgende Konfigurationsoption hinzufügen.

Page 14: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

10 | Gastbetriebssystem

Gehen sie zu vSphere Web Client > Select VM > Edit Settings > VM Options Tab > Advanced >

Configuration Parameters > Edit Configuration und fügen sie den Parameter

"monitor_control.halt_desched" mit dem Wert "false" hinzu. Diese Einstellung bitte nicht anwenden,

wenn Sie bereits den Latency Sensitivity Schalter verwenden.

Bitte prüfen Sie den Einsatz dieser Option, da sie die vCPU effektiv dazu zwingt, alle ihre

zugeordnete pCPU-Zeit zu verbrauchen, so dass der VM-Monitor, wenn diese vCPU im VM-

Leerlauf ist, die CPU nicht an den VMkernel Scheduler zurück gibt, bis die vCPU wieder in der VM

laufen muss. Für extrem latenzempfindliche VMs, die die Latenz nicht tolerieren können, geplant

und ausgeplant zu werden, könnte diese Option helfen.

Ein etwas leistungssparender Ansatz, der zu niedrigeren Latenzen führt, wenn der Gast nach dem

Leerlauf aufgeweckt werden muss, sind die folgenden fortgeschrittenen Konfigurationsparameter

(siehe auch http://kb.vmware.com/kb/1018276):

o Für VMs mit mehr als einer vCPU, setze "monitor.idleLoopSpinBeforeHalt" auf true

o Für VMs mit einer vCPU, setze "monitor.idleLoopSpinBeforeHaltUP" auf true

Diese Option wird dazu führen, dass der VM-Monitor für eine kleine Zeitspanne dreht (Standard

sind 100 ns, konfigurierbar durch den Parameter "monitor.idleLoopMinSpinUS") bevor die CPU

wieder zurückgegeben wird an den VMkernel Scheduler, die dann die CPU im Leerlauf laufen

lassen kann, wenn es keine andere Arbeit gibt. Diese Einstellungen bitte nicht anwenden, wenn

Sie bereits den Latency Sensitivity Schalter verwenden.

2.5 Gastbetriebssystem

Bitte beachten Sie bei der Konfiguration der Ressourcen für das Betriebssystem einer Memory-

latenzsensitiven VM darauf, dass Sie die Architektur des Host-Systems beachten. Geben Sie einer

virtuellen Maschine nie mehr Arbeitsspeicher als einem einzelnen NUMA-Node (CPU-Socket)

zugeordnet ist und gleichzeitig n-1 vCPUs, als einem CPU-Socket zugeordnet ist. Damit stellen Sie

sicher das der ESXi-Hypervisor den lokalen Arbeitsspeicher, der dem CPU-Socket zugeordnet ist

für die VM verwendet und damit auch die niedrigste Latenz hat.

Bitte achten Sie darauf, dass Sie für das Gastbetriebssystem die Energiesparpläne für Memory-

Latenzsensitive VMs auf High Performance stellen und wenn notwendig auch den Turbo Boost

Modus aktivieren. Hierzu geben Sie folgende Befehle an der Kommandozeile ein:

# Powercfg -setacvalueindex scheme_min sub_processor PERFBOOSTMODE 2

# Powercfg -setactive scheme_min

Page 15: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

VMware Tools | 11

Die erste Befehlszeile setzt im High Performance Energiesparplan den Processor Performance

Boost Mode auf aktiv. Und der zweite Befehl aktiviert den High Performance Energiesparplan.

Mittel des folgenden Befehls können Sie überprüfen welcher der aktive Energiesparplan ist.

# Powercfg /getactivescheme

Siehe hierzu auch: https://msdn.microsoft.com/en-us/library/windows/hardware/dn567635.

2.6 VMware Tools

Die VMware Tools sind eine Suite von Utilities, die die Leistung des Gastbetriebssystems der

virtuellen Maschine und die Verwaltung der virtuellen Maschine verbessert. Aus der

Performancesicht sind hierbei der VMXNET 3 Treiber (siehe hierzu Kapitel „Einstellungen der

virtuellen Netzwerkkarte“) und der Paravirtual SCSI Controller wichtig. Achten Sie bei der

Konfiguration des Betriebssystems der VM darauf, sowohl den „VMXNET 3“ wie auch den

„VMware Paravirtual SCSI“ Controller zu verwenden.

Siehe hierzu auch: https://kb.vmware.com/kb/1010398.

2.7 NUMA Einstellungen

Durch die Verbreitung von Systemen mit mehreren Kernen werden NUMA-Architekturen

zunehmend eingesetzt, da mit diesen Architekturen eine bessere Leistungsskalierung von

speicherintensiven Arbeitslasten erzielt werden kann. Bei den modernen Intel- und AMD-Systemen

ist die NUMA-Unterstützung im Prozessor integriert.

Normalerweise können Sie BIOS-Einstellungen verwenden, um NUMA-Funktionen zu aktivieren

und zu deaktivieren. Wenn NUMA aktiviert ist, wird vom BIOS eine Tabelle für die Zuteilung von

Systemressourcen (SRAT, System Resource Allocation Table) erstellt, die vom ESXi Hypervisor

verwendet wird, um die in Optimierungen verwendeten NUMA-Informationen zu generieren. Um

eine gleichmäßige Planung sicherzustellen, werden NUMA-Optimierungen nicht für Systeme mit

zu wenig Kernen pro NUMA-Knoten oder zu wenig Kernen insgesamt aktiviert. Zur Änderung

dieses Verhaltens können Sie die Optionen "numa.rebalancecorestotal" und

"numa.rebalancecoresnode" ändern.

ESXi nutzt einen anspruchsvollen, NUMA-fähigen Scheduler, um die Prozessorbelastung und den

Speicherort dynamisch auszugleichen.

Für die beste Leistung von latenzempfindlichen Anwendungen in Gastbetriebssystemen sollten

alle vCPUs auf demselben NUMA-Knoten geplant werden, und der VM-Arbeitspeicher sollte aus

dem der CPU zugeordneten lokalen physischen Speicher zugewiesen werden, der an diesen

NUMA-Knoten angeschlossen ist.

Page 16: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

12 | NUMA Einstellungen

Prozessor-Affinität für vCPUs, die auf bestimmten NUMA-Knoten geplant werden sollen, sowie die

Memory-Affinität für den VM-Arbeitsspeicher, die von diesen NUMA-Knoten zugewiesen werden

sollen, können mit dem vSphere-Client unter Edit Settings > VM Options > Advanced >

Configuration Parameters > Edit Configuration konfiguriert werden. Hierzu wird die Einstellung

"numa.nodeAffinity = 0, 1, ...", wobei 0, 1 usw. die Prozessorsockelnummern sind, vorgenommen.

Beachten Sie, dass Sie, wenn Sie die NUMA-Knoten-Affinitäten konfigurieren, die Fähigkeit des

NUMA-Schedulers beeinträchtigen, ein Load Balancing für die virtuellen Maschinen über alle

vorhandenen NUMA-Knoten durchzuführen. Geben Sie die NUMA-Knotenaffinität nur an, wenn

das automatische Load Balancing nicht zu den gewünschten Resultaten führt. Beachten Sie auch,

dass, wenn eine VM (z.B. mit vMotion) zu einem anderen Host mit einer anderen NUMA-Topologie

migriert wird, diese erweiterten Einstellungen möglicherweise nicht optimal auf dem neuen Host

angewendet werden können und dies zu einer suboptimalen Leistung Ihrer Anwendung auf dem

neuen Host führt. Sie müssen diese erweiterten Einstellungen für die NUMA-Topologie eventuell

erneut für den neuen Host neu anpassen.

Ab ESXi 5.0 unterstützt der Hypervisor auch vNUMA. Hierbei wird die NUMA-Architektur des

zugrunde-liegenden physischen Hosts dem Gast-Betriebssystem offen gelegt, indem bestimmte

ACPI-BIOS-Tabellen für das Gast-Betriebssystem sichtbar werden. Das Aufdecken der NUMA-

Topologie des physischen Hosts an die VM hilft dem Gast-OS-Kernel, bessere Terminierungs- und

Platzierungsentscheidungen für Anwendungen zu schaffen, um Arbeitsspeicherzugriffslatenzen zu

minimieren.

vNUMA wird automatisch für VMs aktiviert, die mit mehr als 8 vCPUs konfiguriert sind, die breiter

sind als die Anzahl der Kerne pro physischem NUMA-Knoten. Für bestimmte latenzempfindliche

Workloads, die auf physischen Hosts mit weniger als 8 Kerne pro physischem NUMA-Knoten

laufen, kann vNUMA vorteilhaft sein. Dies wird durch Hinzufügen eines Eintrags für "numa.vcpu.min

= N" erreicht, wobei N kleiner als die Anzahl der vCPUs in der VM ist. Die Einstellung nehmen Sie

im vSphere Web Client unter Edit Settings > VM Options > Advanced > Configuration Parameters >

Edit Configuration vor.

Um mehr über dieses Thema zu erfahren, verweisen wir auf folgende Links:

http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-CPU-Sched-Perf.pdf

https://blogs.vmware.com/performance/2017/03/virtual-machine-vcpu-and-vnuma-rightsizing-rules-of-

thumb.html.

Page 17: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

Einstellungen der physikalischen Netzwerkkarte | 13

2.8 Einstellungen der physikalischen Netzwerkkarte

Die meisten 1GbE- oder 10GbE-NICs (Network Interface Cards) unterstützen eine Funktion namens

Interrupt-Moderation oder Interrupt-Throttling, die Interrupts von der Netzwerkkarte zum Host

zusammenführt, so dass der Host nicht überbeansprucht wird und alle CPU-Zyklen benutzt um die

Interrupts zu verarbeiten.

Die Zeit, die die Netzwerkkarte für die Zustellung eines Interrupts (sendend oder empfangend)

benötigt erhöht die Latenz des Workloads.

Die meisten NICs bieten einen Mechanismus, in der Regel über das ethtool command und/oder

Modulparameter, um die Interrupt-Moderation zu deaktivieren. Unsere Empfehlung besteht darin,

die physische NIC-Interrupt-Moderation auf dem ESXi-Host wie folgt zu deaktivieren:

# esxcli system module parameters set -m ixgbe -p "InterruptThrottleRate=0"

Dieses Beispiel gilt für den Intel 10GbE-Treiber namens ixgbe. Sie finden den passenden

Modulparameter für Ihre Netzwerkkarte, indem Sie zuerst den Treiber mit dem folgenden esxcli

auslesen:

# esxcli network nic list

Die Liste der Modulparameter für den verwendeten Treiber finden Sie folgendermaßen:

# esxcli system module parameters list -m <driver>

Beachten Sie, dass die Deaktivierung der Interrupt-Moderation auf der physikalischen

Netzwerkkarte extrem hilfreich ist für die Verringerung der Latenz von latenzempfindlichen VMs.

Dies kann aber zu Leistungseinbußen für andere VMs auf dem ESXi-Host führen, sowie auch eine

höhere CPU-Auslastung nach sich ziehen, da eine größere Anzahl von Interrupts verarbeitet wird.

Das Deaktivieren der physischen NIC-Interrupt-Moderation kann auch den Nutzen von Large

Receive Offloads (LRO) behindern, da einige physische NICs (wie z.B. Intel 10GbE NICs), LRO

auf der Netzwerkkarte unterstützen, diese automatisch deaktivieren, wenn die Interrupt-Moderation

deaktiviert ist. Die ESXi-Implementierung von Software-LRO hat weniger Pakete die bei jedem

Interrupt in größere Pakete verschmolzen werden. LRO ist ein wichtiges Feature für einen

erhöhten Datendurchsatz bei reduzierter CPU-Auslastung. Dies sollte bei Ihrer Entscheidung

sorgfältig berücksichtigt werden.

Page 18: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

14 | Einstellungen der virtuellen Netzwerkkarte

2.9 Einstellungen der virtuellen Netzwerkkarte

Virtuelle Maschinen können mit einem der folgenden Netzwerkkartentypen

(http://kb.vmware.com/kb/1001805) konfiguriert werden:

o Vlance

o VMXNET

o Flexible

o E1000

o VMXNET 2 (Enhanced) oder

o VMXNET 3

Wir empfehlen Ihnen, VMXNET 3 für Ihre latenzempfindlichen oder anderweitig leistungskritischen

VMs zu wählen. VMXNET 3 ist die neueste Generation der paravirtualisierten Netzwerkkarten. Es

bietet erweiterte Funktionen wie Multi-Queue-Unterstützung: Receive Side Scaling, IPv4/IPv6

Offloads und MSI/MSI-X Interrupt Delivery. Moderne Enterprise-Linux-Distributionen, die auf 2.6.32

oder neueren Kerneln basieren, wie RHEL6 und SLES11 SP1, liefern eine Out-of-the-Box-

Unterstützung für VMXNET 3 NICs.

VMXNET 3 unterstützt standardmäßig auch einen adaptiven Interrupt-Coalescing-Algorithmus, wie

er auch in physikalischen Netzwerkkarten implementiert ist. Diese virtuelle Interrupt-Koaleszenz

hilft, hohe Datendurchsätze bei VMs mit mehreren vCPUs mit parallelisierten Workloads (z. B.

mehrere Threads) zu steuern, während gleichzeitig versucht wird, die Latenz der virtuellen

Interrupt-Lieferung zu minimieren.

Wir empfehlen, bei latenzempfindlichen Workloads die virtual interrupt coalescing für VMXNET 3,

wie folgt, zu deaktivieren:

Gehe zu vSphere Web Client > VM Settings > VM Options Tab > Advanced > Configuration

Parameters > Edit Configuration und füge den Parameter "ethernetX.coalescingScheme" mit dem

Wert "disabled" hinzu.

Bitte beachten Sie, dass diese neue Konfigurationsoption nur in ESXi 5.0 und höher verfügbar ist.

Eine alternative Möglichkeit, virtual interrupt coalescing für alle virtuellen NICs auf dem Host zu

deaktivieren, betriff alle VMs, nicht nur die Latenz-sensitiven. Hierfür können Sie folgende

Einstellung vornehmen:

Gehe zu vSphere Web Client > Select Host and Clusters > Select Host > Configure tab > System >

Advanced System Settings > Edit und setze den Wert auf "0" für den Parameter

"Net.CoalesceDefaultOn".

Für Details siehe auch: http://communities.vmware.com/docs/DOC-10892.

Page 19: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

LRO deaktivieren in Linux | 15

Ein weiteres Feature von VMXNET 3, das einen hohen Durchsatz bei geringerer CPU-Auslastung

ermöglicht, ist Large Receive Offload (LRO). Mit Large Receive Offload können Sie den CPU-

Overhead bei der Verarbeitung von Paketen, die mit hoher Frequenz aus dem Netzwerk eingehen,

reduzieren.

LRO fasst eingehende Netzwerkpakete zu größeren Puffern zusammen und überträgt die so

entstandenen größeren und weniger zahlreichen Pakete an den Netzwerk-Stack des Hosts oder

der virtuellen Maschine. Die CPU muss nun weniger Pakete als bei deaktiviertem LRO verarbeiten,

was ihre Nutzung im Netzwerk reduziert, besonders bei Verbindungen mit hoher Bandbreite.

Um die höhere Leistung mit LRO zu nutzen, aktivieren Sie LRO entlang des gesamten Datenpfads

auf dem ESXi-Host. Dazu gehören auch VMkernel und Gastbetriebssystem. LRO ist

standardmäßig im VMkernel und den VMXNET3-Adaptern von virtuellen Maschinen aktiviert.

2.10 LRO deaktivieren in Linux

Daher sollten Sie auch die Deaktivierung von LRO berücksichtigen, wenn Ihre latenzempfindliche

Anwendung auf TCP angewiesen ist. Um dies für Linux-Gäste zu tun, müssen Sie den vmxnet3-

Treiber im Gast neu laden:

# Modprobe –r vmxnet3

Fügen Sie die folgende Zeile in der Datei "/etc/modprobe.conf" hinzu (abhängig von Linux

Distribution):

options vmxnet3 disable_lro=1

Anschließend den Treiber neu laden:

# modprobe vmxnet3.

Page 20: PERFORMANCE T L -S W VSPHERE VM€¦ · Der vSphere ESXi Hypervisor bietet eine leistungsstarke Plattform, die effektiv viele Tier-1 Programme in virtuellen Maschinen ausführen kann.

16 | LRO global deaktivieren in Windows

2.11 LRO global deaktivieren in Windows

Um LRO auf einem VMXNET3-Adapter auf einer virtuellen Maschine unter Windows 8 oder

Windows Server 2012 (und höher) zu verwenden, müssen Sie LRO global für das

Gastbetriebssystem aktivieren. Unter Windows wird die LRO-Technologie auch als

„Empfangsseitige Zusammenfügung (Receive Side Coalescing, RSC)“ bezeichnet.

Prozedur

1. Um zu überprüfen, ob LRO global auf einem Windows 8- oder Windows Server 2012-Gastbetriebssystem (und höher) deaktiviert ist, führen Sie den Befehl netsh int tcp show global an der Eingabeaufforderung aus.

Netsh int tcp show global

Der Befehl zeigt den Status der globalen TCP-Parameter an, die auf dem Windows 8.x-

Betriebssystem festgelegt sind.

Wenn LRO auf dem Windows 8- oder Windows Server 2012-System (und höher) global

deaktiviert ist, wird die Eigenschaft „Status Empfangssegmentzusammenfügung“ als

deaktiviert angezeigt.

2. Um LRO global für das Windows-Betriebssystem zu deaktivieren, führen Sie den Befehl netsh int tcp set global an der Befehlszeile aus:

netsh int tcp set global rsc=disabled.