Auteur Sujet: Impacts du 32bits ou 64bits sur les performances TCP/IP  (Lu 5554 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 217
    • Twitter LaFibre.info
Impacts du 32bits ou 64bits sur les performances TCP/IP
« le: 27 avril 2013 à 09:04:05 »
Impacts d'une installation d'un serveur en 32bits ou 64bits sur les performances TCP/IP

J'ai réalisé quelques tests avant de mettre en prod le noyau Linux 3.8 sur les serveurs que je gère.

J'ai réalisé un comparatif sur plusieurs type d'utilisation classique et j'ai également fait des tests pour voir le comportement en situations extrêmes : 90ms de latence de bout en bout (simulée avec NetEm sur le client) et lien 1 Gb/s.
J'ai installé plusieurs Ubuntu serveur sur la même machine (voir ne bas pour les détails de la configuration) et j'ai fais mes tests.
Le noyau 3.2 a été installé en 32bits par erreur et quand j'ai vu les résultats j'ai fait d'autres tests avec un noyau 3.2 64bits.
J'ai ensuite modifié un seul paramètre sur le Linux 3.2 : le wmem (tampon d'émission maximum). On voit bien que c'est lui qui bridait les débits.

Voici les résultats :

vivien

  • Administrateur
  • *
  • Messages: 47 217
    • Twitter LaFibre.info
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #1 le: 27 avril 2013 à 09:12:33 »
Les tests ont été fait sur le même serveur, un Dell Power Edge R210, 4Go ram et une carte réseau intégrée Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet.
La RAM est importante car les paramètres TCP/IP sont en fonction de la RAM disponible et de l'architecture (32 bits ou 64bits)
La carte réseau a aussi son importance, car les opérations de TCP/IP sont en partie déchargées par le système d'exploitation sur la carte réseau.
Le disque dur (un disque SATA de base) a peu d'importance car les fichiers après leur première lecture sont dans le cache ram.
Le processeur a également peu d’importance, c'est un Xeon X3450 @2,67GHz (4 cœurs)
Coté logiciel, j'ai utilisé le serveur web Apache2
La distribution installée est Ubuntu Server avec toutes les mises à jour.
- Linux 3.8 => Ubuntu Server 13.04
- Linux 3.5 => Ubuntu Server 12.10
- Linux 3.2 => Ubuntu Server 12.04 LTS
- Linux 2.6.24 => Ubuntu Server 8.04 LTS


Coté client, j'ai fais mes téléchargements avec wget -O /dev/null url. Le plus de /dev/null : je ne suis pas limité par la vitesse d'écriture du disque dur et on va sans problème a 1 Gb/s si je ne rajoute pas de latence supplèmentaire.
La configuration du client est un vieux serveur HP : Pentium D @2,8Ghz (2 cœurs) avec 1 Go de RAM sous Ubuntu Server 12.10 64bits (noyau Linux 3.5). La carte réseau est une Broadcom Corporation NetXtreme BCM5714 Gigabit Ethernet.

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #2 le: 27 avril 2013 à 09:45:40 »
Quels paramètres avais-tu activé sur la carte ? (ethtool -k)

vivien

  • Administrateur
  • *
  • Messages: 47 217
    • Twitter LaFibre.info
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #3 le: 27 avril 2013 à 10:06:34 »
J'ai laissé les paramètres par défaut :

Linux 3.8 et 3.5 :

# ethtool -k eth0
Features for eth0:
rx-checksumming: on
tx-checksumming: on
   tx-checksum-ipv4: on
   tx-checksum-ip-generic: off [fixed]
   tx-checksum-ipv6: on
   tx-checksum-fcoe-crc: off [fixed]
   tx-checksum-sctp: off [fixed]
scatter-gather: on
   tx-scatter-gather: on
   tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
   tx-tcp-segmentation: on
   tx-tcp-ecn-segmentation: on
   tx-tcp6-segmentation: on
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off [fixed]
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: on
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]


Linux 3.2 (32bits et 64bits) :
# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on


Linux 2.6.24 :
# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation offload: off
generic segmentation offload: off

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #4 le: 27 avril 2013 à 10:11:16 »
Rien à redire, c'est OK, gro on et lro off.

Sur la charge CPU, t'as vu des écarts ?

vivien

  • Administrateur
  • *
  • Messages: 47 217
    • Twitter LaFibre.info
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #5 le: 27 avril 2013 à 10:28:21 »
J'ai pas regardé le CPU, c'est vrai que c'est intéressant pour voir le déchargement des opérations TCP/IP vers la carte réseau. Je voulais surtout voir si il y avait des différences de montée en débit. Le noyau 2.6.24 est systématiquement en retrait, mais cela reste un petit écart de performance (le protocole de congestion TCP n'est pas le même).

LRO (large-receive-offload) pourquoi il faut le mettre à off ?

J'ai cherché sans sucés de la documentation sur toutes ces options.

Dans le post TCP offload engine - Segmentation réalisée par la carte réseau, j'ai réalisé un tableau avec les options activées en fonction de la carte réseau utilisée. GRO (generic-receive-offload) est toujours on sauf sur les carte vraiment bas de gamme (VIA Technologies, Inc. VT6102 [Rhine-II] ou Broadcom Corporation BCM4401-B0 100Base-TX).

Dans certains cas (TCP ACK Suppression activé sur des box Docsis, ou certains ONT Orange), j'ai noté une baisse importante de performance en désactivant scatter-gather et un gain de performance en désactivant tcp-segmentation-offload et generic-segmentation-offload.

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #6 le: 27 avril 2013 à 10:35:27 »
LRO ne fonctionne qu'avec TCP et a l'inconvénient d'interférer avec le noyau. GRO (Generic Receive Offload) a justement été conçu pour pallier à ces deux problèmes, TCP et UDP sont désormais traités de la meme façon.

D'ailleurs, à ce que je vois, en noyau 3.5 et 3.8 il n'est plus possible d'activer LRO (valeur à off, fixed). Dans les précédentes versions du noyau, LRO est soit sans effet, soit ça plante les sessions TCP. LRO ne doit par exemple jamais etre activé si on utilise un bridge (assez piégeux, un ping fonctionnera mais les sessions TCP feront pleins d'erreur). Avec GRO, pas de problèmes.

Sur du iSCSI en 10Gb/s LAN, l'impact de GRO est conséquent, tant sur les débits que sur la charge CPU.

Autant en LAN, jamais vu de différences avec les autres options, autant en WAN, faut voir.

vivien

  • Administrateur
  • *
  • Messages: 47 217
    • Twitter LaFibre.info
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #7 le: 27 avril 2013 à 14:52:54 »
Comme tu peux le voir, les autres options ont aussi des forts impacts sur le WAN (importantes dès que le ping bout en bout dépasse les 10ms) :

Désactiver ce qui fait chuter le débit avec "TCP ACK Supression" activé sur une box : ethtool -K eth1 tso off gso off
tcp-segmentation-offload et generic-segmentation-offload chacun séparèment ou activé tous les deux font chuter fortement le débit avec TCP ACK Supression.
Au contraire scatter-gather permet de gagner du débit avec "TCP ACK Supression" activé.
- TOE entièrement activé (défaut) : 3 min 13 secondes pour télécharger le fichier test
- TOE entièrement dés-activé : 56 secondes pour télécharger le fichier test
- Tout désactivé sauf tx-checksumming et scatter-gather : 33 secondes pour télécharger le fichier test
- Seul tcp-segmentation-offload et generic-segmentation-offload désactivé : 33 secondes pour télécharger le fichier test

A noter qu'avec "TCP ACK Supression" désactivé ou qui n'existe pas (cas des majorités des box) on a :
- TOE entièrement activé (défaut) : 21 secondes pour télécharger le fichier test
- TOE entièrement dés-activé : 49 secondes pour télécharger le fichier test
- Tout désactivé sauf tx-checksumming et scatter-gather : 32 secondes pour télécharger le fichier test
- Seul tcp-segmentation-offload et generic-segmentation-offload désactivé : 32 secondes pour télécharger le fichier test

Si tu trouves de la documentation sur ces options, je suis preneur.

Les différences peuvent être assez impressionnantes (débit variant de 1 à 10 pour des ping important). A ce que j'ai compris, il est difficile d'avoir un système efficace avec tous les types de réseaux, notamment la 3G/4G, qui perdent des paquets sans que cela signifie nécessairement qu'il y a une congestion. Normalement le protocole de congestion Reno n'est pas bon pour les connexions qui passent par onde radio, mais je n'ai pas vérifié.

corrector

  • Invité
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #8 le: 27 avril 2013 à 17:02:56 »
Pourquoi les réseaux 3G/4G ne retransmettent pas les paquets perdus?

Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 6 003
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #9 le: 27 avril 2013 à 17:27:39 »
Pourquoi les réseaux 3G/4G ne retransmettent pas les paquets perdus?
Si, il y a bien un mécanisme de retransmission, mais jusqu'à un certain point seulement. Il est quand même assez fréquent, en déplacement, avec un téléphone, de perdre temporairement la connexion radio (une fraction de seconde), à cause d'un obstacle, d'une réception difficile. Quand on entend mal son correspondant sur un téléphone portable, on est exactement dans cette situation. Le réseau ne tente de retransmettre les paquets que si les paquets ne sont pas trop anciens, sinon, ils sont droppés tout simplement, et c'est normal.

Leon.

corrector

  • Invité
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #10 le: 27 avril 2013 à 17:35:06 »
Mais là tu parles de trous de quelques dizaines de ms au moins!

Je ne pensais pas que vivien parlait de ça!

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 304
  • Chelles (77)
    • L'antre de la bête
Impacts du 32bits ou 64bits sur les performances TCP/IP
« Réponse #11 le: 14 mai 2013 à 23:23:43 »
Pour satisfaire ma trop grande curiosité, est-il possible d'essayer avec nginx ?