Lorsqu'il s'agit de performances des
D'habitude, lorsque je parle d'un concept comme latence ou
capacité, je mets juste un lien vers l'article de
Pourquoi pinailler sur le vocabulaire ? Parce que, comme je l'indique plus haut, le monde de la mesure de performances est particulièrement mauvais de ce point de vue, préférant des termes flous comme « vitesse ». Ainsi, l'article de Wikipédia sur la latence explique qu'une latence élevée peut être causée par une bande passante insuffisante, ce qui n'est que très approximativement vrai. Et que le vocabulaire flou ou incorrect n'est pas innocent : cela sert par exemple aux commerciaux à vendre des produits inadaptés.
Donc, la
(Avec certains protocoles
comme
Pourquoi est-elle une métrique importante ? Car certaines
utilisations du réseau dépendent beaucoup de la latence. Par exemple,
des applications interactives (
Certains types de liens réseaux ont une latence particulièrement
mauvaise (particulièrement élevée). Ainsi, un
La définition que j'ai donnée parlait de « message » et, en effet,
la latence peut se mesurer dans différentes
% ping6 -c 10 f.root-servers.net
...
10 packets transmitted, 10 received, 0% packet loss, time 9002ms
rtt min/avg/max/mdev = 177.097/183.951/192.332/5.940 ms
Ici, la latence moyenne (ping ne calcule hélas pas la médiane) est de 184 millisecondes. Notez que ping n'est
pas un outil très précis : il dépend de la charge des deux machines
(celle qui pingue et l'amer), il ne connait
pas l'instant exact où le premier bit du paquet touche le réseau
(cf.
% check-soa -i societegenerale.com
tigdns01.socgen.com.
193.178.155.113: OK: 2013042301 (30 ms)
tigdns02.socgen.com.
193.178.155.114: OK: 2013042301 (34 ms)
Dernier exemple, avec
% curl --silent --write-out "Delay: %{time_total} seconds\n" \
--output /dev/null http://www.societegenerale.com/
Delay: 0.124 seconds
La documentation de curl indique plusieurs autres variables pour
étudier les différents facteurs qui, ensemble, composent la latence :
% curl --silent --write-out "Delay: %{time_total} s, TCP connection delay: %{time_connect}, Negociation delay: %{time_starttransfer}\n" \
--output /dev/null http://www.societegenerale.com/
Delay: 0.274 s, TCP connection delay: 0.095, Negociation delay: 0.178
Ici, on voit que le transfert effectif des données ne faisait même pas
la moitié de la latence : la majorité du temps était passé à faire la
connexion TCP puis à envoyer la commande
Un bon article en français expliquant clairement la latence et son
importance est « Bande
passante et temps de latence réseau » d'Alain Faure. Sinon, le
grand classique en anglais est «