programming network guide beej network-programming

network-programming - beej''s guide to network programming pdf



localhost vs LAN: diferencia de velocidad? (7)

Actualmente estoy en proceso de creación de perfiles de rendimiento. Tenemos una aplicación cliente / servidor básica. ¿Sería la velocidad de transferencia de TCP diferente si ejecutara cliente / servidor en la misma máquina (localhost) frente a dos computadoras en una LAN?


¡La velocidad de transferencia TCP será! porque si lo ejecutó en la misma computadora, reenviará paquetes localmente sin siquiera tocar la LAN y el adaptador de red.

Pero la velocidad general del cliente + servidor puede ser mejor en diferentes máquinas, especialmente si no se comunica con el servidor con demasiada frecuencia.


Al usar localhost, los recursos locales son más propensos a ser el cuello de botella debido a la memoria, disco, CPU, etc. Cuando se utilizan dos computadoras, es más probable que la red sea el cuello de botella debido a la latencia, ancho de banda, rendimiento, pérdida de paquetes, etc. .

Depende de qué hace su aplicación y cómo utiliza la red, el cliente y el servidor.


Los tiempos de transferencia casi con seguridad serían más rápidos si el cliente y el servidor estuvieran en la misma máquina. Es posible que esto no afecte realmente al rendimiento de su programa como un todo, dependiendo de los otros recursos consumidos por el cliente y el servidor.


No sé si será mensurable (eso también depende de la velocidad de su LAN) pero desde un punto de vista lógico, por supuesto que hay una diferencia. Localhost siempre será el más rápido ya que los datos no se enviarán a través de otro medio (como aire o cable de cobre).

Pero dependiendo de lo que haga su aplicación, esto podría o no importar.


Realmente depende de lo que hace tu aplicación ...

Como ejemplo: si transfiere archivos de 10GB de cliente a servidor, entonces sí, hará la diferencia.


Sí, definitivamente, la latencia de enviarlo a través de la red desaceleraría el programa. El rendimiento no lo hará, pero si está esperando respuestas antes de enviar datos, esto se acumula debido a la latencia adicional.


Acabo de abordar este tema en un proyecto en el trabajo. El uso de UDP con localhost es al menos un orden de magnitud más rápido que a través de una conexión de red (tal vez dos órdenes de magnitud), y creo que con localhost no hay un límite máximo de MTU de 1500 como normalmente existe para los puertos de red.

Una sospecha no confirmada es que los puertos de red incorporados en las PC no tienen la misma calidad, por lo que incluso si dicen ser gigabit, es posible que no puedas ir tan rápido. Pero también puede estar haciendo muchas llamadas al sistema de Windows (una llamada al sistema operativo por paquete) puede ser una sobrecarga significativa. Con TCP, puedo entregarle al sistema operativo una gran cantidad de datos para escribir en una sola llamada. Con UDP tengo que entregarle un paquete a la vez, limitado por el tamaño de MTU, lo que resulta en un número mucho mayor de llamadas al sistema operativo. Pero aún no confirmado.

No he probado Linux todavía.