Optimizaciones del sistema operativo - Amazon Elastic Compute Cloud

Optimizaciones del sistema operativo

Para conseguir el máximo rendimiento de red en instancias 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 en marcha 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 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 la CPU de RSS

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 ENI 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, le recomendamos utilizar el cmdlet Set-NetAdapterRSS de PowerShell (disponible a partir de Windows Server 2012 y versiones posteriores), que excluye manualmente el procesador de arranque (procesador lógico 0 y 1 cuando la tecnología Hyper-Threading está habilitada) desde la configuración RSS para todas las ENI, con el fin de evitar la contención con diversos componentes del sistema.

Windows es compatible con la tecnología Hyper-Threading y garantizará que las colas de RSS de un NIC único 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 entre NIC, minimice los rangos de solapamiento o reduzca el número de procesadores lógicos en los rangos de ENI en función de la carga de trabajo prevista del ENI (en otras palabras, un ENI de red de administrador 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 ENI en una instancia de 72 vCPU con dos nodos NUMA con tecnología Hyper-Threading habilitada, los comandos siguientes 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 CPU virtuales, debe volver a evaluar la configuración de RSS para cada ENI habilitado. 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 le recomendamos revisar la configuración de afinidad de subprocesos de E/S junto con la configuración de RSS de ENI para minimizar la contención de E/S y red para las mismas CPU. Consulte affinity mask Server Configuration Option.