NetScaler VPX 14.1

Optimieren der NetScaler VPX-Leistung auf VMware ESX, Linux KVM und Citrix Hypervisoren

Die NetScaler VPX-Leistung variiert stark je nach Hypervisor, zugewiesenen Systemressourcen und Hostkonfigurationen. Um die gewünschte Leistung zu erzielen, befolgen Sie zunächst die Empfehlungen im VPX-Datenblatt und optimieren Sie sie dann weiter mithilfe der in diesem Dokument bereitgestellten Best Practices.

NetScaler VPX-Instanz auf VMware ESX-Hypervisoren

Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie weitere Vorschläge, die Ihnen helfen, die optimale Leistung einer NetScaler VPX-Instanz auf VMware ESX-Hypervisoren zu erzielen.

Empfohlene Konfiguration auf ESX-Hosts

Um eine hohe Leistung für VPX mit E1000-, VMXNET3-, SR-IOV- und PCI-Passthrough-Netzwerkschnittstellen zu erzielen, befolgen Sie diese Empfehlungen:

  • 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.
  • Non-uniform Memory Access (NUMA)-Affinität und CPU-Affinität müssen für den ESX-Host festgelegt werden, um gute Ergebnisse zu erzielen.

    – Um die NUMA-Affinität eines Vmnic zu ermitteln, melden Sie sich lokal oder remote am 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 unter VMware-Dokumentation.

NetScaler VPX mit E1000-Netzwerkschnittstellen

Führen Sie die folgenden Einstellungen auf dem VMware ESX-Host durch:

  • Erstellen Sie auf dem VMware ESX-Host zwei vNICs aus einem pNIC-vSwitch. Mehrere vNICs erzeugen mehrere Empfangs- (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-Sende- (Tx) Durchsatz zu erhöhen, verwenden Sie pro vNIC einen separaten Tx-Thread im ESX-Host. 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 Version 6.0 und höher:

       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-Completion-Thread und Rx-Threads pro Geräte- (NIC) Warteschlange. Verwenden Sie den folgenden ESX-Befehl:

     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 eine Beispieltopologie und Konfigurationsbefehle für das Bereitstellungsmodell Zwei vNICs pro pNIC, das eine bessere Netzwerkleistung bietet.

Bereitstellung von zwei vNICs pro pNIC

NetScaler VPX Beispielkonfiguration:

Um die in der vorhergehenden Beispieltopologie gezeigte Bereitstellung zu erreichen, führen Sie die folgende Konfiguration auf der NetScaler VPX-Instanz durch:

  • Binden Sie auf der Clientseite den 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 serverseitig den 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 zwei Einträge in der Routing-Tabelle aufnehmen:

  • 1.1.1.0/24 Subnetz mit Gateway, das auf SNIP 1.1.1.2 zeigt
  • 2.2.2.0/24 Subnetz mit Gateway, das auf SNIP 2.2.2.2 zeigt

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 erzeugen 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-Sende-(Tx)-Durchsatz zu erhöhen, verwenden Sie pro vNIC einen separaten Tx-Thread im ESX-Host. 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 Version 6.0 und höher:
      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 erzeugen 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-Completion-Thread und Rx-Threads pro Geräte- (NIC-)Warteschlange. Verwenden Sie den folgenden Befehl:

     esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0
     <!--NeedCopy-->
    
  • Konfigurieren Sie eine VM so, dass sie einen Übertragungs-Thread pro vNIC verwendet, indem Sie die folgende Einstellung zur Konfiguration der VM hinzufügen:

     ethernetX.ctxPerDev = "1"
     <!--NeedCopy-->
    
  • Konfigurieren Sie eine VM so, dass sie bis zu 8 Übertragungs-Threads pro vNIC verwendet, indem Sie die folgende Einstellung zur Konfiguration der VM hinzufügen:

     ethernetX.ctxPerDev = "3"
     <!--NeedCopy-->
    

    Hinweis:

    Das Erhöhen der Übertragungs-Threads pro vNIC erfordert mehr CPU-Ressourcen (bis zu 8) auf dem ESX-Host. Stellen Sie sicher, dass ausreichend CPU-Ressourcen verfügbar sind, bevor Sie die vorhergehenden 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 Two vNICs per pNIC-Bereitstellung konfigurieren. Weitere Informationen finden Sie unter Two vNICs per pNIC deployment.

Konfigurieren 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, wechselt die Anzahl der für eine VMXNET3-Schnittstelle konfigurierten Rx- und Tx-Warteschlangen standardmäßig auf 1. 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 Release 13.1 Build 48.x unterstützt der 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äte 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.

VMXNET3-Schnittstellen so konfigurieren, dass sie mehr als 8 Rx- und Tx-Warteschlangen unterstützen:

  1. Öffnen Sie die Konfigurationsdatei der virtuellen Maschine (.vmx-Datei).
  2. Geben Sie die Anzahl der Rx- und TX-Warteschlangen an, indem Sie die Werte ethernetX.maxTxQueues und ethernetX.maxRxQueues konfigurieren (wobei X die Anzahl der zu konfigurierenden virtuellen NICs ist). Die maximal konfigurierte Anzahl von Warteschlangen darf nicht größer sein als die Anzahl der vCPUs in der virtuellen Maschine.

    Hinweis:

    Das Erhöhen der Anzahl der Warteschlangen erhöht auch den Prozessor-Overhead auf dem ESX-Host. Stellen Sie daher sicher, dass auf dem ESX-Host genügend CPU-Ressourcen verfügbar sind, bevor Sie die Warteschlangen erhöhen. Sie können die maximal unterstützte Anzahl von 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 auf 12, dann auf 16, dann auf 20 und so weiter. Bewerten Sie die Leistung bei jeder Einstellung, anstatt direkt auf das maximale Limit 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 VMware ESXi-Hypervisor

  • Wir empfehlen, eine NetScaler VPX-Instanz auf lokalen Festplatten des Servers oder auf SAN-basierten Speichervolumes bereitzustellen.

    Siehe den 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 überbelegten Host oder Cluster bereitzustellen.

  • In den meisten Umgebungen ermöglicht ESXi ein erhebliches Maß an 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 auf diesem Host beträgt.

  • Wenn ein ESXi-Host CPU-gesättigt ist, d. h. die virtuellen Maschinen und andere Lasten auf dem Host alle CPU-Ressourcen des Hosts beanspruchen, funktionieren latenzempfindliche Workloads möglicherweise nicht gut. Reduzieren Sie in diesem Fall die CPU-Last, indem Sie beispielsweise einige virtuelle Maschinen ausschalten oder sie auf einen anderen Host migrieren (oder DRS erlauben, sie automatisch zu migrieren).

  • NetScaler empfiehlt die Verwendung der neuesten Hardware-Kompatibilitätsversion, 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.

  • Die NetScaler VPX ist eine latenzempfindliche, hochleistungsfähige virtuelle Appliance. Um die erwartete Leistung zu erbringen, erfordert die Appliance vCPU-Reservierung, Speicherreservierung und vCPU-Pinning auf dem Host. Außerdem muss Hyper-Threading auf dem Host deaktiviert sein. Wenn der Host diese Anforderungen nicht erfüllt, können folgende Probleme auftreten:

    • High-Availability-Failover
    • CPU-Spitze innerhalb der VPX-Instanz
    • Trägheit beim Zugriff auf die VPX-CLI
    • Absturz des Pit-Boss-Daemons
    • Paketverluste
    • Geringer Durchsatz
  • Ein Hypervisor gilt als überprovisioniert, wenn eine der folgenden zwei 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 verbraucht mehr vCPUs als die Gesamtzahl der pCPUs.

      Wenn eine Instanz überprovisioniert ist, kann der Hypervisor die reservierten Ressourcen (wie CPU, Speicher und andere) für die Instanz aufgrund von Hypervisor-Scheduling-Overheads, Fehlern oder Einschränkungen des Hypervisors möglicherweise nicht garantieren. Dieses Verhalten kann zu einem Mangel an CPU-Ressourcen für NetScaler führen und die im ersten Punkt unter Nutzungsrichtlinien genannten Probleme verursachen. Wir empfehlen Administratoren, die Belegung des Hosts zu reduzieren, sodass die Gesamtzahl der auf dem Host bereitgestellten vCPUs kleiner oder gleich der Gesamtzahl der pCPUs ist.

      Beispiel:

      Für den ESX-Hypervisor, wenn der %RDY%-Parameter einer VPX-vCPU im esxtop-Befehlsausgabe größer als 0 ist, hat der ESX-Host Scheduling-Overheads, die zu Latenzproblemen für die VPX-Instanz führen können.

      Reduzieren Sie in einer solchen Situation die Belegung auf dem Host, sodass %RDY% immer 0 zurückgibt. Alternativ wenden Sie sich an den Hypervisor-Anbieter, um den Grund für die Nichteinhaltung der Ressourcenreservierung zu klären.

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 der Paket-Engine (Nicht-Management) von VPX-Instanzen in Hypervisor- und Cloud-Umgebungen zu steuern:

  • set ns vpxparam [-cpuyield (YES | NO | DEFAULT)] [-masterclockcpu1 (YES | NO)]

    Jeder VM erlauben, die CPU-Ressourcen zu nutzen, die einer anderen VM zugewiesen, aber nicht verwendet werden.

    Set ns vpxparam Parameter:

    -cpuyield: Freigabe oder Nicht-Freigabe von zugewiesenen, aber ungenutzten CPU-Ressourcen.

    • YES: Erlaubt, dass zugewiesene, aber ungenutzte CPU-Ressourcen von einer anderen VM verwendet werden.

    • NO: Reserviert 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 an.

    • 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 Auslastung zu überschreiben.

    Wenn Sie die Cluster-Knoten auf „yield“ setzen möchten, müssen Sie die folgenden zusätzlichen Konfigurationen auf CCO durchführen:

    • Wenn ein Cluster gebildet wird, werden alle Knoten auf „yield=DEFAULT“ gesetzt.
    • Wenn ein Cluster mit Knoten gebildet wird, die bereits auf „yield=YES“ gesetzt sind, werden die Knoten dem Cluster mit dem „DEFAULT“-Yield hinzugefügt.

    Hinweis:

    Wenn Sie die Cluster-Knoten auf „yield=YES“ setzen möchten, können Sie dies erst nach der Bildung des Clusters konfigurieren, nicht davor.

    -masterclockcpu1: Sie können die Haupttaktquelle von CPU0 (Management-CPU) auf CPU1 verschieben. Dieser Parameter hat die folgenden Optionen:

    • YES: Ermöglicht der VM, die Haupttaktquelle von CPU0 auf CPU1 zu verschieben.

    • NO: Die VM verwendet CPU0 als Haupttaktquelle. Standardmäßig ist CPU0 die Haupttaktquelle.

  • show ns vpxparam

    Dieser Befehl zeigt die aktuellen vpxparam-Einstellungen an.

NetScaler VPX-Instanz auf der Linux-KVM-Plattform

Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie weitere Vorschläge, die Ihnen helfen, eine optimale Leistung der NetScaler VPX-Instanz auf der Linux-KVM-Plattform zu erzielen.

Leistungseinstellungen für KVM

Führen Sie die folgenden Einstellungen auf dem KVM-Host durch:

Ermitteln Sie die NUMA-Domäne der NIC mit dem Befehl lstopo:

Stellen Sie sicher, dass der Speicher für die VPX und die CPU am selben Ort fixiert sind. In der folgenden Ausgabe ist die 10G-NIC „ens2“ an die NUMA-Domäne #1 gebunden.

NUMA-Domäne Nr. 1

Weisen Sie den VPX-Speicher der NUMA-Domäne zu.

Der numactl Befehl zeigt die NUMA-Domäne an, aus der der Speicher zugewiesen wird. In der folgenden Ausgabe werden etwa 10 GB RAM vom NUMA-Knoten Nr. 0 zugewiesen.

NUMA-Knoten Nr. 0

Um die NUMA-Knotenzuordnung zu ändern, führen Sie die folgenden Schritte aus.

  1. Bearbeiten Sie die .xml-Datei des VPX auf dem Host.

    /etc/libvirt/qemu/<VPX_name>.xml
    <!--NeedCopy-->
    
  2. Fügen Sie das folgende Tag hinzu:

    <numatune>
    <memory mode="strict" nodeset="1"/>    This is the NUMA domain name
    </numatune>
    <!--NeedCopy-->
    
  3. Fahren Sie den VPX herunter.

  4. 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.

  5. Schalten Sie den VPX ein. Überprüfen Sie dann die Ausgabe des numactl –hardware Befehls auf dem Host, um die aktualisierten Speicherzuweisungen für den VPX anzuzeigen.

    Ausgabe des Befehls numactl hardware

Fixieren Sie vCPUs des VPX an physische Kerne.

  • Um die vCPU-zu-pCPU-Zuordnungen eines VPX anzuzeigen, geben Sie den folgenden Befehl ein:

     virsh vcpupin <VPX name>
     <!--NeedCopy-->
    

    Ausgabe des Befehls virsh-vcpupin

    Die vCPUs 0–4 sind den physischen Kernen 8–11 zugeordnet.

  • Um die aktuelle pCPU-Auslastung anzuzeigen, geben Sie den folgenden Befehl ein:

     mpstat -P ALL 5
     <!--NeedCopy-->
    

    Ausgabe des mpstat-Befehls

    In dieser Ausgabe ist 8 die Management-CPU und 9–11 sind Paket-Engines.

  • Um die vCPU-zu-pCPU-Anheftung zu ändern, gibt es zwei Optionen.

    • Ändern Sie dies zur Laufzeit, nachdem die VPX hochgefahren ist, mit dem folgenden Befehl:

       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:

      1. Bearbeiten Sie die .xml-Datei der VPX auf dem Host

        /etc/libvirt/qemu/<VPX_name>.xml
        <!--NeedCopy-->
        
      2. Fügen Sie den folgenden 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-->
        
      3. Fahren Sie die VPX herunter.

      4. Aktualisieren Sie die Konfigurationsinformationen für die VM mit den NUMA-Knotenzuordnungen mit dem folgenden Befehl:

        virsh define /etc/libvirt/qemu/ <VPX_name>.xml
        <!--NeedCopy-->
        
      5. Schalten Sie die VPX ein. Überprüfen Sie dann die virsh vcpupin <VPX name>-Befehlsausgabe auf dem Host, um die aktualisierte CPU-Anheftung zu sehen.

Host-Interrupt-Overhead eliminieren.

  • VM_EXITS mit dem kvm_stat-Befehl erkennen.

    Auf Hypervisor-Ebene werden Host-Interrupts denselben pCPUs zugeordnet, auf denen die vCPUs der VPX angeheftet sind. Dies kann dazu führen, dass vCPUs auf der VPX periodisch herausgeworfen werden.

    Um die von den VMs, die den Host ausführen, durchgeführten VM-Exits zu finden, verwenden Sie den Befehl kvm_stat.

     [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 deutet auf ein Problem hin.

    Wenn eine einzelne VM vorhanden ist, liegt der erwartete Wert bei 30–100 K. Alles, was darüber hinausgeht, kann darauf hindeuten, dass ein oder mehrere Host-Interrupt-Vektoren demselben pCPU zugeordnet sind.

  • Host-Interrupts erkennen und Host-Interrupts migrieren.

    Wenn Sie den Befehl concatenate für die Datei „/proc/interrupts“ ausführen, werden alle Host-Interrupt-Zuordnungen angezeigt. Wenn eine oder mehrere aktive IRQs demselben pCPU zugeordnet sind, 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-->
    
  • IRQ-Balance deaktivieren.

    Deaktivieren Sie den IRQ-Balance-Daemon, damit keine Neuplanung spontan erfolgt.

     service irqbalance stop
     service irqbalance show - To check the status
     service irqbalance start - Enable if needed
     <!--NeedCopy-->
    

    Stellen Sie sicher, dass Sie den Befehl kvm_stat ausführen, um zu gewährleisten, dass nicht zu viele Zähler vorhanden sind.

NetScaler VPX mit PV-Netzwerkschnittstellen

Sie können para-virtualisierte (PV), SR-IOV- und PCIe-Passthrough-Netzwerkschnittstellen als Zwei vNICs pro pNIC-Bereitstellung konfigurieren. Weitere Informationen finden Sie unter Zwei vNICs pro pNIC-Bereitstellung.

Für eine optimale Leistung von PV (virtio)-Schnittstellen gehen Sie wie folgt vor:

  • Identifizieren Sie die NUMA-Domäne, zu der der PCIe-Steckplatz/NIC gehört.
  • Der Speicher und die vCPU für den VPX müssen an dieselbe NUMA-Domäne gebunden 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:

  1. Sobald der Datenverkehr gestartet ist, führen Sie den Befehl top auf dem Host aus.

    Führen Sie den Top-Befehl aus

  2. Identifizieren Sie die Affinität des virtuellen Host-Prozesses (benannt als vhost-<pid-of-qemu>).
  3. Binden Sie die vHost-Prozesse mit dem folgenden Befehl an die physischen Kerne in der zuvor identifizierten NUMA-Domäne:

    taskset –pc <core-id> <process-id>
    <!--NeedCopy-->
    

    Beispiel:

    taskset –pc 12 29838
    <!--NeedCopy-->
    
  4. 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 physischen Kern:

  1. Identifizieren Sie die physischen Kerne, auf denen der QEMU-Prozess ausgeführt wird. Weitere Informationen finden Sie in der vorhergehenden Ausgabe.
  2. Binden Sie den QEMU-Prozess mit dem folgenden Befehl an dieselben physischen Kerne, an die Sie die vCPUs binden:

    taskset –pc 8-11 29824
    <!--NeedCopy-->
    

NetScaler VPX mit SR-IOV- und Fortville-PCIe-Passthrough-Netzwerkschnittstellen

Für eine optimale Leistung der SR-IOV- und Fortville-PCIe-Passthrough-Netzwerkschnittstellen führen Sie die folgenden Schritte aus:

  • 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-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 Hypervisoren

Dieser Abschnitt enthält Details zu konfigurierbaren Optionen und Einstellungen sowie weitere Vorschläge, die Ihnen helfen, die optimale Leistung der NetScaler VPX-Instanz auf Citrix Hypervisoren zu erreichen.

Leistungseinstellungen für Citrix Hypervisoren

Suchen Sie die NUMA-Domäne der NIC mithilfe des Befehls „xl“:

xl info -n
<!--NeedCopy-->

Heften Sie die vCPUs der VPX an physische Kerne.

xl vcpu-pin <Netsclaer VM Name>  <vCPU id>  <physical CPU id>
<!--NeedCopy-->

Überprüfen Sie die Bindung der vCPUs.

xl vcpu-list
<!--NeedCopy-->

Weisen Sie NetScaler-VMs mehr als 8 vCPUs zu.

Um mehr als 8 vCPUs zu konfigurieren, führen Sie 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

Für eine optimale Leistung der SR-IOV-Netzwerkschnittstellen führen Sie die folgenden Schritte aus:

  • Identifizieren Sie die NUMA-Domäne, an die der PCIe-Steckplatz oder die NIC gebunden ist.
  • Heften Sie den Arbeitsspeicher und die vCPU für die VPX an dieselbe NUMA-Domäne.
  • Binden Sie die Domain-0-vCPU an die verbleibende CPU.

NetScaler VPX mit paravirtualisierten Schnittstellen

Für optimale Leistung werden zwei vNICs pro pNIC und eine vNIC pro pNIC-Konfiguration empfohlen, wie in anderen PV-Umgebungen.

Um eine optimale Leistung von paravirtualisierten (Netfront-)Schnittstellen zu erzielen, führen Sie die folgenden Schritte aus:

  • Identifizieren Sie die NUMA-Domäne, zu der der PCIe-Steckplatz oder die NIC gehört.
  • Fixieren Sie den Speicher und die vCPU für die VPX an dieselbe NUMA-Domäne.
  • Binden Sie die Domain-0-vCPU an die verbleibende CPU derselben NUMA-Domäne.
  • Fixieren Sie Host-Rx/Tx-Threads der vNIC an Domain-0-vCPUs.

Host-Threads an Domain-0-vCPUs fixieren:

  1. Suchen Sie die Xen-ID des NetScaler VPX, indem Sie den Befehl xl list in der Citrix Hypervisor-Host-Shell verwenden.
  2. Identifizieren Sie Host-Threads mit dem folgenden Befehl:

    ps -ax | grep vif <Xen-ID>
    <!--NeedCopy-->
    

    Im folgenden Beispiel bedeuten diese Werte:

    • vif5.0 – Die Threads für die erste Schnittstelle, die der VPX in XenCenter zugewiesen wurde (Verwaltungsschnittstelle).
    • vif5.1 – Die Threads für die zweite Schnittstelle, die der VPX zugewiesen wurde, und so weiter.

    Ausgabe des Befehls xl list

  3. Fixieren Sie die Threads mit dem folgenden Befehl an die Domain-0 vCPUs:

    taskset –pc <core-id> <process-id>
    <!--NeedCopy-->
    

    Beispiel:

    taskset -pc 1 29189
    <!--NeedCopy-->
    
Optimieren der NetScaler VPX-Leistung auf VMware ESX, Linux KVM und Citrix Hypervisoren