NetScaler VPX 14.1

ヴイエムウェア ESX、Linux KVM、および シトリックス ハイパーバイザー 上での NetScaler VPX パフォーマンスの最適化

NetScaler VPXのパフォーマンスは、ハイパーバイザー、割り当てられたシステムリソース、およびホスト構成によって大きく異なります。目的のパフォーマンスを達成するには、まずVPXデータシートの推奨事項に従い、次にこのドキュメントで提供されているベストプラクティスを使用してさらに最適化してください。

VMware ESXハイパーバイザー上のNetScaler VPXインスタンス

このセクションには、構成可能なオプションと設定、およびVMware ESXハイパーバイザー上のNetScaler VPXインスタンスの最適なパフォーマンスを達成するのに役立つその他の提案の詳細が含まれています。

ESXホストでの推奨構成

E1000、VMXNET3、SR-IOV、およびPCIパススルーネットワークインターフェイスを備えたVPXで高いパフォーマンスを達成するには、次の推奨事項に従ってください。

  • ESXホストにプロビジョニングされる仮想CPU (vCPU) の総数は、ESXホスト上の物理CPU (pCPU) の総数以下である必要があります。
  • 良好な結果を達成するには、ESXホストに対して非均一メモリアクセス (NUMA) アフィニティとCPUアフィニティを設定する必要があります。

    – VmnicのNUMAアフィニティを見つけるには、ローカルまたはリモートでホストにログインし、次のように入力します。

     #vsish -e get /net/pNics/vmnic7/properties | grep NUMA
     Device NUMA Node: 0
     <!--NeedCopy-->
    
    • VMのNUMAおよびvCPUアフィニティを設定するには、VMware documentationを参照してください。

E1000ネットワークインターフェイスを備えたNetScaler VPX

VMware ESX ホストで次の設定を実行します。

  • VMware ESX ホストで、1つのpNIC vSwitchから2つのvNICを作成します。複数のvNICを作成すると、ESXホスト内に複数の受信 (Rx) スレッドが作成されます。これにより、pNICインターフェイスのRxスループットが向上します。
  • 作成した各vNICについて、vSwitchポートグループレベルでVLANを有効にします。
  • vNICの送信 (Tx) スループットを向上させるには、vNICごとにESXホストで個別のTxスレッドを使用します。次のESXコマンドを使用します。
    • ESXバージョン5.5の場合:

       esxcli system settings advanced set –o /Net/NetTxWorldlet –i
       <!--NeedCopy-->
      
    • ESXバージョン6.0以降の場合:

       esxcli system settings advanced set -o /Net/NetVMTxType –i 1
       <!--NeedCopy-->
      
  • vNICのTxスループットをさらに向上させるには、デバイス (NIC) キューごとに個別のTx完了スレッドとRxスレッドを使用します。次のESXコマンドを使用します。

     esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0
     <!--NeedCopy-->
    

注:

更新された設定を適用するには、VMware ESX ホストを再起動してください。

pNICあたり2つのvNIC展開

以下は、より優れたネットワークパフォーマンスを提供する展開モデルであるpNICあたり2つのvNICのサンプル構成と設定コマンドです。

pNICあたり2つのvNIC展開

ネットスケーラー VPX の構成例:

上記のサンプル構成図に示されている展開を実現するには、NetScaler VPX インスタンスで次の構成を実行します。

  • クライアント側で、SNIP (1.1.1.2) をネットワークインターフェイス1/1にバインドし、VLANタグモードを有効にします。

     bind vlan 2 -ifnum 1/1 –tagged
     bind vlan 2 -IPAddress 1.1.1.2 255.255.255.0
     <!--NeedCopy-->
    
  • サーバー側で、SNIP (2.2.2.2) をネットワークインターフェース 1/1 にバインドし、VLANタグモードを有効にします。

     bind vlan 3 -ifnum 1/2 –tagged
     bind vlan 3 -IPAddress 2.2.2.2 255.255.255.0
     <!--NeedCopy-->
    
  • HTTP仮想サーバー (1.1.1.100) を追加し、サービス (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-->
    

注:

ルートテーブルに次の2つのエントリを含めるようにしてください。

  • 1.1.1.0/24 サブネット (ゲートウェイはSNIP 1.1.1.2 を指す)
  • 2.2.2.0/24 サブネット (ゲートウェイはSNIP 2.2.2.2 を指す)

VMXNET3 ネットワークインターフェースを使用するNetScaler VPX

VMXNET3 ネットワークインターフェースを使用するVPXで高いパフォーマンスを実現するには、VMware ESXホストで次の設定を行います。

  • 1つのpNIC vSwitchから2つのvNICを作成します。複数のvNICは、ESXホストで複数のRxスレッドを作成します。これにより、pNICインターフェースのRxスループットが向上します。
  • 作成した各vNICに対して、vSwitchポートグループレベルでVLANを有効にします。
  • vNICの送信 (Tx) スループットを向上させるには、vNICごとにESXホストで個別のTxスレッドを使用します。次のESXコマンドを使用します。
    • ESXバージョン5.5の場合:
     esxcli system settings advanced set –o /Net/NetTxWorldlet –i
     <!--NeedCopy-->
    
    • ESXバージョン6.0以降の場合:
      esxcli system settings advanced set -o /Net/NetVMTxType –i 1
      <!--NeedCopy-->
    

VMware ESXホストで、次の構成を実行します。

  • VMware ESXホストで、1つのpNIC vSwitchから2つのvNICを作成します。複数のvNICは、ESXホストで複数のTxおよびRxスレッドを作成します。これにより、pNICインターフェースのTxおよびRxスループットが向上します。
  • 作成した各vNICについて、vSwitchポートグループレベルでVLANを有効にします。
  • vNICのTxスループットを向上させるには、デバイス(NIC)キューごとに個別のTx完了スレッドとRxスレッドを使用します。次のコマンドを使用します。

     esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0
     <!--NeedCopy-->
    
  • VMの構成に次の設定を追加して、VMがvNICごとに1つの送信スレッドを使用するように構成します。

     ethernetX.ctxPerDev = "1"
     <!--NeedCopy-->
    
  • VMの構成に次の設定を追加して、VMがvNICごとに最大8つの送信スレッドを使用するように構成します。

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

    注:

    vNICあたりの送信スレッド数を増やすと、ESXホストでより多くのCPUリソース(最大8つ)が必要になります。上記の構成を行う前に、十分なCPUリソースが利用可能であることを確認してください。

注:

更新された設定を適用するには、VMware ESXホストを再起動してください。

VMXNET3をpNICあたり2つのvNIC展開として構成できます。詳細については、「pNICあたり2つのvNIC展開」を参照してください。

VMXNET3デバイスのVMware ESXでマルチキューおよびRSSサポートを構成する

デフォルトでは、VMXNET3デバイスは8つのRxおよびTxキューのみをサポートします。VPX上のvCPUの数が8を超えると、VMXNET3インターフェイス用に構成されたRxおよびTxキューの数はデフォルトで1に切り替わります。ESXで特定の構成を変更することにより、VMXNET3デバイス用に最大19のRxおよびTxキューを構成できます。このオプションにより、VPXインスタンスのvCPU全体でのパケットのパフォーマンスと均一な分散が向上します。

注:

NetScalerリリース13.1ビルド48.x以降、NetScaler VPXはVMXNET3デバイスのESXで最大19のRxおよびTxキューをサポートします。

前提条件:

VMXNET3デバイスのESXで最大19のRxおよびTxキューを構成するには、次の前提条件が満たされていることを確認してください。

  • NetScaler VPX のバージョンは 13.1 ビルド 48.X 以降です。
  • NetScaler VPX は、VMware ESX 7.0 以降でサポートされているハードウェアバージョン 17 以降の仮想マシンで構成されています。

8 を超える Rx および Tx キューをサポートするように VMXNET3 インターフェイスを構成する:

  1. 仮想マシン構成ファイル (.vmx) を開きます。
  2. ethernetX.maxTxQueuesethernetX.maxRxQueues の値を構成して、Rx および TX キューの数を指定します (X は構成する仮想 NIC の数です)。構成されるキューの最大数は、仮想マシン内の vCPU の数を超えてはなりません。

    注:

    キューの数を増やすと、ESX ホストのプロセッサオーバーヘッドも増加します。したがって、キューを増やす前に、ESX ホストに十分な CPU リソースがあることを確認してください。キューの数がパフォーマンスのボトルネックとして特定されるシナリオでは、サポートされるキューの最大数を増やすことができます。このような状況では、キューの数を徐々に増やすことをお勧めします。たとえば、8 から 12、次に 16、次に 20、というように増やします。最大制限まで直接増やすのではなく、各設定でパフォーマンスを評価してください。

SR-IOV および PCI パススルーネットワークインターフェイスを備えた NetScaler VPX

SR-IOV および PCI パススルーネットワークインターフェイスを備えた NetScaler VPX で高いパフォーマンスを実現するには、「ESX ホストでの推奨構成」を参照してください。

VMware ESXi ハイパーバイザーの使用ガイドライン

  • NetScaler VPX インスタンスは、サーバーのローカルディスクまたは SAN ベースのストレージボリュームに展開することをお勧めします。

    Performance Best Practices for VMware vSphere 6.5」ドキュメントの「VMware ESXi CPU の考慮事項」セクションを参照してください。以下にその抜粋を示します。

  • CPU またはメモリ要求の高い仮想マシンを、オーバーコミットされたホストまたはクラスターに展開することはお勧めしません。

  • ほとんどの環境では、ESXi は仮想マシンのパフォーマンスに影響を与えることなく、かなりのレベルの CPU オーバーコミットを許可します。ホストでは、そのホストの物理プロセッサコアの総数よりも多くの vCPU を実行できます。

  • ESXi ホストが CPU 飽和状態になった場合、つまり、ホスト上の仮想マシンやその他の負荷がホストが持つすべての CPU リソースを要求する場合、レイテンシに敏感なワークロードはうまく機能しない可能性があります。この場合、たとえば、一部の仮想マシンの電源をオフにするか、別のホストに移行する (または DRS に自動的に移行させる) ことで、CPU 負荷を軽減します。

  • NetScaler は、仮想マシン向け ESXi ハイパーバイザーの最新機能セットを利用するために、最新のハードウェア互換性バージョンを使用することを推奨します。ハードウェアと ESXi バージョンの互換性の詳細については、VMware ドキュメント を参照してください。

  • NetScaler VPX は、レイテンシに敏感な高性能仮想アプライアンスです。期待されるパフォーマンスを提供するには、アプライアンスはホスト上で vCPU 予約、メモリ予約、および vCPU ピン留めを必要とします。また、ホストではハイパースレッディングを無効にする必要があります。ホストがこれらの要件を満たさない場合、次の問題が発生する可能性があります。

    • 高可用性フェイルオーバー
    • VPX インスタンス内の CPU スパイク
    • VPX CLI へのアクセスが遅い
    • Pit boss デーモンのクラッシュ
    • パケットドロップ
    • 低スループット
  • 次の2つの条件のいずれかが満たされる場合、ハイパーバイザーはオーバープロビジョニングされていると見なされます。

    • ホストにプロビジョニングされた仮想コア (vCPU) の総数が、物理コア (pCPU) の総数よりも多い。

    • プロビジョニングされた VM の総数が、pCPU の総数よりも多くの vCPU を消費する。

      インスタンスがオーバープロビジョニングされている場合、ハイパーバイザーのスケジューリングオーバーヘッド、バグ、またはハイパーバイザーの制限により、ハイパーバイザーがインスタンスに予約されたリソース (CPU、メモリなど) を保証しない可能性があります。この動作は、NetScaler の CPU リソース不足を引き起こし、使用ガイドラインの最初のポイントで述べた問題につながる可能性があります。管理者は、ホストにプロビジョニングされる vCPU の総数が pCPU の総数以下になるように、ホストのテナンシーを減らすことを推奨します。

      例:

      ESX ハイパーバイザーの場合、esxtop コマンド出力で VPX vCPU の %RDY% パラメーターが 0 より大きい場合、ESX ホストにはスケジューリングオーバーヘッドがあり、VPX インスタンスにレイテンシ関連の問題を引き起こす可能性があります。

      このような状況では、%RDY% が常に 0 に戻るようにホストのテナンシーを減らしてください。または、リソース予約が尊重されない理由をトリアージするために、ハイパーバイザーベンダーに連絡してください。

パケットエンジンCPU使用率を制御するコマンド

ハイパーバイザーおよびクラウド環境におけるVPXインスタンスのパケットエンジン(非管理)CPU使用率の動作を制御するために、2つのコマンド(set ns vpxparamshow ns vpxparam)を使用できます。

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

    各VMが、他のVMに割り当てられているが使用されていないCPUリソースを使用できるようにします。

    Set ns vpxparam パラメータ:

    -cpuyield: 割り当てられているが使用されていないCPUリソースを解放するか、解放しないかを指定します。

    • YES: 割り当てられているが使用されていないCPUリソースを、別のVMが使用できるようにします。

    • NO: すべてのCPUリソースを、それらが割り当てられているVMのために予約します。このオプションは、ハイパーバイザーおよびクラウド環境でVPX CPU使用率がより高いパーセンテージを示すことになります。

    • デフォルト: いいえ。

    注:

    すべてのNetScaler VPXプラットフォームでは、ホストシステム上のvCPU使用率は100パーセントです。この使用率を上書きするには、set ns vpxparam –cpuyield YESコマンドを使用します。

    クラスターノードを「yield」に設定したい場合は、CCOで以下の追加設定を行う必要があります。

    • クラスターが形成されると、すべてのノードは「yield=DEFAULT」に設定されます。
    • すでに「yield=YES」に設定されているノードを使用してクラスターが形成された場合、ノードは「DEFAULT」yieldを使用してクラスターに追加されます。

    注:

    クラスターノードを「yield=YES」に設定する場合、クラスター形成後にのみ設定可能で、形成前には設定できません。

    -masterclockcpu1: メインクロックソースをCPU0(管理CPU)からCPU1に移動できます。このパラメーターには、次のオプションがあります。

    • YES: VMがメインクロックソースをCPU0からCPU1に移動することを許可します。

    • NO: VMはメインクロックソースにCPU0を使用します。デフォルトでは、CPU0がメインクロックソースです。

  • show ns vpxparam

    このコマンドは、現在のvpxparam設定を表示します。

Linux-KVMプラットフォーム上のNetScaler VPXインスタンス

このセクションでは、Linux-KVMプラットフォーム上のNetScaler VPXインスタンスの最適なパフォーマンスを実現するのに役立つ、構成可能なオプションと設定、およびその他の提案の詳細について説明します。

KVMのパフォーマンス設定

KVMホストで次の設定を実行します。

lstopoコマンドを使用してNICのNUMAドメインを見つけます:

VPXとCPUのメモリが同じ場所にピン留めされていることを確認してください。 次の出力では、10G NIC「ens2」がNUMAドメイン#1に紐付けられています。

NUMAドメイン #1

NUMAドメインからVPXメモリを割り当てます。

numactlコマンドは、メモリが割り当てられているNUMAドメインを示します。以下の出力では、NUMAノード #0から約10 GBのRAMが割り当てられています。

NUMAノード #0 の図

NUMAノードマッピングを変更するには、次の手順に従います。

  1. ホスト上のVPXの.xmlを編集します。

    /etc/libvirt/qemu/<VPX_name>.xml
    <!--NeedCopy-->
    
  2. 次のタグを追加します。

    <numatune>
    <memory mode="strict" nodeset="1"/>    This is the NUMA domain name
    </numatune>
    <!--NeedCopy-->
    
  3. VPXをシャットダウンします。

  4. 次のコマンドを実行します。

    virsh define /etc/libvirt/qemu/<VPX_name>.xml
    <!--NeedCopy-->
    

    このコマンドは、NUMAノードマッピングを使用してVMの構成情報を更新します。

  5. VPXの電源をオンにします。次に、ホストでnumactl –hardwareコマンドの出力を確認し、VPXの更新されたメモリ割り当てを確認します。

    numactl hardware コマンドの実行結果の表示

VPXのvCPUを物理コアにピン留めします。

  • VPXのvCPUからpCPUへのマッピングを表示するには、次のコマンドを入力します。

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

    virsh-vcpupin コマンドの実行結果の表示

    vCPU 0~4 は物理コア 8~11 にマッピングされています。

  • 現在の pCPU 使用状況を表示するには、次のコマンドを入力します。

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

    mpstat コマンドの出力(/ja-jp/vpx/media/mpstat-output.png)

    この出力では、8 は管理 CPU であり、9~11 はパケットエンジンです。

  • vCPU から pCPU へのピン留めを変更するには、2つのオプションがあります。

    • VPX の起動後、次のコマンドを使用して実行時に変更します。

       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-->
      
    • VPX に静的な変更を加えるには、以前と同様に .xml ファイルを編集し、次のタグを追加します。

      1. ホスト上で VPX の .xml ファイルを編集します

        /etc/libvirt/qemu/<VPX_name>.xml
        <!--NeedCopy-->
        
      2. 次のタグを追加します。

        <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. VPX をシャットダウンします。

      4. 次のコマンドを使用して、NUMA ノードマッピングで VM の構成情報を更新します。

        virsh define /etc/libvirt/qemu/ <VPX_name>.xml
        <!--NeedCopy-->
        
      5. VPX の電源を入れます。次に、ホスト上で virsh vcpupin <VPX name> コマンドの出力を確認して、更新された CPU ピン留めを確認します。

ホスト割り込みのオーバーヘッドを排除する。

  • kvm_stat コマンドを使用して VM_EXITS を検出します。

    ハイパーバイザーレベルでは、ホスト割り込みは VPX の vCPU がピン留めされているのと同じ pCPU にマッピングされます。これにより、VPX 上の vCPU が定期的に強制終了される可能性があります。

    ホスト上で実行されているVMによって発生したVM終了を検出するには、kvm_statコマンドを使用します。

     [root@localhost ~]# kvm_stat -1  | grep EXTERNAL
     kvm_exit(EXTERNAL_INTERRUPT)  1728349 27738
     [root@localhost ~]#
     <!--NeedCopy-->
    

    1+Mのオーダーで値が高い場合は、問題があることを示します。

    単一のVMが存在する場合、期待される値は30~100Kです。それ以上の場合、1つ以上のホスト割り込みベクトルが同じpCPUにマッピングされていることを示している可能性があります。

  • ホスト割り込みを検出し、ホスト割り込みを移行します。

    「/proc/interrupts」ファイルに対してconcatenateコマンドを実行すると、すべてのホスト割り込みマッピングが表示されます。1つ以上の有効なIRQが同じpCPUにマッピングされている場合、対応するカウンターが増加します。

    NetScaler VPXのpCPUと重複する割り込みを、未使用のpCPUに移動します。

     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バランスを無効にします。

    IRQバランスデーモンを無効にして、その場で再スケジューリングが発生しないようにします。

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

    カウンターが多数ないことを確認するために、kvm_statコマンドを実行してください。

PVネットワークインターフェイスを備えたNetScaler VPX

パラ仮想化 (PV)、SR-IOV、およびPCIeパススルーネットワークインターフェイスを、pNICあたり2つのvNIC展開として構成できます。詳細については、「pNICあたり2つのvNIC展開」を参照してください。

PV (virtio) インターフェイスの最適なパフォーマンスを得るには、次の手順に従います。

  • PCIeスロット/NICが属するNUMAドメインを特定します。
  • VPXのメモリとvCPUは、同じNUMAドメインにピン留めする必要があります。
  • Vhostスレッドは、同じNUMAドメイン内のCPUにバインドする必要があります。

仮想ホストスレッドを対応するCPUにバインドする:

  1. トラフィックが開始されたら、ホスト上でtopコマンドを実行します。

    topコマンドを実行

  2. 仮想ホストプロセス(vhost-<pid-of-qemu>という名前)のアフィニティを特定します。
  3. 以下のコマンドを使用して、vHostプロセスを以前に特定したNUMAドメイン内の物理コアにバインドします。

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

    例:

    taskset –pc 12 29838
    <!--NeedCopy-->
    
  4. NUMAドメインに対応するプロセッサコアは、次のコマンドで特定できます。

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

QEMUプロセスを対応する物理コアにバインドする:

  1. QEMUプロセスが実行されている物理コアを特定します。詳細については、前の出力をご参照ください。
  2. 以下のコマンドを使用して、QEMUプロセスをvCPUをバインドするのと同じ物理コアにバインドします。

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

SR-IOVおよびFortville PCIeパススルーネットワークインターフェイスを備えたNetScaler VPX

SR-IOVおよびFortville PCIeパススルーネットワークインターフェイスの最適なパフォーマンスを得るには、次の手順に従います。

  • PCIeスロット/NICが属するNUMAドメインを特定します。
  • NetScaler VPXのメモリとvCPUは、同じNUMAドメインにピン留めする必要があります。

Linux KVMのvCPUおよびメモリピン留め用のVPX XMLファイルの例:

    <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 インスタンス

このセクションでは、Citrix Hypervisors 上で NetScaler VPX インスタンスの最適なパフォーマンスを実現するのに役立つ、構成可能なオプションと設定、およびその他の提案について詳しく説明します。

シトリックス ハイパーバイザーのパフォーマンス設定

「xl」コマンドを使用して NIC の NUMA ドメインを検索します。

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

VPX の vCPU を物理コアにピン留めします。

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

vCPU のバインディングを確認します。

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

NetScaler VM に 8 個を超える vCPU を割り当てます。

8 個を超える vCPU を構成するには、Citrix Hypervisor™ コンソールから次のコマンドを実行します。

xe vm-param-set uuid=your_vms_uuid VCPUs-max=16
xe vm-param-set uuid=your_vms_uuid VCPUs-at-startup=16
<!--NeedCopy-->

SR-IOV ネットワークインターフェイスを備えた NetScaler VPX

SR-IOV ネットワークインターフェイスの最適なパフォーマンスを得るには、次の手順に従います。

  • PCIe スロットまたは NIC が関連付けられている NUMA ドメインを特定します。
  • VPX のメモリと vCPU を同じ NUMA ドメインにピン留めします。
  • Domain-0 vCPU を残りの CPU にバインドします。

準仮想化インターフェースを備えた NetScaler VPX

最適なパフォーマンスを得るには、他の PV 環境と同様に、pNIC あたり 2 つの vNIC と pNIC あたり 1 つの vNIC の構成が推奨されます。

準仮想化 (netfront) インターフェースの最適なパフォーマンスを実現するには、以下の手順に従ってください。

  • PCIe スロットまたは NIC が属する NUMA ドメインを特定します。
  • VPX のメモリと vCPU を同じ NUMA ドメインに固定します。
  • Domain-0 vCPU を同じ NUMA ドメインの残りの CPU にバインドします。
  • vNIC のホスト Rx/Tx スレッドを Domain-0 vCPU に固定します。

ホストスレッドを Domain-0 vCPU に固定する:

  1. Citrix Hypervisor ホストシェルで xl list コマンドを使用して、NetScaler VPX の Xen-ID を見つけます。
  2. 以下のコマンドを使用してホストスレッドを特定します。

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

    以下の例では、これらの値は以下を示します。

    • vif5.0 - XenCenter で VPX に割り当てられた最初のインターフェースのスレッド (管理インターフェース)。
    • vif5.1 - VPX に割り当てられた 2 番目のインターフェースのスレッドなど。

    xl list コマンドの出力の図(/ja-jp/vpx/media/xl-list-command.png)

  3. 次のコマンドを使用して、スレッドをDomain-0 vCPUに固定します。

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

    例:

    taskset -pc 1 29189
    <!--NeedCopy-->
    
ヴイエムウェア ESX、Linux KVM、および シトリックス ハイパーバイザー 上での NetScaler VPX パフォーマンスの最適化