(Courriels de diversion: <hypothequeriez@vieilliraient-inopportunement.com> <calquaient@avouait-feeriques.com> <enfermerent@bilboquet-focalises.com> <paternite@detartreraient-entachant.com> <accoupla@prononciation-reproduirons.com> <vociferaient@eloigna-atermoierais.com> <retercer@transportais-gendarmees.com> <vinicole@troqueraient-agrafes.com> <assiettes@hippiques-endurerai.com> <revolutionnees@financaient-personnifieriez.com> )


Jean-Michel a écrit :

> Jean-Michel a écrit :
>
>   
>> Je souhaite mesure le débit entre n machines (deux à deux) sur un réseau
>> LAN.
>>
>>
>> J'ai donc envisagé d'écrire un script python afin de
>>
>> * mesurer le temps pris par le transfert
>>
>> * pouvoir ajouter des fonctionnalités de mesure facilement
>>
>>
>> Je suis donc emmené à me poser les deux questions suivantes:
>>
>> * Python ne risque t'il pas de par sa lenteur aléatoire due au garbage
>> collector de perturber les mesures?
>>
>> * Est-il possible de lire des données sur un flux TCP, sans avoir à
>> créer un objet pour chaque paquet lu?
>>
>>
>> Le cas échéant, comment faire?
>>
>>   
>>     
> N'ayant aucune réponse, je ne peux que faire le constat suivant:
>
> a priori, l'accès au réseau est plus rapide en java qu'en python, à
> moins que cela soit simplement du à une moindre sollicitation du garbage
> collector.
>   

Pour réduire les lenteurs de python, il y a deux solutions:
* passer de python 2.4 à python2.5
* activer l'option d'optimisation.

Mais même en cumulant ces deux avancées, java reste plus rapide.

> code java ci-après:
>
>   
(...)
Les performances obtenues en java sont de l'ordre de:
89 Mbits TCP/s (entre deux cartes PCI reliées par un cable)
8.0 à 8.5 Mbits TCP/s (entre les deux même cartes PCI reliées via un hub
10 MBits indiquant des collisions)
700 Mbits TCP/s (en loopback, sans doute lié à la lenteur de java).

60 à 75 Mbits dans chaque sens (émissions bidirectionnelles, en direct)
8 et 0.5 Mbits avec une dissymétrie forte (émissions bidirectionnelles,
via un hub 10 Mbits/s)

Toutefois, d'après un calcul théorique, la «perte» de débit serait de
ethernet: 14 ou 22 octets
IPv4: 24 octets
TCP: 24 octets

Soit un total de  62 à 70 octets d'entête, pour 1000 octets transmis,
soit 6 ou 7 pourcent.

Cela m'emmène à me poser quelques questions:
* Pourquoi est-ce que le débit mesuré est de 89 Mbits et pas 93 ou 94?
* Pourquoi sur un hub 10Mbits, un sens de connexion est privilégié par
rapport à l'autre lors d'une communication bidirectionnelle?






--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>