Wagon, Web trAffic GeneraOr and beNchmark
utilisation, installation, petit manuel du debutant...








Situation, distinction client/serveur.

Lorsque l'on parle de GigabitEthernet, il faut prendre des gants quant a la mise en place et au deployement d'une infrastructure Giga.

En effet, on ne passe pas de 100Mbits/s a 1Gb/s de la meme maniere que de 10Mb/s a 100Mb/s.

Des limitations d'OS, d'hardware, de TCP/IP surviennent rapidement et il faut les prendre en compte si on ne veut pas stagner a des debits peu sympathique...

Dans le cadre de VTHD nous avons deploye une petite batterie de tests afin de justement tenter de lister les parametres limitatifs pour cette technologie.

Le but est de voir si Wagon pourra tourner correctement en environnement Giga. Il  s'est avere rapidement que Wagon, dans la topologie VTHD, ne donnerait pas des debits superieurs a quelques centaines de Mb/s...donc aucun probleme a priori.

Nous avons quand meme continue quelques tests, curiosite oblige...

Voici la config des machines testees :

5 PIII800Mhz , carte mere Asus PIIIBF, 256 Mo SDRAM, carte 10/100. (clients)
2 PIII800Mhz , carte mere Asus PIIIBF (PCI 32), 256 Mo SDRAM, carte 10/100 + carte Giga 3Com 3C985SX. (serveurs)

Toutes ces machines sont reliees via un catalyst (Cisco 6500) . Les 2 cartes 10/100 des serveurs sont connectes sur le reseau experimental. Noyau Linux 2.2.14
Il existe exactement la meme topologie a Rocquencourt, joignable depuis Sophia via VTHD.

Voici presentes ici les tests les plus representatifs :

-> Carte 3Com 3C985SX
 

1) tests en Ttcp
2) tests en Netperf

-> Carte Pro Intel 1000 (cuivre et FO)

les tests ont ete effectues par le Semir, voici leurs resultats

CONCLUSION



Carte 3Com / Tests en Ttcp

Voici les tests effectues sur les machines destinees a heberger Wagon.

* wsopi98a -> wsopi99a; (G)
 
Tests resultats bruts
UDP 505 Mb/s
TCP "classique" 110Mb/s
TCP buffer socket 256k 238Mb/s
TCP buffer socket 256k + echo 262144 > /proc/sys/net/core/rmem_max et wmem_max 388Mb/s
TCP buffer socket 512k  248Mb/s
TCP buffer socket 512k + echo 524288 > /proc/sys/net/core/rmem_max et wmem_max 418Mb/s
TCP buffer socket 1G (!) 470Mb/s

    * Plusieur flux entre wsopi98a et wsopi99a (G)
 
2 flux TCP (nbuf = 100k) 210Mb/s
5 flux TCP (nbuf = 10k) 100Mb/s

    *Plusieurs clients 10/100 -> wsopi98a (G)
 
5 clients 10/100 -> wsopi98a (G) UDP 91,4Mb/s
5 clients 10/100 -> wsopi98a (G) TCP (classique, buffer socket = 256 ou 512, memes resultats) 82Mb/s

Resultats 10/100 tres bon.

* Sophia -> Rocquencourt (G) wsopi98a -> wstli96a
 
UDP 496Mb/s
TCP "classique" 21Mb/s
TCP buffer socket = 256k 64,8Mb/s
TCP buffer socket = 512k 81,7Mb/s

* Sophia -> Rocquencourt (10/100) wsopi01a -> wstli06a
 
UDP 91,5Mb/s
TCP 21Mb/s



Carte 3Com / Tests en Netperf

Netperf est un outil de benchmark, qui peut etre utilise pour mesurer differents aspects des performances reseaux. Il reste un outil assez simple.

Il sert surtout pour des tests de performances de transfert brut (stream ou stream unidirectionnel), et fonctionne sur un modele client/server.

Voici un petit guide tres rapide sur Netperf :
 

netperf -l durée -H hôte_serveur -t [TCP/UDP]_STREAM - m taille_paquets -s taille_buf_local -S taille_buf_dist

Deux exemples de scripts simples:

Tests pour UDP

#! /bin/sh
duree=120
for size in 10 100 300 500 700 900 1100 1300 1400
do
rep=`/usr/local/sys/bin/netperf -P -v -l $duree -H $1 -t UDP_STREAM -- -m
$siz
e -s 65535 -S 65535`
li=`echo $rep | awk '{ pou=(($4-$9) / $4)*100
print $2":"$10":"pou }'`
echo $li
done

Tests pour TCP

#! /bin/sh
duree=120
for size in 10 100 300 500 700 900 1100 1300 1400
do
rep=`/usr/local/sys/bin/netperf -P -v -l $duree -H $1 -t TCP_STREAM -- -m
$siz
e -s 65535 -S 65535`
li=`echo $rep | awk '{ print $3":"$5 }'`
echo $li
done
 

Les resultats obtenus sont semblables a Ttcp, si ce n'est une difference quant aux debits engendres en UDP (une difference de presque 200Mb/s apparait...A creuser)

wsopi98a -> wsopi99a (G) (Sophia -> Sophia) : resultats TCP et UDP

TCP max = 389,28Mb/s
UDP max = 699,36Mb/s

wsopi98a -> wstli96a (G) (Sophia -> Rocquencourt): resultats TCP et UDP

TCP max = 76,87Mb/s
UDP max = 684,12Mb/s



Carte Pro Intel 1000

Informations sur cette carte :

Intel propose 2 cartes Gigabit, la PRO/1000 F (fibre) et la carte Intel PRO/1000 T (cuivre).

La version cuivre de l'adaptateur Gigabit d'Intel egale a quelques Mbit/s pres les performances de son homologue en fibre optique multimode. Cela est surement du a l'utilisation commune du controleur GigaEther Intel 82543GC. Les performances (d'apres la litterature) sont bien meilleures sur un serveur dote de deux processeurs PIII que sur une machine moins puissante. Une nette reduction du nombre d'interruptions apparait ainsi. En effet, meme si les resultats obtenus en configuration monoprocesseur sont encore tres corrects, il reste trop peu de puissance de calcul pour les applications (10 a 15%)...
 

Les cartes Intel gerent les aspects Jumbo Frame (trames Ethernet etendues), mais pas le marquage des paquets semble-t-il.

Enfin voici les debits donnes pour ces cartes (config : 24 clients mono/bipro sur serveur Compaq ML370 bipro800, 512 MRAM, Windows2000 Advanced Server):

Clients mono :
 

Intel PRO / 1000 F 948 Mb/s
Intel PRO / 1000 T 945 Mb/s

Clients bipro
 

Intel PRO / 1000 F 971 Mb/s
Intel PRO / 1000 T 965 Mb/s

Tests Semir :

tests effectues entre deux machines (galere13 et galere14).

Carte cuivre et carte fibre (resultats identiques):
 
Tests TTCP Carte Cuivre Carte Fibre
Galere13 en loopback 363,62Mb/s 361,10Mb/s
Galere13 -> Galere14 247,37 Mb/s 240,68Mb/s
En simultane dans les deux sens 140,81Mb/s 141Mb/s
Ttcp parallele de Galere13 -> Galere14 122Mb/s 123Mb/s
Ttcp parallele dans les deux sens 67Mb/s 67Mb/s

En mettant la MTU a 9000, un gain d'environ 30Mb/s apparait pour les memes tests (excepte le test en loopback bien sur)


Conclusion :

On s'apercoit bien que les debits engendres ne sont pas encore pleinement satisfaisant avec nos configurations. En UDP, nous pouvons atteindre jusqu'a presque 700Mb/s, en TCP les 400Mb/s sont peniblement atteint.

Il semble que la limitation la plus grande soit le bus PCI 32 qui, deja limite physiquement a 1Ghz theorique, devient vite submerge a ces haut debits.
La taille de buffer importe egalement grandement, en 10/100 un buffer de 64k suffit, alors qu'en Gb/s on s'apercoit vite qu'un buffer d'au moins 256k est indispensable, voire meme 512k et 1G (!).

        Il suffit pour cela de modifier comme suit en Linux :

echo Taille_buffer > /proc/sys/net/core/rmem_max et wmem_max

Un Taille_buffer d'au moins 256K est recommande (262144)

Enfin notre but etait de voir si les debits de ces technologies Giga nous permettrait d'assurer des performances correctes avec notre outil logiciel Wagon.
La reponse etant positive, nous n'avons pas investiguer plus en avant les tests de tuning et de parametrage.

Ainsi, il aurait ete interessant de voir ce qu'aurait donne ces tests en effectuant du zero-copy, (d'apres la litterature, le checksum n'est pas tres couteux, il ne semble donc pas tres interessant de l'enlever) ou bien en re-compilant un noyau specialise en G.
 
 

Retour page VTHD.



Christophe.retiere@sophia.inria.fr

Last modified: Tue Jun 12 2001