Tester le débit réseau entre deux machines Linux


Internet Speed
Voici une astuce qui permet de tester rapidement le débit réseau entre deux machines Linux. La première commande crée un fichier de 100 Mo, tandis que la seconde va le transférer vers /dev/null de la machine cible, tout en affichant le débit.

Linux Speed

Vous pouvez lancer ces deux commandes en une seule fois de la manière suivante (pensez également à adapter le login et l'adresse IP du serveur) :

dd if=/dev/zero of=test bs=100M count=1; scp test user@server:/dev/null;

J'obtiens par exemple un taux de transfert de 11 Mo/s chez moi entre deux machines câblées en 100 MB/s :

test      100%  100MB  11.1MB/s   00:09

Et un taux de 50 Mo/s entre deux machine câblées en 1 Gb/s :

test      100%  500MB  50.0MB/s   00:10

16 Commentaires pour "Tester le débit réseau entre deux machines Linux"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Très utile, merci pour l'article.

    RépondreRépondre
    kir0gawa , le 5 avril 2011 à 08:07
  •  

    Bonjour,

    Pourquoi ne pas utiliser l'outil iperf ? De plus, avec iperf, pas besoin d'utiliser la couche ssh qu'utilise scp.

    RépondreRépondre
    prentonmantoonsenva , le 5 avril 2011 à 08:36
  •  

    remarque: il faut vérifier que l'option "Compression" de ssh n'est pas activée.

    RépondreRépondre
    san , le 5 avril 2011 à 09:29
  •  

    Je te propose de faire la même chose en ftp.
    Tu verras que ton débit sera bien meilleur ;-)

    ftp xx.xx.xx.xx
    put "|dd if=/dev/zero bs=40000 count=1000" /dev/null

    ssh peut te donner une idée du débit, mais la vrai valeur s'obtient avec du ftp.

    RépondreRépondre
    kleos45 , le 5 avril 2011 à 09:56
  •  

    C'est quand même étrange que pour un débit supérieur, il te faille plus de temps (00:10) en Gbps qu'en 100Mbps (00:09) :-) :

    test 100% 100MB 11.1MB/s 00:09

    test 100% 500MB 50.0MB/s 00:10

    RépondreRépondre
    olafkewl , le 5 avril 2011 à 12:38
  •  

    @prentonmantoonsenva : il existe des tas d'outils pour mesurer le débit réseau, moi ce que je veux c'est une technique pour faire des mesures une seule fois sans rien installer sur les machines. D'où l'utilisation de cette commande.

    @san : c'est vrai que la compression peut jouer un peu sur les performances.

    @kleos45 : ton idée de FTP est pas mal, par contre cela oblige à avoir des serveurs FTP en place. La plupart du temps, sur des serveurs Linux, tu trouves à coup sûr un serveur SSH mais pas forcément FTP.

    @olafkewl : c'est normal, si tu regarde bien, le premier fichier fait 100 Mo et le second fait 500 Mo. J'ai du augmenter la taille du fichier, car 100 Mo sur une liaison 1 Gbp/s, cela ne laisse pas assez de temps pour atteindre le débit maximum.

    RépondreRépondre
    pti-seb , le 5 avril 2011 à 13:00
  •  

    @pti-seb : Je me permets de te répondre ça.
    Car dans mon travail, je dois régulierement copier de gros volumes plusieurs tera entre des systèmes.
    Alors le ssh, tu oublies vite, sauf si tu as des jours devant toi.

    RépondreRépondre
    kleos45 , le 5 avril 2011 à 14:04
  •  

    L'utilisation de SSH impose un chiffrage/déchiffrage lors du transfert, donc c'est plus lent et ça te bouffe du CPU. C'est particulièrement visible quand tu fais un NAS sur un réseau 1000Mbps, et que ton serveur dispose d'un petit CPU. Ta vitesse de transfert en SSH est minable car le CPU est surchargé et n'arrive pas à suivre.

    FTP est beaucoup moins lourd. Certes il n'est pas sécurisé, mais sur un réseau privé osef.

    RépondreRépondre
    Obidoub , le 5 avril 2011 à 17:33
  •  

    Le SSH avec sa couche de chiffrement n'est pas forcément l'idéal pour une mesure de débit réseau.

    J'ai plutôt tendance à utiliser netcat (qui est souvent installé par la distrib) :
    Machine distante :
    nc -l 9000 > /dev/null

    Machine cliente :
    dd if=/dev/zero bs=100M count=1 | nc -q 1 IP_Machine_Distante 9000

    Exemple de résultats:
    104857600 bytes (105 MB) copied, 8.91877 s, 11.8 MB/s

    RépondreRépondre
    ggosseyn , le 5 avril 2011 à 18:29
  •  

    @pti-seb : Il faut tout de même installer le SSH et faire l'échange de clés (si on ne veut pas demander le mdp...).
    Je pinaille quand même... Comme si le SSH n'était pas quelques chose de courant sur linux ;)

    RépondreRépondre
    Pinault22 , le 6 avril 2011 à 10:19
  •  

    L'impact n'est pas non plus énorme. SSH consomme un peu de ressources, mais même sur mon PC (qui commence à dater) c'est quasi imperceptible.

    Par contre, je trouve que la solution de Ggosseyn est intéressante!
    Pas besoin d'échange de clef, netcat est installé sur 90% des distribs par défaut (comme SSH en fait ...), et les résultats démontrent en effet que SSH va légèrement moins vite qu'un simple netcat.

    SSH: 11,1 MB/s
    Netcat: 11,8 MB/s

    RépondreRépondre
    Boulate , le 6 avril 2011 à 11:12
  •  

    On peut faire un petit script pour netcat :

    ---- fichier speedtest.sh ----

    #!/bin/bash
    # -*- coding: UTF8 -*-

    echo -e "nVeuillez lancer la commande 'nc -v -v -n -l -p $2 >/dev/null' sur la machine $1"

    echo -e "nAppuyez sur la touche Enter pour continuer..."
    read touche
    case $touche in
    *) echo -e "Reprise du script...nnCommande netcat en cours d’exécution"
    ;;
    esac

    ( time yes| timeout 10 nc -v -v -n $1 $2 >/dev/null ) 2>tmp

    _sent=`sed -e '/sent/!d' -e 's/.*bytes: ([0-9]*)M.*/1/' tmp`
    echo -e "nLa vitesse de transfert sur $1 est de : $(($_sent/10))Mb/s"

    ---- fin du fichier -----

    Pour l'utiliser on lui passe comme paramètre l'IP et le port de la machine distante (on pourrait l'améliorée pour que la commande distante soit exécutée automatiquement via ssh..)

    $sh speedtest.sh 172.19.1.4 1337

    Veuillez lancer la commande 'nc -v -v -n -l -p 1337 >/dev/null' sur la machine 172.19.1.4

    Appuyez sur la touche Enter pour continuer...

    Reprise du script...

    Commande netcat en cours d’exécution

    La vitesse de transfert sur 172.19.1.4 est de : 65Mb/s

    RépondreRépondre
    jlaunay , le 6 avril 2011 à 16:13
  •  

    à noter que netcat existe pour Windows.

    http://www.downloadnetcat.com/nc11nt.zip

    Il est ainsi possible de tester la vitesse de transfert entre une machine Windows et une machine Linux de cette façon.

    RépondreRépondre
    jlaunay , le 6 avril 2011 à 16:31
  •  

    Sur une connexion giga, le débit risque aussi d'être limité par le(s) disque(s), et non par le réseau si tu copies un fichier (125Mo/s sur un disque, même en lecture, c'est pas courant à la maison).

    Pour être plus objectif, il faudrait générer le fichier en mémoire, dans un tmpfs ou shm.

    +1 pour netcat qui est plus approprié à ce genre de test.

    RépondreRépondre
    jamiez , le 10 avril 2011 à 19:50
  •  

    Personne n'a remarqué la faute "deux machines câblées en 100 MB/s" ? J'ai eu du mal au début à comprendre le débit étant donné la bande passante :D
    Bien sûr on parle de 100Mb/s .

    Sinon bonne astuce pour connaitre la bande passante réelle! Même si comme certains l'on fait remarqué le fait d'utiliser SSH ralenti la chose.

    RépondreRépondre
    seb176 , le 10 juin 2011 à 14:52
  •  

    @olafkewl : le premier fichier fais 100 Mo, le second 500 Mo ...

    RépondreRépondre
    Anonyme , le 14 juin 2014 à 16:28
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité red hat redhat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum