Optimieren der Leistung von NetScaler VPX auf VMware ESX, Linux KVM und Citrix Hypervisors
Die Leistung von NetScaler VPX hängt stark vom Hypervisor, den zugewiesenen Systemressourcen und den Hostkonfigurationen ab. Um die gewünschte Leistung zu erzielen, befolgen Sie zunächst die Empfehlungen im VPX-Datenblatt und optimieren Sie es dann mithilfe der in diesem Dokument enthaltenen Best Practices weiter.
NetScaler VPX-Instanz auf VMware ESX-Hypervisoren
Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie andere Vorschläge, mit denen Sie eine optimale Leistung der NetScaler VPX-Instanz auf VMware ESX-Hypervisoren erzielen können.
- Empfohlene Konfiguration auf ESX-Hosts
- NetScaler VPX mit E1000-Netzwerkschnittstellen
- NetScaler VPX mit VMXNET3-Netzwerkschnittstellen
- NetScaler VPX mit SR-IOV- und PCI Passthrough-Netzwerkschnittstellen
Empfohlene Konfiguration auf ESX-Hosts
Befolgen Sie diese Empfehlungen, um eine hohe Leistung für VPX mit E1000-, VMXNET3-, SR-IOV- und PCI-Passthrough-Netzwerkschnittstellen zu erzielen:
- Die Gesamtzahl der auf dem ESX-Host bereitgestellten virtuellen CPUs (vCPUs) muss kleiner oder gleich der Gesamtzahl der physischen CPUs (PCPUs) auf dem ESX-Host sein.
-
Affinität und CPU-Affinität für ungleichmäßigen Speicherzugriff (NUMA) müssen festgelegt werden, damit der ESX-Host gute Ergebnisse erzielt.
— Um die NUMA-Affinität eines Vmnic zu ermitteln, melden Sie sich lokal oder remote beim Host an und geben Sie Folgendes ein:
#vsish -e get /net/pNics/vmnic7/properties | grep NUMA Device NUMA Node: 0 <!--NeedCopy-->
- Informationen zum Festlegen der NUMA- und vCPU-Affinität für eine VM finden Sie in der VMware-Dokumentation
NetScaler VPX mit E1000-Netzwerkschnittstellen
Nehmen Sie die folgenden Einstellungen auf dem VMware ESX-Host vor:
- Erstellen Sie auf dem VMware ESX-Host zwei vNICs aus einem pNIC vSwitch. Mehrere vNICs erstellen mehrere Empfangsthreads (Rx) auf dem ESX-Host. Dies erhöht den Rx-Durchsatz der pNIC-Schnittstelle.
- Aktivieren Sie VLANs auf der vSwitch-Portgruppenebene für jede von Ihnen erstellte vNIC.
- Um den vNIC-Übertragungsdurchsatz (Tx) zu erhöhen, verwenden Sie einen separaten Tx-Thread im ESX-Host pro vNIC. Verwenden Sie die folgenden ESX-Befehle:
-
Für ESX Version 5.5:
esxcli system settings advanced set –o /Net/NetTxWorldlet –i <!--NeedCopy-->
-
Für ESX ab Version 6.0:
esxcli system settings advanced set -o /Net/NetVMTxType –i 1 <!--NeedCopy-->
-
-
Um den vNIC Tx-Durchsatz weiter zu erhöhen, verwenden Sie einen separaten Tx-Vervollständigungs-Thread und Rx-Threads pro Gerät (NIC) -Warteschlange. Verwenden Sie die folgenden ESX-Befehle:
esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0 <!--NeedCopy-->
Hinweis:
Stellen Sie sicher, dass Sie den VMware ESX-Host neu starten, um die aktualisierten Einstellungen zu übernehmen.
Zwei vNICs pro pNIC-Bereitstellung
Im Folgenden finden Sie ein Beispiel für Topologie und Konfigurationsbefehle für das Bereitstellungsmodell mit zwei vNICs pro pNIC, das eine bessere Netzwerkleistung bietet.
NetScaler VPX Beispielkonfiguration:
Um die in der vorherigen Beispieltopologie gezeigte Bereitstellung zu erreichen, führen Sie die folgende Konfiguration auf der NetScaler VPX-Instanz durch:
-
Binden Sie auf Clientseite das SNIP (1.1.1.2) an die Netzwerkschnittstelle 1/1 und aktivieren Sie den VLAN-Tag-Modus.
bind vlan 2 -ifnum 1/1 –tagged bind vlan 2 -IPAddress 1.1.1.2 255.255.255.0 <!--NeedCopy-->
-
Binden Sie auf der Serverseite das SNIP (2.2.2.2) an die Netzwerkschnittstelle 1/1 und aktivieren Sie den VLAN-Tag-Modus.
bind vlan 3 -ifnum 1/2 –tagged bind vlan 3 -IPAddress 2.2.2.2 255.255.255.0 <!--NeedCopy-->
-
Fügen Sie einen virtuellen HTTP-Server (1.1.1.100) hinzu und binden Sie ihn an einen Dienst (2.2.2.100).
add lb vserver v1 HTTP 1.1.1.100 80 -persistenceType NONE -Listenpolicy None -cltTimeout 180 add service s1 2.2.2.100 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO bind lb vserver v1 s1 <!--NeedCopy-->
Hinweis:
Stellen Sie sicher, dass Sie die folgenden beiden Einträge in die Routentabelle aufnehmen:
- 1.1.1.0/24 Subnetz mit Gateway, das auf SNIP zeigt 1.1.1.2
- 2.2.2.0/24 Subnetz mit Gateway, das auf SNIP zeigt 2.2.2.2
NetScaler VPX mit VMXNET3-Netzwerkschnittstellen
Um eine hohe Leistung für VPX mit VMXNET3-Netzwerkschnittstellen zu erzielen, nehmen Sie die folgenden Einstellungen auf dem VMware ESX-Host vor:
- Erstellen Sie zwei vNICs aus einem pNIC vSwitch. Mehrere vNICs erstellen mehrere Rx-Threads im ESX-Host. Dies erhöht den Rx-Durchsatz der pNIC-Schnittstelle.
- Aktivieren Sie VLANs auf der vSwitch-Portgruppenebene für jede von Ihnen erstellte vNIC.
- Um den vNIC-Übertragungsdurchsatz (Tx) zu erhöhen, verwenden Sie einen separaten Tx-Thread im ESX-Host pro vNIC. Verwenden Sie den folgenden ESX-Befehl:
- Für ESX Version 5.5:
esxcli system settings advanced set –o /Net/NetTxWorldlet –i <!--NeedCopy-->
- Für ESX ab Version 6.0:
esxcli system settings advanced set -o /Net/NetVMTxType –i 1 <!--NeedCopy-->
Führen Sie auf dem VMware ESX-Host die folgende Konfiguration durch:
- Erstellen Sie auf dem VMware ESX-Host zwei vNICs aus einem pNIC vSwitch. Mehrere vNICs erstellen mehrere Tx- und Rx-Threads im ESX-Host. Dies erhöht den Tx- und Rx-Durchsatz der pNIC-Schnittstelle.
- Aktivieren Sie VLANs auf der vSwitch-Portgruppenebene für jede von Ihnen erstellte vNIC.
-
Um den Tx-Durchsatz einer vNIC zu erhöhen, verwenden Sie einen separaten Tx-Vervollständigungs-Thread und Rx-Threads pro Gerät (NIC) -Warteschlange. Verwenden Sie den folgenden Befehl:
esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0 <!--NeedCopy-->
-
Konfigurieren Sie eine VM für die Verwendung eines Übertragungs-Threads pro vNIC, indem Sie der Konfiguration der VM die folgende Einstellung hinzufügen:
ethernetX.ctxPerDev = "1" <!--NeedCopy-->
-
Konfigurieren Sie eine VM so, dass sie bis zu 8 Übertragungs-Threads pro vNIC verwendet, indem Sie der Konfiguration der VM die folgende Einstellung hinzufügen:
ethernetX.ctxPerDev = "3" <!--NeedCopy-->
Hinweis:
Eine Erhöhung der Übertragungs-Threads pro vNIC erfordert mehr CPU-Ressourcen (bis zu 8) auf dem ESX-Host. Stellen Sie sicher, dass genügend CPU-Ressourcen verfügbar sind, bevor Sie die obigen Einstellungen vornehmen.
Hinweis:
Stellen Sie sicher, dass Sie den VMware ESX-Host neu starten, um die aktualisierten Einstellungen zu übernehmen.
Sie können VMXNET3 als Bereitstellung mit zwei vNICs pro pNIC konfigurieren. Weitere Informationen finden Sie unter Zwei vNICs pro pNIC-Bereitstellung.
Konfiguration der Multi-Queue- und RSS-Unterstützung auf VMware ESX für VMXNET3-Geräte
Standardmäßig unterstützt das VMXNET3-Gerät nur 8 Rx- und Tx-Warteschlangen. Wenn die Anzahl der vCPUs auf dem VPX 8 überschreitet, wird die Anzahl der für eine VMXNET3-Schnittstelle konfigurierten Rx- und Tx-Warteschlangen standardmäßig auf 1 gesetzt. Sie können bis zu 19 Rx- und Tx-Warteschlangen für VMXNET3-Geräte konfigurieren, indem Sie bestimmte Konfigurationen auf ESX ändern. Diese Option erhöht die Leistung und die gleichmäßige Verteilung der Pakete über die vCPUs der VPX-Instanz.
Hinweis:
Ab NetScaler Version 13.1 Build 48.x unterstützt NetScaler VPX bis zu 19 Rx- und Tx-Warteschlangen auf ESX für VMXNET3-Geräte.
Voraussetzungen:
Um bis zu 19 Rx- und Tx-Warteschlangen auf ESX für VMXNET3-Geräten zu konfigurieren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Die NetScaler VPX-Version ist 13.1 Build 48.X und höher.
- NetScaler VPX ist mit einer virtuellen Maschine der Hardwareversion 17 und höher konfiguriert, die von VMware ESX 7.0 und höher unterstützt wird.
Konfigurieren Sie VMXNET3-Schnittstellen für die Unterstützung von mehr als 8 Rx- und Tx-Warteschlangen:
- Öffnen Sie die Konfigurationsdatei der virtuellen Maschine (.vmx).
-
Geben Sie die Anzahl der Rx- und TX-Warteschlangen an, indem Sie die
ethernetX.maxRxQueues
WerteethernetX.maxTxQueues
und konfigurieren (wobei X die Anzahl der zu konfigurierenden virtuellen NICs ist). Die maximale Anzahl der konfigurierten Warteschlangen darf nicht größer als die Anzahl der vCPUs in der virtuellen Maschine sein.Hinweis:
Eine Erhöhung der Anzahl der Warteschlangen erhöht auch den Prozessor-Overhead auf dem ESX-Host. Stellen Sie daher sicher, dass ausreichend CPU-Ressourcen auf dem ESX-Host verfügbar sind, bevor Sie die Warteschlangen erhöhen. Sie können die maximale Anzahl der unterstützten Warteschlangen in Szenarien erhöhen, in denen die Anzahl der Warteschlangen als Leistungsengpass identifiziert wird. In diesen Situationen empfehlen wir, die Anzahl der Warteschlangen schrittweise zu erhöhen. Zum Beispiel von 8 bis 12, dann bis 16, dann bis 20 und so weiter. Bewerten Sie die Leistung bei jeder Einstellung, anstatt sie direkt bis zur Höchstgrenze zu erhöhen.
NetScaler VPX mit SR-IOV- und PCI Passthrough-Netzwerkschnittstellen
Um eine hohe Leistung für NetScaler VPX mit SR-IOV- und PCI-Passthrough-Netzwerkschnittstellen zu erzielen, siehe Empfohlene Konfiguration auf ESX-Hosts.
Nutzungsrichtlinien für den VMware ESXi Hypervisor
-
Wir empfehlen Ihnen, eine NetScaler VPX-Instanz auf lokalen Festplatten des Servers oder SAN-basierten Speichervolumes bereitzustellen.
Weitere Informationen finden Sie im Abschnitt VMware ESXi CPU Considerations im Dokument Performance Best Practices for VMware vSphere 6.5. Hier ist ein Auszug:
-
Es wird nicht empfohlen, virtuelle Maschinen mit hohem CPU- oder Speicherbedarf auf einem überlasteten Host oder Cluster bereitzustellen.
-
In den meisten Umgebungen ermöglicht ESXi eine erhebliche CPU-Überbelegung, ohne die Leistung der virtuellen Maschine zu beeinträchtigen. Auf einem Host können Sie mehr vCPUs ausführen als die Gesamtzahl der physischen Prozessorkerne in diesem Host.
-
Wenn ein ESXi-Host CPU-gesättigt wird, d.h. die virtuellen Maschinen und andere Lasten auf dem Host alle CPU-Ressourcen verlangen, die der Host hat, funktionieren latenzsensitive Workloads möglicherweise nicht gut. Reduzieren Sie in diesem Fall beispielsweise die CPU-Last, indem Sie einige virtuelle Maschinen ausschalten oder sie auf einen anderen Host migrieren (oder DRS erlauben, sie automatisch zu migrieren).
-
NetScaler empfiehlt, die neueste Hardwarekompatibilitätsversion zu verwenden, um die neuesten Funktionen des ESXi Hypervisors für die virtuelle Maschine nutzen zu können. Weitere Informationen zur Hardware- und ESXi-Versionskompatibilität finden Sie in der VMware-Dokumentation.
-
Der NetScaler VPX ist eine latenzempfindliche, leistungsstarke virtuelle Appliance. Um die erwartete Leistung zu erbringen, benötigt die Appliance vCPU-Reservierung, Speicherreservierung und vCPU-Pinning auf dem Host. Außerdem muss Hyper-Threading auf dem Host deaktiviert werden. Wenn der Host diese Anforderungen nicht erfüllt, können die folgenden Probleme auftreten:
- Hochverfügbares Failover
- CPU-Spitze innerhalb der VPX-Instanz
- Trägheit beim Zugriff auf die VPX-CLI
- Absturz des Pitboss-Daemons
- Paketverluste
- Niedriger Durchsatz
-
Ein Hypervisor gilt als übermäßig bereitgestellt, wenn eine der folgenden beiden Bedingungen erfüllt ist:
-
Die Gesamtzahl der auf dem Host bereitgestellten virtuellen Kerne (vCPU) ist größer als die Gesamtzahl der physischen Kerne (pCPUs).
-
Die Gesamtzahl der bereitgestellten VMs verbrauchen mehr vCPUs als die Gesamtzahl der pCPUs.
Wenn eine Instanz übermäßig bereitgestellt wird, garantiert der Hypervisor möglicherweise nicht die für die Instanz reservierten Ressourcen (wie CPU, Speicher und andere) aufgrund von Hypervisor-Planungs-Overheads, Fehlern oder Einschränkungen mit dem Hypervisor. **Dieses Verhalten kann zu einem Mangel an CPU-Ressourcen für NetScaler führen und zu den im ersten Punkt unter Nutzungsrichtlinien genannten Problemen führen. Wir empfehlen den Administratoren, die Tenancy des Hosts so zu reduzieren, dass die Gesamtzahl der auf dem Host bereitgestellten vCPUs kleiner oder gleich der Gesamtzahl der pCPUs ist.
Beispiel
Wenn für den ESX-Hypervisor der Parameter
%RDY%
einer VPX-vCPU in der Befehlsausgabeesxtop
größer als 0 ist, wird für den ESX-Host ein Planungsaufwand gemeldet, der zu latenzbedingten Problemen für die VPX-Instanz führen kann.Reduzieren Sie in einer solchen Situation die Mandanten auf dem Host, sodass
%RDY%
immer auf 0 zurückkehrt. Wenden Sie sich alternativ an den Hypervisor-Anbieter, um den Grund für die Nichteinhaltung der Ressourcenreservierung zu ermitteln.
-
Befehle zur Steuerung der CPU-Auslastung der Paket-Engine
Sie können zwei Befehle (set ns vpxparam
und show ns vpxparam
) verwenden, um das CPU-Auslastungsverhalten von VPX-Instanzen in Hypervisor- und Cloud-Umgebungen zu steuern:
-
set ns vpxparam [-cpuyield (YES | NO | DEFAULT)] [-masterclockcpu1 (YES | NO)]
Erlauben Sie jeder VM, die CPU-Ressourcen zu verwenden, die einer anderen VM zugewiesen sind, aber nicht verwendet werden.
Parameter für
Set ns vpxparam
:-cpuyield: Freigabe von zugewiesenen, aber nicht genutzten CPU-Ressourcen.
-
YES: Erlauben Sie, dass zugewiesene, aber ungenutzte CPU-Ressourcen von einer anderen VM verwendet werden.
-
NEIN: Reservieren Sie alle CPU-Ressourcen für die VM, der sie zugewiesen wurden. Diese Option zeigt in Hypervisor- und Cloud-Umgebungen einen höheren Prozentsatz für die VPX-CPU-Auslastung.
-
DEFAULT: Nein.
Hinweis:
Auf allen NetScaler VPX-Plattformen beträgt die vCPU-Auslastung auf dem Hostsystem 100 Prozent. Verwenden Sie den Befehl
set ns vpxparam –cpuyield YES
, um diese Verwendung zu überschreiben.Wenn Sie die Clusterknoten auf “yield” setzen möchten, müssen Sie die folgenden zusätzlichen Konfigurationen für CCO durchführen:
- Wenn ein Cluster gebildet wird, werden alle Knoten auf “yield=default” gesetzt.
- Wenn ein Cluster unter Verwendung der Knoten gebildet wird, die bereits auf “yield=YES” eingestellt sind, werden die Knoten mit “yield=DEFAULT” zum Cluster hinzugefügt.
Hinweis:
Wenn Sie die Clusterknoten auf “yield=YES” setzen möchten, können Sie erst nach der Bildung des Clusters konfigurieren, aber nicht bevor der Cluster gebildet wurde.
-masterclockcpu1: Sie können die Haupttaktquelle von CPU0 (Management-CPU) auf CPU1 verschieben. Dieser Parameter hat die folgenden Optionen:
-
YES: Erlauben Sie der VM, die Haupttaktquelle von CPU0 auf CPU1 zu verschieben.
-
NO: VM verwendet CPU0 für die Haupttaktquelle. Standardmäßig ist CPU0 die Haupttaktquelle.
-
-
show ns vpxparam
Dieser Befehl zeigt die aktuellen
vpxparam
Einstellungen an.
NetScaler VPX-Instanz auf Linux-KVM-Plattform
Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie andere Vorschläge, mit denen Sie eine optimale Leistung der NetScaler VPX-Instanz auf der Linux-KVM-Plattform erzielen können.
- Leistungseinstellungen für KVM
- NetScaler VPX mit PV-Netzwerkschnittstellen
- NetScaler VPX mit SR-IOV und Fortville PCIe Passthrough-Netzwerkschnittstellen
Leistungseinstellungen für KVM
Nehmen Sie die folgenden Einstellungen auf dem KVM-Host vor:
Finden Sie die NUMA-Domäne der NIC mit dem lstopo
Befehl:
Stellen Sie sicher, dass der Speicher für den VPX und die CPU an derselben Stelle angeheftet ist. In der folgenden Ausgabe ist die 10G-NIC “ens2” an die NUMA-Domäne #1 gebunden.
Weisen Sie den VPX-Speicher aus der NUMA-Domäne zu.
Der numactl
Befehl gibt die NUMA-Domäne an, von der der Speicher zugewiesen wird. In der folgenden Ausgabe werden etwa 10 GB RAM vom NUMA-Knoten #0 zugewiesen.
Gehen Sie folgendermaßen vor, um die NUMA-Knotenzuordnung zu ändern.
-
Bearbeiten Sie die XML des VPX auf dem Host.
/etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy-->
-
Fügen Sie das folgende Tag hinzu:
<numatune> <memory mode="strict" nodeset="1"/> This is the NUMA domain name </numatune> <!--NeedCopy-->
-
Fahren Sie den VPX herunter.
-
Führen Sie den folgenden Befehl aus:
virsh define /etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy-->
Dieser Befehl aktualisiert die Konfigurationsinformationen für die VM mit den NUMA-Knotenzuordnungen.
-
Schalten Sie den VPX ein. Überprüfen Sie dann die
numactl –hardware
Befehlsausgabe auf dem Host, um die aktualisierten Speicherzuweisungen für den VPX zu sehen.
Pin vCPUs von VPX an physische Kerne.
-
Um die vCPU zu pCPU-Zuordnungen einer VPX anzuzeigen, geben Sie den folgenden Befehl ein
virsh vcpupin <VPX name> <!--NeedCopy-->
Die vCPUs 0—4 werden physikalischen Kernen 8—11 zugeordnet.
-
Um die aktuelle pCPU-Nutzung anzuzeigen, geben Sie den folgenden Befehl ein:
mpstat -P ALL 5 <!--NeedCopy-->
In dieser Ausgabe ist 8 Management-CPU und 9—11 Paket-Engines.
-
Um die vCPU auf pCPU-Pinning zu ändern, gibt es zwei Möglichkeiten.
-
Ändern Sie es zur Laufzeit, nachdem der VPX mit dem folgenden Befehl hochgefahren wurde:
virsh vcpupin <VPX name> <vCPU id> <pCPU number> virsh vcpupin NetScaler-VPX-XML 0 8 virsh vcpupin NetScaler-VPX-XML 1 9 virsh vcpupin NetScaler-VPX-XML 2 10 virsh vcpupin NetScaler-VPX-XML 3 11 <!--NeedCopy-->
-
Um statische Änderungen an der VPX vorzunehmen, bearbeiten Sie die
.xml
Datei wie zuvor mit den folgenden Tags:-
Bearbeiten Sie die XML-Datei des VPX auf dem Host
/etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy-->
-
Fügen Sie das folgende Tag hinzu:
<vcpu placement='static' cpuset='8-11'>4</vcpu> <cputune> <vcpupin vcpu='0' cpuset='8'/> <vcpupin vcpu='1' cpuset='9'/> <vcpupin vcpu='2' cpuset='10'/> <vcpupin vcpu='3' cpuset='11'/> </cputune> <!--NeedCopy-->
-
Fahren Sie den VPX herunter.
-
Aktualisieren Sie die Konfigurationsinformationen für die VM mit den NUMA-Knotenzuordnungen mithilfe des folgenden Befehls:
virsh define /etc/libvirt/qemu/ <VPX_name>.xml <!--NeedCopy-->
-
Schalten Sie den VPX ein. Überprüfen Sie dann die
virsh vcpupin <VPX name>
Befehlsausgabe auf dem Host, um das aktualisierte CPU-Pinning zu sehen.
-
-
Eliminieren Sie Host-Interrupt-Overhead.
-
Erkennt VM_EXITS mithilfe des
kvm_stat
Befehls.Auf Hypervisor-Ebene werden Host-Interrupts denselben PCPUs zugeordnet, auf denen die vCPUs des VPX angeheftet sind. Dies kann dazu führen, dass vCPUs auf dem VPX regelmäßig rausgeschmissen werden.
Verwenden Sie den
kvm_stat
Befehl, um die VM-Exits zu finden, die von VMs durchgeführt wurden, auf denen der Host ausgeführt wird[root@localhost ~]# kvm_stat -1 | grep EXTERNAL kvm_exit(EXTERNAL_INTERRUPT) 1728349 27738 [root@localhost ~]# <!--NeedCopy-->
Ein höherer Wert in der Größenordnung von 1+M weist auf ein Problem hin.
Wenn eine einzelne VM vorhanden ist, liegt der erwartete Wert bei 30–100 K. Alles darüber hinaus kann darauf hinweisen, dass ein oder mehrere Host-Interrupt-Vektoren derselben pCPU zugeordnet sind.
-
Erkennen Sie Host-Interrupts und migrieren Sie Host-Interrupts.
Wenn Sie den
concatenate
Befehl für die Datei “/proc/interrupts” ausführen, werden alle Host-Interrupt-Zuordnungen angezeigt. Wenn ein oder mehrere aktive IRQs derselben pCPU zugeordnet werden, erhöht sich der entsprechende Zähler.Verschieben Sie alle Interrupts, die sich mit den PCPUs Ihres NetScaler VPX überschneiden, auf ungenutzte PCPUs:
echo 0000000f > /proc/irq/55/smp_affinity 0000000f - - > it is a bitmap, LSBs indicates that IRQ 55 can only be scheduled on pCPUs 0 – 3 <!--NeedCopy-->
-
Deaktivieren Sie das IRQ Guthaben
Deaktivieren Sie den IRQ-Balance-Daemon, damit im laufenden Betrieb keine Umschuldung erfolgt.
service irqbalance stop service irqbalance show - To check the status service irqbalance start - Enable if needed <!--NeedCopy-->
Stellen Sie sicher, dass Sie den
kvm_stat
Befehl ausführen, um sicherzustellen, dass es nicht viele Zähler gibt.
NetScaler VPX mit PV-Netzwerkschnittstellen
Sie können Para-Virtualization (PV), SR-IOV und PCIe-Passthrough-Netzwerkschnittstellen als Zwei vNICs pro pNIC-Bereitstellung konfigurieren. Weitere Informationen finden Sie unter Zwei vNICs pro pNIC-Bereitstellung.
Gehen Sie folgendermaßen vor, um eine optimale Leistung von PV (virtio) -Schnittstellen zu erzielen:
- Identifizieren Sie die NUMA-Domäne, zu der der PCIe-Steckplatz/die NIC gehört.
- Der Speicher und die vCPU für den VPX müssen an dieselbe NUMA-Domäne angeheftet sein.
- Der Vhost-Thread muss an die CPUs in derselben NUMA-Domäne gebunden sein.
Binden Sie die virtuellen Host-Threads an die entsprechenden CPUs:
-
Sobald der Verkehr gestartet wurde, führen Sie den
top
Befehl auf dem Host aus. - Identifizieren Sie die Affinität des virtuellen Host-Prozesses (benannt als
vhost-<pid-of-qemu>
). -
Binden Sie die vHost-Prozesse mit dem folgenden Befehl an die zuvor identifizierten physischen Kerne in der NUMA-Domäne:
taskset –pc <core-id> <process-id> <!--NeedCopy-->
Beispiel
taskset –pc 12 29838 <!--NeedCopy-->
-
Die Prozessorkerne, die der NUMA-Domäne entsprechen, können mit dem folgenden Befehl identifiziert werden:
[root@localhost ~]# virsh capabilities | grep cpu <cpu> </cpu> <cpus num='8'> <cpu id='0' socket_id='0' core_id='0' siblings='0'/> <cpu id='1' socket_id='0' core_id='1' siblings='1'/> <cpu id='2' socket_id='0' core_id='2' siblings='2'/> <cpu id='3' socket_id='0' core_id='3' siblings='3'/> <cpu id='4' socket_id='0' core_id='4' siblings='4'/> <cpu id='5' socket_id='0' core_id='5' siblings='5'/> <cpu id='6' socket_id='0' core_id='6' siblings='6'/> <cpu id='7' socket_id='0' core_id='7' siblings='7'/> </cpus> <cpus num='8'> <cpu id='8' socket_id='1' core_id='0' siblings='8'/> <cpu id='9' socket_id='1' core_id='1' siblings='9'/> <cpu id='10' socket_id='1' core_id='2' siblings='10'/> <cpu id='11' socket_id='1' core_id='3' siblings='11'/> <cpu id='12' socket_id='1' core_id='4' siblings='12'/> <cpu id='13' socket_id='1' core_id='5' siblings='13'/> <cpu id='14' socket_id='1' core_id='6' siblings='14'/> <cpu id='15' socket_id='1' core_id='7' siblings='15'/> </cpus> <cpuselection/> <cpuselection/> <!--NeedCopy-->
Binden Sie den QEMU-Prozess an den entsprechenden physikalischen Kern:
- Identifizieren Sie die physikalischen Kerne, auf denen der QEMU-Prozess läuft. Weitere Informationen finden Sie in der vorhergehenden Ausgabe.
-
Binden Sie den QEMU-Prozess mit dem folgenden Befehl an dieselben physikalischen Kerne, an die Sie die vCPUs binden:
taskset –pc 8-11 29824 <!--NeedCopy-->
NetScaler VPX mit SR-IOV und Fortville PCIe Passthrough-Netzwerkschnittstellen
Gehen Sie folgendermaßen vor, um eine optimale Leistung der SR-IOV- und Fortville PCIe-Passthrough-Netzwerkschnittstellen zu erzielen:
- Identifizieren Sie die NUMA-Domäne, zu der der PCIe-Steckplatz/die NIC gehört.
- Der Speicher und die vCPU für NetScaler VPX müssen an dieselbe NUMA-Domäne gebunden sein.
Beispiel für eine VPX-XML-Datei für vCPU und Speicher-Pinning für Linux KVM:
<domain type='kvm'>
<name>NetScaler-VPX</name>
<uuid>138f7782-1cd3-484b-8b6d-7604f35b14f4</uuid>
<memory unit='KiB'>8097152</memory>
<currentMemory unit='KiB'>8097152</currentMemory>
<vcpu placement='static'>4</vcpu>
<cputune>
<vcpupin vcpu='0' cpuset='8'/>
<vcpupin vcpu='1' cpuset='9'/>
<vcpupin vcpu='2' cpuset='10'/>
<vcpupin vcpu='3' cpuset='11'/>
</cputune>
<numatune>
<memory mode='strict' nodeset='1'/>
</numatune>
</domain>
<!--NeedCopy-->
NetScaler VPX-Instanz auf Citrix Hypervisors
Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie andere Vorschläge, mit denen Sie eine optimale Leistung der NetScaler VPX-Instanz auf Citrix Hypervisors erzielen können.
- Leistungseinstellungen für Citrix Hypervisors
- NetScaler VPX mit SR-IOV-Netzwerkschnittstellen
- NetScaler VPX mit paravirtualisierten Schnittstellen
Leistungseinstellungen für Citrix Hypervisors
Finden Sie die NUMA-Domäne der NIC mit dem Befehl “xl”:
xl info -n
<!--NeedCopy-->
Pin vCPUs von VPX an physische Kerne.
xl vcpu-pin <Netsclaer VM Name> <vCPU id> <physical CPU id>
<!--NeedCopy-->
Überprüfen Sie die Bindung von vCPUs.
xl vcpu-list
<!--NeedCopy-->
Weisen Sie NetScaler VMs mehr als 8 vCPUs zu.
Führen Sie zum Konfigurieren von mehr als 8 vCPUs die folgenden Befehle von der Citrix Hypervisor-Konsole aus:
xe vm-param-set uuid=your_vms_uuid VCPUs-max=16
xe vm-param-set uuid=your_vms_uuid VCPUs-at-startup=16
<!--NeedCopy-->
NetScaler VPX mit SR-IOV-Netzwerkschnittstellen
Gehen Sie folgendermaßen vor, um eine optimale Leistung der SR-IOV-Netzwerkschnittstellen zu erzielen:
- Identifizieren Sie die NUMA-Domäne, an die der PCIe-Steckplatz oder die NIC gebunden ist.
- Stecken Sie den Speicher und die vCPU für den VPX an dieselbe NUMA-Domäne an.
- Binden Sie die Domain-0 vCPU an die verbleibende CPU.
NetScaler VPX mit paravirtualisierten Schnittstellen
Für eine optimale Leistung werden zwei vNICs pro pNIC und eine vNIC pro pNIC-Konfiguration empfohlen, wie in anderen PV-Umgebungen.
Gehen Sie folgendermaßen vor, um eine optimale Leistung paravirtualisierter (Netfront) Schnittstellen zu erzielen:
- Identifizieren Sie die NUMA-Domäne, zu der der PCIe-Steckplatz oder die NIC gehört.
- Stecken Sie den Speicher und die vCPU für den VPX an dieselbe NUMA-Domäne an.
- Binden Sie die Domain-0 vCPU an die verbleibende CPU derselben NUMA-Domäne.
- Pin Host Rx/Tx-Threads von vNIC an Domain-0 vCPUs.
Host-Threads an Domain-0 vCPUs anheften:
- Suchen Sie die Xen-ID von NetScaler VPX mithilfe des Befehls
xl list
in der Citrix Hypervisor-Host-Shell. -
Identifizieren Sie Host-Threads mithilfe des folgenden Befehls:
ps -ax | grep vif <Xen-ID> <!--NeedCopy-->
Im folgenden Beispiel zeigen diese Werte an:
- vif5.0 − Die Threads für die erste Schnittstelle, die VPX in XenCenter (Verwaltungsschnittstelle) zugewiesen ist.
- vif5.1 − Die Threads für die zweite Schnittstelle, die VPX usw. zugewiesen ist.
-
Stecken Sie die Threads mit dem folgenden Befehl an Domain-0 vCPUs an:
taskset –pc <core-id> <process-id> <!--NeedCopy-->
Beispiel
taskset -pc 1 29189 <!--NeedCopy-->