ADC

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

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 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-->
      
  • 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 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 ein Beispiel für Topologie und Konfigurationsbefehle für das Bereitstellungsmodell mit zwei vNICs pro pNIC, das eine bessere Netzwerkleistung bietet.

Zwei vNICs pro pNIC-Bereitstellung

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

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.

Weitere Informationen finden Sie unter Best Practices für die Leistungsoptimierung von Telekommunikations- und NFV-Workloads in vSphere

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:

  1. Öffnen Sie die Konfigurationsdatei der virtuellen Maschine (.vmx).
  2. Geben Sie die Anzahl der Rx- und TX-Warteschlangen an, indem Sie die ethernetX.maxRxQueues Werte ethernetX.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 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 VPX-Instanz auf lokalen Festplatten des Servers oder auf 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:

    • Failover mit hoher Verfügbarkeit
    • CPU-Spitze innerhalb der VPX-Instanz
    • Trägheit beim Zugriff auf die VPX-CLI
    • Absturz des Pitboss-Daemons
    • Paket wird gelöscht
    • 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 Befehlsausgabe esxtop 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

Nehmen Sie die folgenden Einstellungen auf dem KVM-Host vor:

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

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.

NUMA-Domäne #1

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.

NUMA-Knoten #0

Gehen Sie folgendermaßen vor, um die NUMA-Knotenzuordnung zu ändern.

  1. Bearbeiten Sie die XML 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 numactl –hardware Befehlsausgabe auf dem Host, um die aktualisierten Speicherzuweisungen für den VPX zu sehen.

    Ausgabe des Hardwarebefehls numactl

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

    Ausgabe des Befehls virsh-vcpupin

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

    Ausgabe des Befehls mpstat

    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:

      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:

        <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 den VPX herunter.

      4. 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-->
        
      5. 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, beträgt der erwartete Wert 30−100 K. Alles andere 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:

  1. Sobald der Verkehr gestartet wurde, führen Sie den top Befehl 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 zuvor identifizierten physischen Kerne in der 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 physikalischen Kern:

  1. Identifizieren Sie die physikalischen Kerne, auf denen der QEMU-Prozess läuft. Weitere Informationen finden Sie in der vorhergehenden Ausgabe.
  2. 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 den VPX müssen an dieselbe NUMA-Domäne angeheftet 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

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:

  1. Suchen Sie die Xen-ID des VPX mithilfe des xl list Befehls auf der Citrix Hypervisor Hostshell.
  2. 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.

    Ausgabe des Befehls xl list

  3. 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-->
    
Optimieren der Leistung von NetScaler VPX auf VMware ESX, Linux KVM und Citrix Hypervisors