Saltar al contenido

Configuración de TCP de baja latencia en Ubuntu

Solución:

Solución 1:

Honestamente, no usaría Ubuntu para esto … pero hay opciones que se pueden aplicar a cualquier variante de Linux.

Querrá aumentar sus búferes de pila de red:

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

Si la aplicación está escribiendo en el disco, tal vez sea necesario un cambio de programador / elevador (por ejemplo, el deadline ascensor).

En el nivel del servidor, puede modificar el gobernador de la CPU y la administración de la frecuencia de la energía y la CPU (Estados P, Estados C).

En el nivel del sistema operativo, puede cambiar la prioridad en tiempo real de su aplicación (chrt), optimizando para reducir las interrupciones, fijándolo a una CPU o grupo de CPU (taskset) y detener cualquier servicio o demonio innecesario.

También puede ver algunas sugerencias en: Cómo solucionar problemas de latencia entre 2 hosts Linux

Es difícil ser más específico sin conocer el hardware o el equipo de red involucrado.

Solucion 2:

Si va por la ruta del alto rendimiento, por lo general, querrá ejecutar la menor cantidad posible de otros procesos (programados), ya que interferirán con su aplicación.

Linux, al igual que los sistemas operativos UNIX clásicos, está diseñado para ejecutar múltiples aplicaciones al mismo tiempo de una manera justa e intenta evitar la escasez de recursos y usted apuntará a lo contrario, privará a todo lo demás excepto a su aplicación. Los pasos simples a nivel del sistema operativo son cambiar el nivel agradable y la prioridad en tiempo real de su aplicación, cambiar el programador o optar por un kernel en tiempo real.

Por lo general, TCP / IP se ajusta para evitar caídas de conexión y hacer un uso eficiente del ancho de banda disponible. Para obtener la latencia más baja posible de un enlace muy rápido, en lugar de obtener el mayor ancho de banda posible de una conexión donde algunos enlaces intermedios están más restringidos, ajustará el ajuste de la pila de red.

 sysctl -a 

le mostrará una gran cantidad de configuraciones de kernel que puede ajustar. La configuración depende de si está utilizando o no IPv4 o IPv6 y qué es exactamente lo que ya hace en su aplicación, pero puede ser de interés:

  • net.ipv4.tcp_window_scaling=1 RFC 1323: compatibilidad con tamaños de ventana IPV4 TCP superiores a 64K; generalmente se necesita en redes de gran ancho de banda
  • net.ipv4.tcp_reordering=3 La cantidad máxima de veces que se puede reordenar un paquete IPV4 en un flujo de paquetes TCP sin que TCP suponga la pérdida de paquetes y entre en un inicio lento.
  • net.ipv4.tcp_low_latency=1 destinado a dar preferencia a una baja latencia sobre un mayor rendimiento; ajuste = 1 deshabilita el procesamiento de precola de tcp IPV4
  • net.ipv4.tcp_sack=0 la configuración en 1 habilita el reconocimiento selectivo para IPV4, que requiere habilitar tcp_timestamps y agrega algunos paquetes de sobrecarga, que no necesita si no experimenta pérdida de paquetes
  • net.ipv4.tcp_timestamps=0 Solo se aconseja en los casos en que se necesite saco.
  • net.ipv4.tcp_fastopen=1 Habilite para enviar datos en el paquete SYN de apertura.

La mayoría, si no todos, están mejor documentados en el código fuente del kernel.

Por supuesto, puede codificar sockets TCP sin procesar y omitir en gran medida la pila TCP / IP del kernel por completo.

A menudo, los sistemas altamente optimizados se ejecutan en una red confiable y tendrán sus firewalls locales (iptables) deshabilitados.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *