La latencia entre 2 hosts Linux es de aproximadamente .23ms. Están conectados por un interruptor. Ping y Wireshark confirman el número de latencia. Pero no tengo ninguna visibilidad de lo que está causando esta latencia. ¿Cómo puedo saber si la latencia se debe a NIC en el host A o B o el conmutador o los cables?
ACTUALIZACIÓN: La latencia de .23 ms es mala para mi aplicación existente, que envía mensajes a una frecuencia muy alta y estoy tratando de ver si puede reducirse a .1ms
Respuestas:
Genéricamente, puede usar algunos de los conmutadores avanzados a la utilidad iperf para obtener una vista del rendimiento de la red entre sistemas, específicamente latencia y fluctuación de fase ...
¿Es este un flujo de mensajes basado en UDP o TCP?
Comenté anteriormente sobre la necesidad de más información sobre su configuración. Si se trata de una aplicación de mensajería de baja latencia, hay todo un mundo de técnicas de optimización y optimización que abarcan ajustes de hardware, controladores y SO. Pero realmente, necesitamos más información.
Editar:
Bien, entonces esto es mensajería TCP. ¿Has modificado algún
/etc/sysctl.conf
parámetro? ¿Cómo son sus buffers de envío / recepción? El uso de un kernel en tiempo real por sí solo no servirá de mucho, pero si te mueves hasta el punto de vincular las interrupciones a las CPU, cambiar la prioridad en tiempo real de la aplicación de mensajería (chrt
) y posiblemente modificar eltuned-adm
perfil del sistema puede ayudar ...Esto suena como un sistema EL6 genérico, por lo que una manera fácil de establecer una línea base de ajuste de rendimiento implica cambiar el perfil de rendimiento del sistema a otro disponible dentro del marco ajustado . Luego construye desde allí.
En tu caso:
Una matriz rápida que muestra las diferencias:
¿Puedes contarnos sobre el hardware? Tipos de CPU, NIC, memoria?
Por lo tanto, puede ser interesante probar su enlace ... Pruebe esta prueba de iperf ...
En un sistema, inicie un oyente UDP iperf. Por otro lado, abra una conexión con el primero ... Una prueba rápida de calidad de línea.
En mi caso, baja inestabilidad y bajo tiempo de ping:
Verificaría el hardware y las interfaces en busca de errores. Si lo desea, elimine el cambio entre sistemas y vea cómo se ve una conexión directa. No desea un alto jitter (varianza), así que verifíquelo.
Pero, sinceramente, incluso con los tiempos de ping que obtiene en su configuración actual, eso no debería ser suficiente para matar su aplicación. Seguiría el camino de ajustar sus buffers de envío / recepción. Ver:
net.core.rmem_max
,net.core.wmem_max
y sus valores por defecto ...Algo como lo siguiente en
/etc/sysctl.conf
(sintonizar al gusto):fuente
tuned-adm
perfil.