3 votes

Performance du réseau lors du transfert de grandes quantités de données

Je utilise DD sur Netcat pour copier un disque dur d'un système à un autre, simple clone.

J'ai démarré RIP sur chaque système.

système cible: nc -l -p 9000 |pv|dd of=/dev/hda système source: dd if=/dev/hda |pv|nc 9000 -q 10

Le transfert semble tourner autour de 10 ou 11 Mo/s, avec des pics atteignant 18. Les deux systèmes sont connectés à un commutateur gigabit. Ethtool eth0 sur les deux affiche:

Paramètres pour eth0:
    Ports pris en charge: [ TP ]
    Modes de liaison pris en charge:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Prend en charge l'auto-négociation: Oui
    Modes de liaison annoncés:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Négociation automatique annoncée: Oui
    Vitesse: 1000Mb/s
    Duplex: Complet
    Port: Paire torsadée
    PHYAD: 0
    Émetteur-récepteur: interne
    Négociation automatique: en marche
    Prend en charge le réveil sur: umbg
    Réveil sur: g
    Niveau de message actuel: 0x00000007 (7)
    Lien détecté: oui

Je pense que je pourrais être confus avec certains chiffres des taux de transfert, mais est-ce une vitesse attendue pour transférer les données?

EDIT: J'ai essayé d'utiliser deux câbles différents marqués conformes à la norme 5e, et j'ai utilisé un connecteur croisé pour relier les deux systèmes directement. Bien que ethtool dise toujours qu'ils sont réglés sur une vitesse de 1000Mb/s, le taux de transfert semble être seulement légèrement supérieur qu'auparavant. Soit les disques sont médiocres, les cartes réseau sont bas de gamme, ou le processeur doit être le goulot d'étranglement, je suppose.

EDIT2 J'ai essayé de prendre un deuxième disque dur d'une unité qui doit être clonée et de le connecter physiquement au clone principal. À l'origine, un canal IDE était connecté à un disque dur et un autre au CD-ROM. J'ai pris le disque dur du clone et l'ai connecté sur le même canal que le CD-ROM, donc ils devraient être /dev/hda et /dev/hdb. J'ai pris le câble qui était sur le CD et l'ai connecté à "la page blanche", donc cela devrait être /dev/hdc.

J'ai redémarré et exécuté "dd if=/dev/hda|pv|dd of=/dev/hdc", et je reçois un énorme...10 Mo/s. Cela fluctue fortement entre 8 Mo/s et des pointes à 12.

Alors...je pense que ce sont les disques durs qui donnent des performances médiocres...je suis tellement habitué au réseau comme étant un goulot d'étranglement qu'il est étrange pour moi de penser que les disques sont le problème!

2voto

s014gr0 Points 27

Que fait dd if=/dev/zero of=/dev/hda sur la destination et dd if=/dev/hda of=/dev/null sur la source donne comme le plus bas des deux qui vous donnera un meilleur cas.

Si vous avez un CPU de rechange, envisagez gzip -fast

Il vaut la peine de considérer la configuration de paquets jumbo (grand mtu)

1voto

Kyle Brandt Points 81077

Je m'attendrais à plus environ 20 Mo/s , utilisez-vous un câblage cat 6 / 5e?

Je lancerais aussi iostat (faisant partie du package sysstat) et vérifierais peut-être si iostat pense que les lecteurs sont utilisés à 100% :

iostat -c 2 -x

Voici un bon article sur les réseaux gigabit par Tom's Hardware: Gigabit Ethernet: Dude, Where's My Bandwidth?

0voto

PierreBdR Points 11479

Passez votre flux de données par la compression/décompression pour augmenter votre débit global au prix de quelques ressources CPU.

0voto

gbjbaanb Points 3822

Je reçois 12 Mo/s, mais j'en recevais beaucoup moins - mon problème particulier était les disques. J'utilisais un vilain serveur de stockage Dell bon marché avec une carte RAID horrible. En abandonnant le RAID, en le remplaçant par une configuration JBOD, cela a fait une grande différence, même lorsque j'ai ensuite mis un RAID5 logiciel par-dessus.

Je considérerais également de configurer des trames jumbo sur le commutateur, ce qui améliorera considérablement votre débit. (ifconfig eth0 mtu 9000 temporairement, ou ajoutez MTU 9000 à votre fichier ifcfg pour définir des trames jumbo sur vos interfaces Linux).

0voto

jeremcc Points 3720

La plupart de la lenteur provient du goulot d'étranglement du disque dur. En moyenne, un disque dur classique transfère 40 à 50 Mo à travers un réseau sur un disque/système/réseau complètement inactif. Ajoutez les surcharges de dd dans un simple tuyau netcat tcp qui n'est en aucun cas optimisé pour le trafic réseau, et les vitesses commencent à chuter considérablement.

La plupart du ralentissement vient de la taille de la fenêtre TCP. Un paquet est envoyé et doit attendre une réponse avant d'envoyer le suivant. Habituellement, un réseau interne a une latence si faible que personne ne remarque jamais cela. Lorsque vous utilisez une méthode non optimisée pour le réseau, les fenêtres commencent à être partout. Un excellent exemple de cela était la copie de fichiers en réseau de Vista dans la version pré-SP1 qui donnait des vitesses de transfert de moins de 100 ko/s lorsque l'optimisation de la fenêtre TCP était très mauvaise.

A titre de référence, j'ai deux boîtiers ici qui poussent constamment 60-80 Mo par seconde à travers leur réseau vers l'autre. Ils ont des cartes NIC dédiées, du RAID 10 et un tas de disques SAS 10000 tr/min pour atteindre ce type de vitesse.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X