Optimizar el rendimiento de NetScaler VPX en VMware ESX, Linux KVM y Citrix Hypervisors
El rendimiento de NetScaler VPX varía considerablemente según el hipervisor, los recursos del sistema asignados y las configuraciones del host. Para lograr el rendimiento deseado, primero siga las recomendaciones de la hoja de datos de VPX y luego optimícelo aún más utilizando las mejores prácticas proporcionadas en este documento.
Instancia de NetScaler VPX en hipervisores VMware ESX
Esta sección contiene detalles de las opciones y configuraciones configurables, y otras sugerencias que le ayudarán a lograr un rendimiento óptimo de la instancia de NetScaler VPX en hipervisores VMware ESX.
- Configuración recomendada en hosts ESX
- NetScaler VPX con interfaces de red E1000
- NetScaler VPX con interfaces de red VMXNET3
- NetScaler VPX con interfaces de red SR-IOV y PCI passthrough
Configuración recomendada en hosts ESX
Para lograr un alto rendimiento para VPX con interfaces de red E1000, VMXNET3, SR-IOV y PCI passthrough, siga estas recomendaciones:
- El número total de CPU virtuales (vCPU) aprovisionadas en el host ESX debe ser menor o igual al número total de CPU físicas (pCPU) en el host ESX.
-
La afinidad de acceso a memoria no uniforme (NUMA) y la afinidad de CPU deben configurarse para el host ESX para obtener buenos resultados.
– Para encontrar la afinidad NUMA de un Vmnic, inicie sesión en el host local o remotamente, y escriba:
#vsish -e get /net/pNics/vmnic7/properties | grep NUMA Device NUMA Node: 0 <!--NeedCopy-->- Para configurar la afinidad NUMA y vCPU para una VM, consulte la documentación de VMware.
NetScaler VPX con interfaces de red E1000
Realice las siguientes configuraciones en el host VMware ESX:
- En el host VMware ESX, cree dos vNIC a partir de un vSwitch pNIC. Múltiples vNIC crean múltiples hilos Rx en el host ESX. Esto aumenta el rendimiento Rx de la interfaz pNIC.
- Habilite las VLAN en el nivel de grupo de puertos del vSwitch para cada vNIC que haya creado.
- Para aumentar el rendimiento de transmisión (Tx) de la vNIC, utilice un hilo Tx separado en el host ESX por cada vNIC. Utilice el siguiente comando ESX:
-
Para la versión 5.5 de ESX:
esxcli system settings advanced set –o /Net/NetTxWorldlet –i <!--NeedCopy--> -
Para la versión 6.0 de ESX en adelante:
esxcli system settings advanced set -o /Net/NetVMTxType –i 1 <!--NeedCopy-->
-
-
Para aumentar aún más el rendimiento de Tx de la vNIC, utilice un hilo de finalización de Tx y hilos Rx separados por cola de dispositivo (NIC). Utilice el siguiente comando ESX:
esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0 <!--NeedCopy-->
Nota:
Asegúrese de reiniciar el host VMware ESX para aplicar las configuraciones actualizadas.
Implementación de dos vNIC por pNIC
A continuación se muestra una topología de ejemplo y comandos de configuración para el modelo de implementación de Dos vNIC por pNIC que ofrece un mejor rendimiento de red.

Configuración de ejemplo de NetScaler VPX:
Para lograr la implementación que se muestra en la topología de ejemplo anterior, realice la siguiente configuración en la instancia de NetScaler VPX:
-
En el lado del cliente, vincule el SNIP (1.1.1.2) a la interfaz de red 1/1 y habilite el modo de etiquetado VLAN.
bind vlan 2 -ifnum 1/1 –tagged bind vlan 2 -IPAddress 1.1.1.2 255.255.255.0 <!--NeedCopy--> -
En el lado del servidor, enlace el SNIP (2.2.2.2) a la interfaz de red 1/1 y habilite el modo de etiquetado VLAN.
bind vlan 3 -ifnum 1/2 –tagged bind vlan 3 -IPAddress 2.2.2.2 255.255.255.0 <!--NeedCopy--> -
Añada un servidor virtual HTTP (1.1.1.100) y enlácelo a un servicio (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-->
Nota:
Asegúrese de incluir las dos entradas siguientes en la tabla de rutas:
- Subred 1.1.1.0/24 con puerta de enlace que apunta a SNIP 1.1.1.2
- Subred 2.2.2.0/24 con puerta de enlace que apunta a SNIP 2.2.2.2
NetScaler VPX con interfaces de red VMXNET3
Para lograr un alto rendimiento para VPX con interfaces de red VMXNET3, realice las siguientes configuraciones en el host VMware ESX:
- Cree dos vNIC a partir de un vSwitch pNIC. Múltiples vNIC crean múltiples subprocesos Rx en el host ESX. Esto aumenta el rendimiento Rx de la interfaz pNIC.
- Habilite las VLAN en el nivel de grupo de puertos del vSwitch para cada vNIC que haya creado.
- Para aumentar el rendimiento de transmisión (Tx) de vNIC, utilice un subproceso Tx independiente en el host ESX por cada vNIC. Utilice los siguientes comandos de ESX:
- Para la versión 5.5 de ESX:
esxcli system settings advanced set –o /Net/NetTxWorldlet –i <!--NeedCopy-->- Para la versión 6.0 de ESX en adelante:
esxcli system settings advanced set -o /Net/NetVMTxType –i 1 <!--NeedCopy-->
En el host VMware ESX, realice la siguiente configuración:
- En el host VMware ESX, cree dos vNIC a partir de 1 vSwitch pNIC. Múltiples vNIC crean múltiples subprocesos Tx y Rx en el host ESX. Esto aumenta el rendimiento de Tx y Rx de la interfaz pNIC.
- Habilite las VLAN en el nivel de grupo de puertos de vSwitch para cada vNIC que haya creado.
-
Para aumentar el rendimiento de Tx de una vNIC, utilice un hilo de finalización de Tx y hilos de Rx separados por cola de dispositivo (NIC). Utilice el siguiente comando:
esxcli system settings advanced set -o /Net/NetNetqRxQueueFeatPairEnable -i 0 <!--NeedCopy--> -
Configure una VM para usar un hilo de transmisión por vNIC, agregando la siguiente configuración a la configuración de la VM:
ethernetX.ctxPerDev = "1" <!--NeedCopy--> -
Configure una VM para usar hasta 8 hilos de transmisión por vNIC, agregando la siguiente configuración a la configuración de la VM:
ethernetX.ctxPerDev = "3" <!--NeedCopy-->Nota:
Aumentar los hilos de transmisión por vNIC requiere más recursos de CPU (hasta 8) en el host ESX. Asegúrese de que haya suficientes recursos de CPU disponibles antes de realizar las configuraciones anteriores.
Nota:
Asegúrese de reiniciar el host VMware ESX para aplicar la configuración actualizada.
Puede configurar VMXNET3 como una implementación de Dos vNIC por pNIC. Para obtener más información, consulte Implementación de dos vNIC por pNIC.
Configurar soporte de múltiples colas y RSS en VMware ESX para dispositivos VMXNET3
De forma predeterminada, el dispositivo VMXNET3 solo admite 8 colas Rx y Tx. Cuando el número de vCPU en el VPX supera las 8, el número de colas Rx y Tx configuradas para una interfaz VMXNET3 cambia a 1 por defecto. Puede configurar hasta 19 colas Rx y Tx para dispositivos VMXNET3 cambiando ciertas configuraciones en ESX. Esta opción aumenta el rendimiento y la distribución uniforme de los paquetes entre las vCPU de la instancia VPX.
Nota:
A partir de la versión 13.1 compilación 48.x de NetScaler, NetScaler VPX admite hasta 19 colas Rx y Tx en ESX para dispositivos VMXNET3.
Requisitos previos:
Para configurar hasta 19 colas Rx y Tx en ESX para dispositivos VMXNET3, asegúrese de que se cumplan los siguientes requisitos previos:
- La versión de NetScaler VPX es 13.1 build 48.X y posteriores.
- NetScaler VPX está configurado con una máquina virtual de la versión de hardware 17 y posteriores, compatible con VMware ESX 7.0 y posteriores.
Configure las interfaces VMXNET3 para admitir más de 8 colas Rx y Tx:
- Abra el archivo de configuración de la máquina virtual (.vmx).
-
Especifique el número de colas Rx y TX configurando los valores
ethernetX.maxTxQueuesyethernetX.maxRxQueues(donde X es el número de NIC virtuales a configurar). El número máximo de colas configuradas no debe ser mayor que el número de vCPU en la máquina virtual.Nota:
Aumentar el número de colas también incrementa la sobrecarga del procesador en el host ESX. Por lo tanto, asegúrese de que haya suficientes recursos de CPU disponibles en el host ESX antes de aumentar las colas. Puede aumentar el número máximo de colas admitidas en escenarios donde el número de colas se identifica como un cuello de botella para el rendimiento. En estas situaciones, recomendamos aumentar el número de colas gradualmente. Por ejemplo, de 8 a 12, luego a 16, luego a 20, y así sucesivamente. Evalúe el rendimiento en cada configuración, en lugar de aumentar directamente al límite máximo.
NetScaler VPX con SR-IOV e interfaces de red de paso de PCI
Para lograr un alto rendimiento para VPX con SR-IOV e interfaces de red de paso de PCI, consulte Configuración recomendada en hosts ESX.
Instancia de NetScaler VPX en la plataforma Linux-KVM
Esta sección contiene detalles de las opciones y configuraciones configurables, y otras sugerencias que le ayudarán a lograr un rendimiento óptimo de la instancia de NetScaler VPX en la plataforma Linux-KVM.
- Configuración de rendimiento para KVM
- NetScaler VPX con interfaces de red PV
- NetScaler VPX con SR-IOV e interfaces de red de paso de PCIe Fortville
Configuración de rendimiento para KVM
Realice los siguientes ajustes en el host KVM:
Busque el dominio NUMA de la NIC mediante el comando lstopo:
Asegúrese de que la memoria para el VPX y la CPU estén ancladas en la misma ubicación. En el siguiente resultado, la NIC de 10G “ens2” está vinculada al dominio NUMA #1.

Asigne la memoria VPX desde el dominio NUMA.
El comando numactl indica el dominio NUMA desde el que se asigna la memoria. En el siguiente resultado, se asignan aproximadamente 10 GB de RAM desde el nodo NUMA #0.

Para cambiar la asignación del nodo NUMA, siga estos pasos.
-
Edite el .xml del VPX en el host.
/etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy--> -
Agregue la siguiente etiqueta:
<numatune> <memory mode="strict" nodeset="1"/> This is the NUMA domain name </numatune> <!--NeedCopy--> -
Apague el VPX.
-
Ejecute el siguiente comando:
virsh define /etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy-->Este comando actualiza la información de configuración de la VM con las asignaciones de nodos NUMA.
-
Encienda el VPX. Luego, compruebe la salida del comando
numactl –hardwareen el host para ver las asignaciones de memoria actualizadas para el VPX.
Ancle las vCPU de VPX a los núcleos físicos.
-
Para ver las asignaciones de vCPU a pCPU de un VPX, escriba el siguiente comando
virsh vcpupin <VPX name> <!--NeedCopy-->
Las vCPU 0-4 están asignadas a los núcleos físicos 8-11.
-
Para ver el uso actual de pCPU, escriba el siguiente comando:
mpstat -P ALL 5 <!--NeedCopy-->
En esta salida, 8 es la CPU de gestión y 9-11 son los motores de paquetes.
-
Para cambiar el anclaje de vCPU a pCPU, hay dos opciones.
-
Cámbielo en tiempo de ejecución después de que el VPX se inicie usando el siguiente comando:
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--> -
Para realizar cambios estáticos en el VPX, edite el archivo
.xmlcomo antes con las siguientes etiquetas:-
Edite el archivo .xml del VPX en el host
/etc/libvirt/qemu/<VPX_name>.xml <!--NeedCopy--> -
Añada la siguiente etiqueta:
<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--> -
Apague el VPX.
-
Actualice la información de configuración de la VM con las asignaciones de nodos NUMA usando el siguiente comando:
virsh define /etc/libvirt/qemu/ <VPX_name>.xml <!--NeedCopy--> -
Encienda el VPX. Luego, compruebe la salida del comando
virsh vcpupin <VPX name>en el host para ver el anclaje de CPU actualizado.
-
-
Eliminar la sobrecarga de interrupciones del host.
-
Detectar VM_EXITS usando el comando
kvm_stat.A nivel del hipervisor, las interrupciones del host se asignan a las mismas pCPU en las que están ancladas las vCPU del VPX. Esto podría provocar que las vCPU del VPX se expulsen periódicamente.
Para encontrar las salidas de VM realizadas por las VM que ejecutan el host, use el comando
kvm_stat.[root@localhost ~]# kvm_stat -1 | grep EXTERNAL kvm_exit(EXTERNAL_INTERRUPT) 1728349 27738 [root@localhost ~]# <!--NeedCopy-->Un valor más alto del orden de 1+M indica un problema.
Si hay una sola VM presente, el valor esperado es de 30 a 100 K. Cualquier valor superior a este puede indicar que hay uno o más vectores de interrupción del host asignados a la misma pCPU.
-
Detectar interrupciones del host y migrar interrupciones del host.
Cuando ejecuta el comando
concatenatepara el archivo «/proc/interrupts», se muestran todas las asignaciones de interrupciones del host. Si una o más IRQ activas se asignan a la misma pCPU, su contador correspondiente se incrementa.Mueva cualquier interrupción que se superponga con las pCPU de su NetScaler VPX a pCPU no utilizadas:
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--> -
Deshabilitar el equilibrio de IRQ.
Deshabilitar el demonio de equilibrio de IRQ, para que no se produzca ninguna reprogramación sobre la marcha.
service irqbalance stop service irqbalance show - To check the status service irqbalance start - Enable if needed <!--NeedCopy-->Asegúrese de ejecutar el comando
kvm_statpara garantizar que no haya muchos contadores.
NetScaler VPX con interfaces de red PV
Puede configurar interfaces de red de paravirtualización (PV), SR-IOV y PCIe passthrough como una implementación de Dos vNIC por pNIC. Para obtener más información, consulte Implementación de dos vNIC por pNIC.
Para un rendimiento óptimo de las interfaces PV (virtio), siga estos pasos:
- Identifique el dominio NUMA al que está vinculado el slot PCIe/NIC.
- La memoria y la vCPU para el VPX deben estar ancladas al mismo dominio NUMA.
- El hilo de Vhost debe estar vinculado a las CPU del mismo dominio NUMA.
Vincule los hilos del host virtual a las CPU correspondientes:
-
Una vez iniciado el tráfico, ejecute el comando
topen el host.
- Identifique la afinidad del proceso del host virtual (denominado
vhost-<pid-of-qemu>). -
Vincule los procesos vHost a los núcleos físicos en el dominio NUMA identificado anteriormente utilizando el siguiente comando:
taskset –pc <core-id> <process-id> <!--NeedCopy-->Ejemplo:
taskset –pc 12 29838 <!--NeedCopy--> -
Los núcleos del procesador correspondientes al dominio NUMA se pueden identificar con el siguiente comando:
[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-->
Vincule el proceso QEMU al núcleo físico correspondiente:
- Identifique los núcleos físicos en los que se está ejecutando el proceso QEMU. Para obtener más información, consulte la salida anterior.
-
Vincule el proceso QEMU a los mismos núcleos físicos a los que vincula las vCPU, utilizando el siguiente comando:
taskset –pc 8-11 29824 <!--NeedCopy-->
NetScaler VPX con SR-IOV e interfaces de red de paso PCIe de Fortville
Para un rendimiento óptimo de las interfaces de red de paso PCIe de SR-IOV y Fortville, siga estos pasos:
- Identifique el dominio NUMA al que está vinculado el slot PCIe/NIC.
- La memoria y la vCPU para el VPX deben estar ancladas al mismo dominio NUMA.
Archivo XML de VPX de ejemplo para la asignación de vCPU y memoria para 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-->
Instancia de NetScaler VPX en Citrix Hypervisors
Esta sección contiene detalles de las opciones y configuraciones configurables, y otras sugerencias que le ayudarán a lograr un rendimiento óptimo de la instancia de NetScaler VPX en Citrix Hypervisors.
- Configuración de rendimiento para Citrix Hypervisors
- NetScaler VPX con interfaces de red SR-IOV
- NetScaler VPX con interfaces paravirtualizadas
Configuración de rendimiento para Citrix Hypervisors
Encuentre el dominio NUMA de la NIC usando el comando “xl”:
xl info -n
<!--NeedCopy-->
Ancle las vCPU del VPX a los núcleos físicos.
xl vcpu-pin <Netsclaer VM Name> <vCPU id> <physical CPU id>
<!--NeedCopy-->
Compruebe la vinculación de las vCPU.
xl vcpu-list
<!--NeedCopy-->
Asigne más de 8 vCPU a las máquinas virtuales de NetScaler.
Para configurar más de 8 vCPU, ejecute los siguientes comandos desde la consola de 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-->
NetScaler VPX con interfaces de red SR-IOV
Para un rendimiento óptimo de las interfaces de red SR-IOV, siga estos pasos:
- Identifique el dominio NUMA al que está vinculado el slot PCIe o la NIC.
- Fije la memoria y la vCPU para el VPX al mismo dominio NUMA.
- Vincule la vCPU de Domain-0 a la CPU restante.
NetScaler VPX con interfaces paravirtualizadas
Para un rendimiento óptimo, se recomiendan configuraciones de dos vNIC por pNIC y una vNIC por pNIC, como en otros entornos PV.
Para lograr un rendimiento óptimo de las interfaces paravirtualizadas (netfront), siga estos pasos:
- Identifique el dominio NUMA al que está vinculado el slot PCIe o la NIC.
- Fije la memoria y la vCPU para el VPX al mismo dominio NUMA.
- Vincule la vCPU de Domain-0 a la CPU restante del mismo dominio NUMA.
- Fije los hilos Rx/Tx del host de la vNIC a las vCPU de Domain-0.
Fije los hilos del host a las vCPU de Domain-0:
- Busque el Xen-ID del VPX utilizando el comando
xl listen el shell del host de Citrix Hypervisor. -
Identifique los hilos del host utilizando el siguiente comando:
ps -ax | grep vif <Xen-ID> <!--NeedCopy-->En el siguiente ejemplo, estos valores indican:
- vif5.0 - Los subprocesos para la primera interfaz asignada a VPX en XenCenter (interfaz de administración).
- vif5.1 - Los subprocesos para la segunda interfaz asignada a VPX y así sucesivamente.

-
Fije los subprocesos a las vCPU de Domain-0 mediante el siguiente comando:
taskset –pc <core-id> <process-id> <!--NeedCopy-->Ejemplo:
taskset -pc 1 29189 <!--NeedCopy-->