Pregunta

¿Por qué las múltiples conexiones desde el mismo host lograr un mejor rendimiento que las conexiones múltiples de diferentes hosts?

Sospecho que es algo (Linux) relacionados con el núcleo sino una confirmación sería una gran ayuda.

Más detalles tengo 1 proceso receptor, lo llamaremos R. Se acepta conexiones entrantes y recibe datos usando select ().

Tengo 3 procesos emisores S1, S2, S3. Se conectan a R y enviar datos a una tasa fija, es decir 200Mbit por segundo cada una.

Si S1, S2 y S3 están en la misma máquina, consigo mejores resultados que los que cada uno de ellos en una máquina diferente. (R es en ambos casos en alguna otra máquina)

Ejemplo: R en host0, S1, S2, S3 en host2, R recibe en 600Mbit / s

R en host0, S1 en host1, S2 en host2, S3 en host3, R recibe en 480Mbit / s

Esto parece contrario a la intuición para mí, esperaba lo contrario, ya que en el segundo caso, los remitentes no tienen que compartir la tarjeta de red y el procesador (No es que esperar procesador o tarjeta de red a ser cuellos de botella ...)

[Los anfitriones anteriormente son nodos de un clúster Linux con un conmutador Gigabit dúplex completo dedicado. Ellos se están ejecutando 2.6.24-24-generic (última Ubuntu supongo)]

¿Fue útil?

Solución

Esto es probablemente porque cuando los remitentes están todos en una sola máquina, los paquetes salientes están muy bien en cola y se envían de una en una sola vez (por el solo hecho de que todos van a través de una tarjeta de red).

Mientras que en el caso-varios remitentes, dos máquinas se suelen enviar paquetes al mismo tiempo, y es entonces hasta el conmutador de red para ponerlos en cola. Esto se manifestará con el TCP emisor como una latencia de nerviosismo -. A veces un paquete cambiará directamente a través del receptor, otras veces tendrán que esperar a que uno o dos paquetes de los otros emisores dentro de las colas de conmutación

espero que la fluctuación de fase de latencia en su propia sería suficiente para derribar que gran parte de su ancho de banda - recordar que para sostener 200Mbps con ventanas TCP estándar, se necesita un tiempo de ida y vuelta mínimo de 2,6 ms, lo cual es bastante ajustado .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top