Optimizar el rendimiento de la red en instancias de Windows de EC2 - Amazon Elastic Compute Cloud

Optimizar el rendimiento de la red en instancias de Windows de EC2

Para conseguir el máximo rendimiento de red en instancias de Windows con redes mejoradas, es posible que necesite modificar la configuración predeterminada del sistema operativo. Recomendamos los siguientes cambios de configuración para aplicaciones que requieren un alto rendimiento de red. Otras optimizaciones (como activar la descarga de suma de comprobación y habilitar RSS, por ejemplo) ya están configuradas en las AMI oficiales de Windows.

nota

La descarga de la chimenea TCP debe deshabilitarse en la mayoría de los casos de uso, y no está disponible a partir de Windows Server 2016.

Además de estas optimizaciones de sistemas operativos, debe también tener en cuenta la unidad de transmisión máxima (MTU) de su tráfico de red, y ajustarla según su carga de trabajo y arquitectura de red. Para obtener más información, consulte Unidad de transmisión máxima (MTU) de red de la instancia de EC2.

AWS suele medir latencias medias de ida y vuelta entre las instancias iniciadas en un grupo de ubicación en clúster de 50 us y latencias de cola de 200 us en el percentil 99,9. Si sus aplicaciones necesitan latencias bajas de forma continuada, le recomendamos que utilice la última versión de los controladores ENA en instancias basadas en Nitro de rendimiento fijo.

Configurar la afinidad de CPU de escalado del lado de recepción

El escalado lateral de recepción (RSS, por sus siglas en inglés) se utiliza para distribuir la carga de la CPU de tráfico de red en varios procesadores. De forma predeterminada, las AMI de Windows oficiales de Amazon se configuran con el RSS habilitado. Las interfaces de red elásticas de ENA proporcionan hasta ocho colas de RSS. Al definir la afinidad de la CPU para las colas de RSS, así como para otros procesos del sistema, es posible distribuir la carga de la CPU en sistemas de varios núcleos, permitiendo que se procese más tráfico de red. En tipos de instancia con más de 16 vCPU, se recomienda utilizar el cmdlet de PowerShell Set-NetAdapterRSS, que excluye manualmente el procesador de arranque (procesador lógico 0 y 1 cuando hyper-threading está habilitada) desde la configuración RSS para todas las interfaces de red elásticas, con el fin de evitar la contención con diversos componentes del sistema.

Windows es compatible con hyper-threading y garantiza que las colas de RSS de una tarjeta de interfaz de red (NIC) única se coloque siempre en núcleos físicos distintos. Por lo tanto, a menos que esté desactivada la tecnología Hyper-Threading, para evitar completamente un conflicto con otras NIC, propague la configuración de RSS de cada NIC entre una gama de 16 procesadores lógicos. El cmdlet Set-NetAdapterRss le permite definir el rango por NIC de procesadores lógicos válidos definiendo los valores de BaseProcessorGroup, BaseProcessorNumber, MaxProcessingGroup, MaxProcessorNumber y NumaNode (opcional). Si no hay suficientes núcleos físicos para eliminar por completo la contención dentro del NIC, minimice los rangos de solapamiento o reduzca el número de procesadores lógicos en los rangos de interfaz de red elástica en función de la carga de trabajo de la interfaz (en otras palabras, una interfaz de red administrativa de bajo volumen podría no necesitar tantas colas de RSS asignadas). Además, como se ha indicado con anterioridad, diversos componentes deben ejecutarse en la CPU 0 y, por tanto, recomendamos excluirla de todas las configuraciones de RSS cuando se disponga de suficientes vCPU.

Por ejemplo, cuando hay tres interfaces de red elásticas en una instancia de 72 vCPU con dos nodos NUMA con hyper-threading habilitada, los siguientes comandos propagan la carga de red entre las dos CPU sin solapamiento e impiden el uso del núcleo 0 por completo.

Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14 Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30

Tenga en cuenta que esta configuración es persistente para todos los adaptadores de red. Si una instancia se redimensiona a una con distinto número de vCPU, debe volver a evaluar la configuración de RSS para cada interfaz de red elástica habilitada. La documentación completa de Microsoft para el cmdlet Set-NetAdapterRss se puede encontrar en https://docs.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss.

Nota especial para las cargas de trabajo de SQL: también se recomienda revisar la configuración de afinidad de subprocesos de E/S junto con la configuración de RSS de interfaz de red elástica para minimizar la contención de E/S y de red para las mismas CPU. Consulte affinity mask Server Configuration Option.