8
votes

Localhost vs LAN: Différence de vitesse?

Je suis actuellement en cours de profilage de la performance. Nous avons une application client / serveur de base. La vitesse de transfert de TCP serait-elle différente si je répondais client / serveur sur la même machine (localhost) vs sur deux ordinateurs sur un réseau local?


0 commentaires

7 Réponses :


-1
votes

Cela dépend vraiment de ce que votre application fait ....

Par exemple: Si elle transfère 10 Go de fichiers du client au serveur, alors oui, cela fera une différence.


0 commentaires

2
votes

Oui définitivement, la latence de l'envoyer à travers le réseau ralentirait le programme. Le débit ne serait que si vous attendez des réponses avant d'envoyer des données, cela s'accumule à cause de la latence supplémentaire.


6 commentaires

Pour localhost, je reçois des moments de ping de 0,024 ms, pour faire de mon routeur, j'ai des horaires de 0.339ms


Lndcobra, c'est une bonne réponse. "Si vous attendez des réponses" ... Cela se produit lorsque vous parlez à quelqu'un sur Skype. Toute la conversation ralentit en raison de quelques ms de latence.


Oui, si vous pensez que la différence entre 0,024 et 0,339 est massif, selon ces horaires localhost est d'environ 15 fois plus rapide que le réseau local.


Cette réponse est vraiment fausse: en utilisant localhost, les transferts vont et revenons aux couches de noyau du système d'exploitation. Lorsque vous utilisez de gros transferts réseau à l'aide de la localHost, vous utilisez de nombreux appels d'envoi et de réception des appels système et de contexte (plus que d'envoyer sur le réseau) et de l'exécution globale, l'opération est enfin plus lente que de rendre les mêmes transferts sur un réseau local. Ensuite, certains paramètres des noyaux de la pile de réseau peuvent améliorer ou diminuer les performances, en fonction de la manière dont vous utilisez le réseau.


Je ne vois pas encore un endroit où réseau est plus rapide que localhost pour "Basic" Client / Server. Maintenant, si vous êtes dans le 1% où vous consommez toutes les ressources sur une machine, la distribuez-la augmentera effectivement la vitesse. Mais je ne pense pas que c'est ce que l'OP envisageait de ... Au bout de 15 ans sur le terrain et travaille divers endroits qui créent de nombreuses applications serveur / client (nous ne parlons pas de centre de données Azur, ni de quelque sorte de 100 machines-agriculteurs). Mais une infrastructure relativement simple. Si le service est très bavard, vous remarquez la différence.


2 applications, envoi de 1 message (disons 5 Ko) à l'autre Via localhost sera presque certainement plus rapide que l'envoi de LAN.



-1
votes

Je ne sais pas si c'est mesurable (cela dépend également de la vitesse de votre réseau local), mais d'un point de vue logique, bien sûr, il y a une différence. Localhost sera toujours le plus rapide que les données ne soient pas envoyées à travers un autre milieu (comme fil d'air ou de cuivre).

Mais en fonction de votre application, cela pourrait ou pourrait ne pas avoir d'importance.


0 commentaires

7
votes

La vitesse de transfert TCP sera! Parce que si vous le faisiez sur le même ordinateur, il transmettra des paquets localement sans même toucher la LAN et l'adaptateur réseau.

mais la vitesse globale du client + serveur peut être meilleure sur différentes machines, surtout si vous ne communiquez pas trop souvent avec le serveur trop souvent.


1 commentaires

@Andrey: Ce n'est pas nécessairement vrai. Les connexions locales sont toujours passées à travers l'adaptateur à l'aide du bouclage si l'application dicte qu'il utilise la couche de réseau pour les transferts.



3
votes

Lorsque vous utilisez Localhost, les ressources locales sont plus susceptibles d'être le goulot d'étranglement de la performance en raison de la mémoire, du disque, de la CPU, etc. Lors de l'utilisation de deux ordinateurs, c'est plus probable que le réseau sera le goulot d'étranglement en raison de la latence, de la bande passante, du débit, du paquet perte, etc.

Cela dépend de votre application et de la manière dont il utilise le réseau, le client et le serveur.


0 commentaires

-1
votes

Les temps de transfert seraient presque certainement plus rapides si le client et le serveur étaient sur la même machine. Cela peut ne pas comporter réellement la performance de votre programme dans son ensemble en fonction des autres ressources consommées par le client et le serveur.


0 commentaires

2
votes

Je viens de frapper cette question sur un projet au travail. L'utilisation de UDP avec localhost est au moins un ordre de grandeur plus rapide que sur une connexion réseau (peut-être deux ordres de grandeur), et je crois que avec localhost, il n'y a pas de plafond MTU de 1500, comme cela n'existe normalement pas pour les ports réseau.

Un soupçon non confirmé est que les ports réseau intégrés sur PC ne sont pas tous de la même qualité, alors même s'ils prétendent être gigabit, vous ne pourrez peut-être pas vraiment y aller rapidement. Mais cela peut également faire de nombreux appels de système Windows (un appel d'un système d'exploitation par paquet) peut être une surcharge importante. Avec TCP, je peux remettre le système d'exploitation un gros morceau de données à écrire dans un seul appel. Avec UDP, je dois remettre un paquet à la fois, limité par la taille du MTU, ce qui entraîne un nombre beaucoup plus important d'appels d'exploitation. Mais non confirmé comme ça.

n'ai pas encore essayé Linux.


0 commentaires