Auteur Sujet: Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?  (Lu 5900 fois)

0 Membres et 1 Invité sur ce sujet

dabamax

  • Abonné Orange Fibre
  • *
  • Messages: 2
Bonjour

Superbe perf en monothread TCP en Reverse avec un débit moyen à 9,02 Gbps

iperf3 -c 192.168.13.5 -w 4000k -t 5 -R
Connecting to host 192.168.13.5, port 5201
Reverse mode, remote host 192.168.13.5 is sending
[ 4] local 192.168.13.1 port 58787 connected to 192.168.13.5 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 1.02 GBytes 8.79 Gbits/sec
[ 4] 1.00-2.00 sec 1.02 GBytes 8.77 Gbits/sec
[ 4] 2.00-3.00 sec 1.02 GBytes 8.77 Gbits/sec
[ 4] 3.00-4.00 sec 1.08 GBytes 9.29 Gbits/sec
[ 4] 4.00-5.00 sec 1.10 GBytes 9.45 Gbits/sec

[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-5.00 sec 5.25 GBytes 9.02 Gbits/sec 46900 sender
[ 4] 0.00-5.00 sec 5.25 GBytes 9.02 Gbits/sec receiver

Mais en UDP, ici je force à 3 Gbps, impossible de dépasser les 2 Gbps depuis le même serveur de mon lab

iperf3 -c 192.168.13.5 -u -l 1300 -b 3G -t 5 -R
Connecting to host 192.168.13.5, port 5201
Reverse mode, remote host 192.168.13.5 is sending
warning: Unable to set socket pacing, using application pacing instead
[ 4] local 192.168.13.1 port 44358 connected to 192.168.13.5 port 5201
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-1.00 sec 235 MBytes 1.97 Gbits/sec 0.003 ms 7350/196549 (3.7%)
[ 4] 1.00-2.00 sec 237 MBytes 1.99 Gbits/sec 0.001 ms 33/191180 (0.017%)
[ 4] 2.00-3.00 sec 228 MBytes 1.91 Gbits/sec 0.006 ms 4787/188581 (2.5%)
[ 4] 3.00-4.00 sec 232 MBytes 1.94 Gbits/sec 0.008 ms 683/187585 (0.36%)
[ 4] 4.00-5.00 sec 232 MBytes 1.94 Gbits/sec 0.002 ms 363/187159 (0.19%)

[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-5.00 sec 1.15 GBytes 1.98 Gbits/sec 0.005 ms 13216/951094 (1.4%)
[ 4] Sent 951094 datagrams

Jusqu'à maintenant tous mes tests UDP étaient meilleurs en UDP qu'en TCP mais avec des interfaces 1 Gbps. UDP à 10 Gbps nécessiterait-t-il un petit debuggage ?

Cordialement

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?
« Réponse #1 le: 20 décembre 2018 à 21:50:19 »
pacing ? buffer size ?

ca fait pareil sans -R et avec '--get-server-output' ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?
« Réponse #2 le: 20 décembre 2018 à 21:58:31 »
faut check le cpu c'est peut-etre simplement trop d'irq a cause du manque d'offload sur la carte. En TCP l'offload permet d'envoyer et recevoir des grands paquets d'un coup gerés  par la carte réseau. En UDP y'a peut-etre pas d'offload donc bien plus de context switch (kernel<->user), d'irq et donc de charge cpu (l'offload udp c'est UFO).

Augmenter la taille des socket buffers peut jouer.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?
« Réponse #3 le: 20 décembre 2018 à 22:07:22 »
pourquoi "-l 1300" aussi ?

Thornhill

  • Abonné SFR fibre FttH
  • *
  • Messages: 3 976
  • Saint-Médard-en-Jalles (33)
Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?
« Réponse #4 le: 20 décembre 2018 à 22:33:23 »
En effet tu aurais peut-être intérêt à ne pas limiter la taille des datagrammes UDP à 1300 et même à la forcer à une taille bien supérieure à la MTU (16k par exemple ?), pour laisser le driver ou la NIC faire le travail plutôt que Iperf qui travaille en mode user et va générer un grand nombre de syscalls.

Pour l'Offload UDP, outre UFO qui va faire travailler le HW si la NIC le supporte, il y a aussi à défaut GSO qui va faire le travail de fragmentation au niveau du driver, donc en mode kernel, ce qui ne décharge pas totalement le CPU de ce travail mais limite fortement les context switch qui sont très couteux.


dabamax

  • Abonné Orange Fibre
  • *
  • Messages: 2
Iperf3 OK en TCP à 10 Gbps mais sous performant en UDP. Pourquoi donc ?
« Réponse #5 le: 21 décembre 2018 à 14:33:36 »
Bonjour et merci à vous deux

Mon besoin était d'avoir un flux UDP avecx une BP d'au moins 4 Gbps et .... c'est gagné.

 iperf3 -u -c 192.168.13.5 -b 9G -l 16k -w 10M -i 1 -R
Connecting to host 192.168.13.5, port 5201
Reverse mode, remote host 192.168.13.5 is sending
warning: Unable to set socket pacing, using application pacing instead
[  4] local 192.168.13.1 port 40739 connected to 192.168.13.5 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec   658 MBytes  5.52 Gbits/sec  0.029 ms  25196/67289 (37%)
[  4]   1.00-2.00   sec   660 MBytes  5.54 Gbits/sec  0.029 ms  24017/66249 (36%)
[  4]   2.00-3.00   sec   691 MBytes  5.79 Gbits/sec  0.005 ms  27370/71574 (38%)
[  4]   3.00-4.00   sec   691 MBytes  5.80 Gbits/sec  0.022 ms  25276/69505 (36%)
[  4]   4.00-5.00   sec   672 MBytes  5.64 Gbits/sec  0.034 ms  26073/69100 (38%)
[  4]   5.00-6.00   sec   650 MBytes  5.45 Gbits/sec  0.016 ms  24308/65923 (37%)
[  4]   6.00-7.00   sec   686 MBytes  5.75 Gbits/sec  0.025 ms  25232/69137 (36%)
[  4]   7.00-8.00   sec   645 MBytes  5.41 Gbits/sec  0.026 ms  26524/67801 (39%)
[  4]   8.00-9.00   sec   599 MBytes  5.02 Gbits/sec  0.046 ms  32133/70444 (46%)
[  4]   9.00-10.00  sec   571 MBytes  4.79 Gbits/sec  0.013 ms  33192/69715 (48%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  10.5 GBytes  9.00 Gbits/sec  0.013 ms  269321/686737 (39%)
[  4] Sent 686737 datagrams

Cordialement