Performances de Loopback Linux avec TCP_NODELAY activé

Je suis récemment tombé sur une intéressante TCP problème de performance lors de l'exécution des tests de performance qui a comparé les performances du réseau rapport de bouclage de la performance. Dans mon cas, la performance du réseau a dépassé le bouclage de la performance (1Gig réseau, même sous-réseau). Dans le cas, je m'occupe des latences sont cruciales, afin TCP_NODELAY est activé. La meilleure théorie que nous avons est que de contrôle de congestion TCP qui est maintenant en place les paquets. Nous avons fait une analyse des paquets et nous pouvons certainement voir que les paquets sont organisées, mais la raison n'est pas évidente. Maintenant, les questions...

1) Dans ce cas, et pourquoi, serait de communication de bouclage être plus lent que sur le réseau?

2) Lors de l'envoi aussi rapide que possible, pourquoi ne basculement TCP_NODELAY ont beaucoup plus d'impact sur le débit maximum au cours de bouclage que sur le réseau?

3) Comment pouvons-nous détecter et d'analyser de contrôle de congestion TCP comme une explication possible de la mauvaise performance?

4) quelqu'un at-il d'autres théories sur la raison de ce phénomène? Si oui, n'importe quelle méthode pour prouver la théorie?

Voici quelques exemples de données générées par un simple point-à-point c++ application:

De Transport de la Taille du Message (octets) TCP NoDelay Tampon d'envoi (en octets) de l'Expéditeur de l'Hôte Récepteur Hôte Débit (en octets/s) Taux de Messages (messages/sec) 
TCP 128 Sur 16777216 HostA HostB 118085994 922546 
TCP 128 Off 16777216 HostA HostB 118072006 922437 
TCP 128 Sur 4096 HostA HostB 11097417 86698 
TCP 128 Off 4096 HostA HostB 62441935 487827 
TCP 128 Sur 16777216 HostA HostA 20606417 160987 
TCP 128 Off 16777216 HostA HostA 239580949 1871726 
TCP 128 Sur 4096 HostA HostA 18053364 141041 
TCP 128 Off 4096 HostA HostA 214148304 1673033 
UnixStream 128 - 16777216 HostA HostA 89215454 696995 
UnixDatagram 128 - 16777216 HostA HostA 41275468 322464 
NamedPipe 128 - - HostA HostA 73488749 574130 

Voici quelques pièces plus d'informations utiles:

  • Je ne vois que cette question avec les petits
    messages
  • HostA et HostB les deux ont le même
    kit de quincaillerie (Xeon [email protected], 32 cœurs total/128 Gig Mem/1Gig Nic)
  • OS est RHEL 5.4 noyau 2.6.18-164.2.1.el5)

Merci

source d'informationauteur rns