2009-08-20 6 views
2

Je suis en train de jouer avec la programmation réseau Linux et j'ai écrit une petite application serveur client qui rebondit un petit message entre un processus client et un processus serveur et mesure le temps aller-retour. Constamment, je vois environ 80ms pour le tour localhost (c'est après la configuration de la connexion). Cela semble extraordinairement élevé. La même machine qui exécute le même code sera nettement inférieure à 1ms sur Vista.Haute latence pour l'application réseau Linux

Des idées sur d'où cette différence pourrait provenir? Le code est assez simple, accepter à une extrémité, se connecter sur l'autre et ensuite envoyer/recevoir via le socket pair.

Je ne fais que commencer sur Linux, excuses si c'est une question idiote.

+0

Puis-je voir le code? – Havenard

+0

Une mise à jour sur le problème/la solution? – TheJacobTaylor

+0

Oui. Après avoir désactivé NAGLE, je reçois ~ 40us sous Linux. Duh. – samwise

Répondre

6

Si vous utilisez des sockets TCP, vous pouvez vouloir disable the Nagle algorithm (en définissant l'option de socket TCP_NODELAY).

+0

C'est presque certainement le problème. TCP attend un peu de temps pour voir si vous allez lui donner plus de données avant d'envoyer le paquet (si vous le faisiez, il pourrait le regrouper en un seul paquet). – caf