Auteur Sujet: NSpeed: nouveau projet de mesure de débit  (Lu 64324 fois)

0 Membres et 1 Invité sur ce sujet

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #84 le: 30 avril 2021 à 20:35:47 »
Oui j'ai bien la V0.6, la 0.5 même problème.
Curl fonctionne bien

En -n 1 même erreur

Pas de problème sur Windows, bizarre  :P

ca doit être la résolution DNS, Go utilise par défaut un résolveur interne sur Linux. J'ai pas forcé a autre chose.

J'ai enlevé l'affichage des résolutions DNS depuis la v.05 je vais les remettre.

sinon tu peux lancer nspeed avec une variable d'env GODEBUG=netdns=cgo avant pour changer le comportement du résolveur. (pour les curieux voir https://golang.org/pkg/net/#hdr-Name_Resolution )

GODEBUG=netdns=cgo nspeed_linux_amd64 -verbose get -4 -n 1 http://scaleway.testdebit.info/10G/10G.dat
si ce n'est pas le problème je sèche :)

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #85 le: 30 avril 2021 à 20:39:52 »
5 fois d'affilé avec 16 flux c'est pas vraiment constant :
  Total|  25.6 Gbps|   5.3 Gbps| 8.00|
  Total|  20.0 Gbps|  14.9 Gbps| 8.00|
  Total|  25.6 Gbps|  13.9 Gbps| 8.00|
  Total|  17.2 Gbps|  14.6 Gbps| 8.01|
  Total|  28.1 Gbps|  10.8 Gbps| 8.00|

oui curieux. t'as un antivirus réseau ou autre ?

Free_me

  • Abonné Free fibre
  • *
  • Messages: 3 378
  • Marseille
NSpeed: nouveau projet de mesure de débit
« Réponse #86 le: 30 avril 2021 à 20:51:03 »
oui curieux. t'as un antivirus réseau ou autre ?

juste windows defender. par contre j'ai vu apres mon cpu c'est 12 coeurs, ca doit jouer ?

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #87 le: 30 avril 2021 à 20:56:44 »
juste windows defender. par contre j'ai vu apres mon cpu c'est 12 coeurs, ca doit jouer ?

peut-être je n'ai pas trop testé cette partie la. essai avec 12 ou 24 pour voir.

daleksek

  • Abonné Orange Fibre
  • *
  • Messages: 1 398
NSpeed: nouveau projet de mesure de débit
« Réponse #88 le: 30 avril 2021 à 21:09:24 »
ca doit être la résolution DNS, Go utilise par défaut un résolveur interne sur Linux. J'ai pas forcé a autre chose.

J'ai enlevé l'affichage des résolutions DNS depuis la v.05 je vais les remettre.

sinon tu peux lancer nspeed avec une variable d'env GODEBUG=netdns=cgo avant pour changer le comportement du résolveur. (pour les curieux voir https://golang.org/pkg/net/#hdr-Name_Resolution )

GODEBUG=netdns=cgo nspeed_linux_amd64 -verbose get -4 -n 1 http://scaleway.testdebit.info/10G/10G.dat
si ce n'est pas le problème je sèche :)
GODEBUG=netdns=cgo nspeed_linux_amd64 -verbose get -4 -n 1 http://scaleway.testdebit.info/10G/10G.dat
Jobs:
  0 {Command: GET, URL: "http://scaleway.testdebit.info/10G/10G.dat", IPversion: 4, Address: , Instance: 0, timeout: 8s}
| 10|  1|  2|  3|  2|  3|  1|  0|  4|  2|  0|  0|  0|  0|  2|  0|, active jobs: 1 / active goroutines: 7
|  9|  1|  0|  3|  1|  3|  2|  1|  0|  0|  2|  1|  4|  2|  5|  1|, active jobs: 1 / active goroutines: 7
|  8|  0|  1|  1|  4|  5|  2|  0|  2|  1|  0|  0|  1|  1|  3|  1|, active jobs: 1 / active goroutines: 7
| 10|  2|  4|  0|  2|  1|  1|  2|  1|  1|  0|  1|  3|  1|  0|  1|, active jobs: 1 / active goroutines: 7
|  9|  0|  1|  4|  1|  0|  1|  0|  5|  2|  0|  0|  4|  2|  1|  0|, active jobs: 1 / active goroutines: 7
9:08PM FTL  error="Get \"http://scaleway.testdebit.info/10G/10G.dat\": dial tcp: i/o timeout" job=0

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #89 le: 30 avril 2021 à 21:24:03 »
 :o :o ;D

et avec google.com aussi?

GODEBUG=netdns=1 nspeed_linux_amd64 -verbose get -4 -n 1 https://google.com
GODEBUG=netdns=cgo+1 nspeed_linux_amd64 -verbose get -4 -n 1 https://google.com

sinon:

curl -o nspeed4 https://dl.nspeed.app/nspeed-client/v0.4/nspeed_linux_amd64
chmod +x nspeed4
./nspeed4 -verbose get  https://google.com get http://scaleway.testdebit.info
rm ./nspeed4

qu'y a t'il apres les "LookupIp for ..." ?

daleksek

  • Abonné Orange Fibre
  • *
  • Messages: 1 398
NSpeed: nouveau projet de mesure de débit
« Réponse #90 le: 30 avril 2021 à 22:55:35 »
Même résultat avec Google

Nspeed 0.4
DEBU[0000] max cores = 16                               
Jobs:
  0 GET {URL: "https://google.com", IPversion: 0, Instance: 0, timeout: 8s}
  1 GET {URL: "http://scaleway.testdebit.info", IPversion: 0, Instance: 0, timeout: 8s}
DEBU[0000] spawning workload 0 https://google.com false
DEBU[0000] spawning workload 1 http://scaleway.testdebit.info false
DEBU[0001] cpu 0 8                                       core#0=9.090909085564034 core#1=0 core#10=0.9999999980209395 core#11=0 core#12=4.999999997962732 core#13=1.0000000004656613 core#14=0 core#15=2.02020201963782 core#2=1.0000000013969839 core#3=2.0000000004074536 core#4=2.02020201963782 core#5=1.9801980197306543 core#6=1.0101010093437939 core#7=2.0000000004074536 core#8=2.9702970302450473 core#9=0
INFO[0001] #0;0;0 B;0 B;0;https://google.com           
INFO[0001] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
DEBU[0002] cpu 0 8                                       core#0=8.163265307940682 core#1=0 core#10=4.000000000814907 core#11=3.0303030295012716 core#12=1.0000000013969839 core#13=0 core#14=2.020202020157478 core#15=0 core#2=0.9999999975552781 core#3=0 core#4=3.9603960394613087 core#5=0 core#6=1.0000000009313226 core#7=0 core#8=0 core#9=1.0204081627501405
INFO[0002] #0;0;0 B;0 B;0;https://google.com           
INFO[0002] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
DEBU[0003] cpu 0 8                                       core#0=9.090909091443597 core#1=1.0000000009313226 core#10=0 core#11=5.050505053504221 core#12=0.9999999975552781 core#13=1.9607843126624898 core#14=1.980198020643626 core#15=5.00000000174623 core#2=4.000000000814907 core#3=0.999999999476131 core#4=0.999999999476131 core#5=0.999999999476131 core#6=0 core#7=0.9900990096014213 core#8=0.9900990105857189 core#9=2.0000000004074536
INFO[0003] #0;0;0 B;0 B;0;https://google.com           
INFO[0003] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
DEBU[0003] LookupIp for google.com                     
DEBU[0003]   2a00:1450:4007:80f::200e                   
DEBU[0003]   216.58.206.238                             
DEBU[0003] LookupIp for scaleway.testdebit.info         
DEBU[0003]   2001:bc8:3::7                             
DEBU[0003]   62.210.156.7                               
DEBU[0004] cpu 0 10                                      core#0=10.10101010112888 core#1=3.999999997904524 core#10=0 core#11=5.999999999767169 core#12=0 core#13=0 core#14=1.01010100981891 core#15=0.9999999975552781 core#2=0 core#3=1.0000000009313226 core#4=4.040404040314956 core#5=0 core#6=1.999999998952262 core#7=0 core#8=3.03030303092662 core#9=1.0000000009313226
INFO[0004] #0;0;0 B;0 B;0;https://google.com           
INFO[0004] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
DEBU[0005] cpu 0 10                                      core#0=10.10101010225728 core#1=2.0202020216273686 core#10=0.9900990105857189 core#11=1.999999998952262 core#12=2.9999999998835847 core#13=1.0101010112888003 core#14=3.9999999993597157 core#15=0 core#2=3.960396041287252 core#3=1.9801980192028426 core#4=1.01010100981891 core#5=1.0000000009313226 core#6=1.0101010112888003 core#7=0.999999999476131 core#8=0 core#9=0
INFO[0005] #0;0;0 B;0 B;0;https://google.com           
INFO[0005] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
DEBU[0006] cpu 0 10                                      core#0=9.09090908984008 core#1=1.01010100981891 core#10=0 core#11=0 core#12=1.9801980220844098 core#13=0.999999999476131 core#14=4.000000000814907 core#15=0 core#2=3.03030302945673 core#3=0 core#4=0.999999999476131 core#5=1.999999998952262 core#6=2.999999998486601 core#7=2.0000000004074536 core#8=1.0101010108136843 core#9=2.020202020157478
INFO[0006] #0;0;0 B;0 B;0;https://google.com           
INFO[0006] #1;0;0 B;0 B;0;http://scaleway.testdebit.info
INFO[0006] #1 size = 94.6 kB (92.4 KiB) procotol = HTTP/1.1 local IP:port = [2a05:6xxxxxxxxxxxxxxxxxxx]:44774 remote IP:port = [2001:bc8:3::7]:80 DNSInfoTime = 3.077444274s ConnInfoTime = 3.114009968s FirstResponseByte = 3.150250834s
INFO[0006] job 0 got redirect                           
INFO[0006] #1 transfered 94642 bytes                   
DEBU[0007] cpu 1 9                                       core#0=9.090909091443597 core#1=0.999999999476131 core#10=0 core#11=0 core#12=1.0101010093437939 core#13=0.999999999476131 core#14=2.0000000004074536 core#15=0.9900990110422049 core#2=1.0101010112888003 core#3=5.00000000174623 core#4=4.000000000814907 core#5=2.0202020225776005 core#6=0.9999999999417925 core#7=3.9999999993597157 core#8=0 core#9=1.999999998952262
INFO[0007] #0;0;0 B;0 B;0;https://google.com           
INFO[0007] #1;3.265513027;92.4 KiB;92.4 KiB;634;http://scaleway.testdebit.info
DEBU[0008] cpu 1 9                                       core#0=9.18367347217571 core#1=0 core#10=0 core#11=0 core#12=0 core#13=0 core#14=2.0202020186875878 core#15=1.0000000004656613 core#2=1.9801980197306543 core#3=6.060606059002543 core#4=0 core#5=3.99999999749707 core#6=1.0101010108136843 core#7=0 core#8=3.9999999993597157 core#9=0
INFO[0008] #0;0;0 B;0 B;0;https://google.com           
INFO[0008] #1;3.265513027;92.4 KiB;92.4 KiB;634;http://scaleway.testdebit.info
DEBU[0009] cpu 1 7                                       core#0=9.183673466236153 core#1=1.0000000013969839 core#10=0.999999999476131 core#11=0.9900990110422049 core#12=0 core#13=1.0000000009313226 core#14=1.0101010112888003 core#15=3.999999997904524 core#2=1.0101010093437939 core#3=3.03030303092662 core#4=2.999999998428393 core#5=0.9999999999417925 core#6=2.9999999998835847 core#7=1.0101010108136843 core#8=5.999999999767169 core#9=0.999999999476131
INFO[0009] #0;0;0 B;0 B;0;https://google.com           
INFO[0009] #1;3.265513027;92.4 KiB;92.4 KiB;634;http://scaleway.testdebit.info
INFO[0009] #0 size = -1 B (-1 B) procotol = HTTP/2.0 local IP:port = [2a05:6xxxxxxxxxxxxxxxxxxx]:50170 remote IP:port = [2a00:1450:4007:813::2004]:443 DNSInfoTime = 6.428978872s ConnInfoTime = 6.51283548s FirstResponseByte = 6.587627558s
INFO[0009] #0 crypto = TLS13 cipher = TLS_AES_128_GCM_SHA256 TLSDone in = 6.512777021s
INFO[0009] #0 transfered 13057 bytes                   
DEBU[0009] wait group ended                             
DEBU[0009] all workers done (3 remaining active goroutines)
DEBU[0009] main loop endedrc = 2                       
INFO[0009] #0 speed = 31.4 kbps time = 3331 ms (3.3311338360000002 s) size = 13.1 kB (12.8 KiB) url  = https://google.com
INFO[0009] #1 speed = 231.9 kbps time = 3265 ms (3.265513027 s) size = 94.6 kB (92.4 KiB) url  = http://scaleway.testdebit.info
total: speed = 258.6 kbps time = 3.331133836s size = 107699 Bytes ( 107.7 kB )

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #91 le: 03 mai 2021 à 01:37:39 »
nspeed 0.6 sur i7 3930K à 4,1Ghz

Même avec un flux ça semble mieux se répartir qu'avant, les performances sont meilleures.

Windows 10 natif :
 - 12.0 Gbps| 8.2 Gbps avec 1 flux
 - 18.0 Gbps| 18.0 Gbps avec 12 flux

WSL2 :
 - 10.8 Gbps| 10.1 Gbps avec 1 flux
 - 25.4 Gbps| 27.4 Gbps avec 12 flux

Linux 5.11.12 (Fedora 34) :
 - 11.2 Gbps| 11.3 Gbps avec 1 flux
 - 33.9 Gbps| 35.0 Gbps avec 12 flux

Windows 10 :
>nspeed_windows_amd64.exe server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  3|  1|  4|  0|  4|  1|  3|  0|  0|  0|  1|  0|, active jobs: 3 / active goroutines: 7
| 69|  3| 52| 25| 38| 11| 17|  8|  5| 75| 61| 27|, active jobs: 3 / active goroutines: 14
| 80|  3|  8| 66| 30|  2| 14|  9| 11| 73| 45| 42|, active jobs: 3 / active goroutines: 14
| 59|  9| 36| 45| 28|  3| 28|  3|  3| 84| 48| 47|, active jobs: 3 / active goroutines: 14
| 57| 22|  3| 75| 14|  3| 25|  3|  6| 88| 83|  8|, active jobs: 3 / active goroutines: 14
| 38| 50| 25| 50| 56|  9| 39|  5| 14| 64| 17| 27|, active jobs: 3 / active goroutines: 14
| 17| 67| 48| 44| 59|  5| 47|  5| 19| 16| 11| 69|, active jobs: 3 / active goroutines: 14
| 53| 31| 22| 75| 42|  0| 56|  6| 25| 13|  8| 64|, active jobs: 3 / active goroutines: 14
| 41| 48| 42| 34| 61|  3| 41|  2| 25| 30| 20| 38|, active jobs: 3 / active goroutines: 14
   Job|      Read|    Write| Time|target
 Job 1| 12.0 Gbps|    0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|     0 bps| 8.2 Gbps| 8.00|put http://localhost:7333/p 40.0 GB
 Total| 12.0 Gbps| 8.2 Gbps| 8.00|

WSL2 :
$ ./nspeed_linux_amd64 server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  0|  1|  0|  0|  0|  1|  1|  0|  0|  0|  0|  0|, active jobs: 3 / active goroutines: 9
|  3|  0|  0| 50| 46| 61| 59|  0| 71|  0|  3| 56|, active jobs: 3 / active goroutines: 14
| 26|  2|  0| 75| 24| 36| 47|  0| 47|  0| 73|  0|, active jobs: 3 / active goroutines: 14
| 70|  1| 17| 45| 72|  0| 34|  0| 63| 26| 14|  0|, active jobs: 3 / active goroutines: 14
| 79|  0|  1| 12| 43| 36| 35|  0| 73| 34| 14|  0|, active jobs: 3 / active goroutines: 14
| 51|  0| 76| 17| 44|  0| 55|  0| 21|  0| 59|  0|, active jobs: 3 / active goroutines: 14
| 59|  1|  0| 25| 57|  1| 82|  0| 49|  0| 55|  0|, active jobs: 3 / active goroutines: 14
| 45|  6| 60| 11| 16| 48| 67|  0| 58|  3| 37|  0|, active jobs: 3 / active goroutines: 14
| 58|  6| 60|  0|  0| 66| 19|  0| 42|  0| 88|  0|, active jobs: 3 / active goroutines: 14
   Job|      Read|     Write| Time|target
 Job 1| 10.8 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|     0 bps| 10.1 Gbps| 8.00|put http://localhost:7333/p 40.0 GB
 Total| 10.8 Gbps| 10.1 Gbps| 8.00|

Linux :
$ ./nspeed_linux_amd64 server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  2|  0|  1|  0|  0|  0|  1|  2|  1|  1|  1|  1|, active jobs: 3 / active goroutines: 9
| 18|  4| 15| 27|  0| 15| 43| 83| 11| 34| 41| 65|, active jobs: 3 / active goroutines: 14
| 81|  1|  1|  4|  0|  0|  0| 77| 47| 33| 61| 45|, active jobs: 3 / active goroutines: 14
| 15| 25| 23|  7| 15| 12| 15| 62| 16| 61| 54| 61|, active jobs: 3 / active goroutines: 14
| 75| 31| 22|  9| 50| 45|  1| 24| 38| 24| 23| 31|, active jobs: 3 / active goroutines: 14
|  2| 76| 48|  6| 63| 20| 52| 16|  8| 54|  2| 28|, active jobs: 3 / active goroutines: 14
|  0| 46| 27|  0| 22| 67| 75|  1| 40| 54| 18|  8|, active jobs: 3 / active goroutines: 14
| 29| 63| 18|  0|  0| 50| 41|  0| 37| 39| 88| 13|, active jobs: 3 / active goroutines: 14
| 23| 27| 41| 26| 25|  5| 28| 25| 42| 17| 81| 34|, active jobs: 3 / active goroutines: 14
   Job|      Read|     Write| Time|target
 Job 1| 11.2 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|     0 bps| 11.3 Gbps| 8.00|put http://localhost:7333/p 40.0 GB
 Total| 11.2 Gbps| 11.3 Gbps| 8.00|

Je n'ai mis les logs que sur 1 flux, sinon le message était trop long.
Sur 12 flux, sans surprise tous les coeurs logiques sont saturés.
« Modifié: 03 mai 2021 à 02:05:15 par hwti »

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #92 le: 03 mai 2021 à 02:37:31 »
nspeed 0.6 sur Ryzen 5 3500X

Windows a un comportement bizarre :
 - sur une build insider : 4 flux (donc 8 transferts, puisque les deux sens sont testés en même temps) sont suffisants sous Windows pour saturer les 6 cœurs.
Le résultat est que parfois ça s'équilibre, mais souvent l'envoi semble avoir la priorité.
 - sur une 20H2 : les performances sont moins bonnes, un cœur est à 100% et les autres non (et ajouter des flux ne change rien), mais du coup ça reste équilibré

Bizarrement comparé à l'autre machine, Windows 10 n'a pas l'air de super bien fonctionner, comparé à WSL2.
C'est différent de ce que j'avais vu avant, je suis un peu perplexe.

Et WSL2 bat un Linux natif, surtout sur 1 flux  ???

Windows 10 (insider, build 21364) :
 - 10.7 Gbps| 11.1 Gbps avec 1 flux
 - 7.7 Gbps| 23.0 Gbps, ou 13.8 Gbps| 14.1 Gbps avec 4 flux

Windows 10 (20H2) :
 - 10.4 Gbps| 10.4 Gbps avec 1 flux
 - 11.3 Gbps| 11.4 Gbps avec 4 flux

WSL2 (build 21364/kernel 5.10, ou 20H2/kernel 5.4) :
 - 23.7 Gbps| 28.9 Gbps avec 1 flux
 - 32.8 Gbps| 36.4 Gbps avec 3 flux ou plus

Linux 5.11.12 (Fedora 34) :
 - 16.3 Gbps| 17.2 Gbps avec 1 flux (avec le CPU governor "performance", légèrement meilleur que "schedutil")
 - 30.7 Gbps| 34.0 Gbps avec 3 flux ou plus

Windows 10 21364 :
>nspeed_windows_amd64.exe server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  4|  0|  3|  1|  1|  6|, active jobs: 3 / active goroutines: 7
| 13| 34| 44| 92| 36| 97|, active jobs: 3 / active goroutines: 14
|  8| 39| 50|100| 22| 95|, active jobs: 3 / active goroutines: 14
|  9| 31| 31| 97| 57| 97|, active jobs: 3 / active goroutines: 14
| 17| 40| 42| 97| 17| 97|, active jobs: 3 / active goroutines: 14
| 23| 33| 43| 91| 39| 91|, active jobs: 3 / active goroutines: 14
| 11| 44| 23| 97| 45| 92|, active jobs: 3 / active goroutines: 14
|  5| 41| 28| 92| 42| 98|, active jobs: 3 / active goroutines: 14
|  3| 27| 25| 95| 58|100|, active jobs: 3 / active goroutines: 14
   Job|      Read|     Write| Time|target
 Job 1| 10.7 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|     0 bps| 11.1 Gbps| 8.00|put http://localhost:7333/p 40.0 GB
 Total| 10.7 Gbps| 11.1 Gbps| 8.00|

Windows 10 20H2 4 flux, pas de répartition sur les coeurs :
>nspeed_windows_amd64.exe server -n 8 get -w 1 -n 4 http://localhost:7333/g/40g put -w 1 -n 4 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 8, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 1, timeout: 8s}
  3 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 2, timeout: 8s}
  4 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 3, timeout: 8s}
  5 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
  6 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 1, timeout: 8s,size: 40000000000 (40.0 GB)}
  7 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 2, timeout: 8s,size: 40000000000 (40.0 GB)}
  8 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 3, timeout: 8s,size: 40000000000 (40.0 GB)}
|  2|  0|  2|  3|  2|  0|, active jobs: 9 / active goroutines: 23
| 44| 81| 59| 30| 30|100|, active jobs: 9 / active goroutines: 41
| 55| 88| 72| 31| 33|100|, active jobs: 9 / active goroutines: 41
| 47| 86| 67| 45| 42|100|, active jobs: 9 / active goroutines: 41
| 36| 83| 63| 44| 32|100|, active jobs: 9 / active goroutines: 41
| 36| 77| 51| 50| 35|100|, active jobs: 9 / active goroutines: 41
| 42| 88| 58| 44| 44|100|, active jobs: 9 / active goroutines: 41
| 32| 75| 63| 46| 23|100|, active jobs: 9 / active goroutines: 41
| 56| 86| 51| 48| 41|100|, active jobs: 9 / active goroutines: 41
   Job|      Read|     Write| Time|target
 Job 1|  2.8 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|  2.8 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 3|  2.8 Gbps|     0 bps| 8.01|get http://localhost:7333/g/40g
 Job 4|  2.8 Gbps|     0 bps| 8.01|get http://localhost:7333/g/40g
 Job 5|     0 bps|  2.8 Gbps| 8.01|put http://localhost:7333/p 40.0 GB
 Job 6|     0 bps|  2.8 Gbps| 8.01|put http://localhost:7333/p 40.0 GB
 Job 7|     0 bps|  2.8 Gbps| 8.01|put http://localhost:7333/p 40.0 GB
 Job 8|     0 bps|  2.8 Gbps| 8.01|put http://localhost:7333/p 40.0 GB
 Total| 11.3 Gbps| 11.4 Gbps| 8.01|

WSL2 :
$ ./nspeed_linux_amd64 server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  0|  0|  0|  0|  0|  0|, active jobs: 3 / active goroutines: 7
| 83| 82| 73| 60| 68| 41|, active jobs: 3 / active goroutines: 14
| 80| 23| 76| 79| 77| 78|, active jobs: 3 / active goroutines: 14
| 77| 75| 66| 26| 82| 83|, active jobs: 3 / active goroutines: 14
| 46| 84| 83| 37| 83| 82|, active jobs: 3 / active goroutines: 14
| 42| 35| 74| 79| 90| 87|, active jobs: 3 / active goroutines: 14
| 25| 63| 68| 75| 89| 82|, active jobs: 3 / active goroutines: 14
| 84| 37| 50| 71| 73| 88|, active jobs: 3 / active goroutines: 14
| 82| 53| 65| 77| 84| 47|, active jobs: 3 / active goroutines: 15
   Job|      Read|     Write| Time|target
 Job 1| 23.7 Gbps|     0 bps| 8.01|get http://localhost:7333/g/40g
 Job 2|     0 bps| 28.9 Gbps| 8.01|put http://localhost:7333/p 40.0 GB
 Total| 23.7 Gbps| 28.9 Gbps| 8.01|

Linux 5.11.12 :
$ ./nspeed_linux_amd64 server -n 2 get -w 1 -n 1 http://localhost:7333/g/40g put -w 1 -n 1 http://localhost:7333/p 40g
Jobs:
  0 server {Address: "localhost", port: 7333, IPversion: 0, max_size: 40.0 GB, max_request duration: 10000000000, UseTLS: false, maxruns: 2, max life: 0s}
  1 {Command: GET, URL: "http://localhost:7333/g/40g", IPversion: 0, Address: , Instance: 0, timeout: 8s}
  2 {Command: POST, URL: "http://localhost:7333/p", IPversion: 0, Address: , Instance: 0, timeout: 8s,size: 40000000000 (40.0 GB)}
|  1|  0|  2|  2|  3|  3|, active jobs: 3 / active goroutines: 10
| 56| 53| 66| 49| 62| 63|, active jobs: 3 / active goroutines: 14
| 44| 72| 22| 69| 55| 80|, active jobs: 3 / active goroutines: 14
| 79| 40| 58| 59| 49| 63|, active jobs: 3 / active goroutines: 14
| 47| 85| 49| 50| 37| 86|, active jobs: 3 / active goroutines: 14
| 54| 68| 49| 63| 38| 76|, active jobs: 3 / active goroutines: 14
| 56| 65| 55| 56| 66| 53|, active jobs: 3 / active goroutines: 14
| 58| 44| 67| 73| 63| 44|, active jobs: 3 / active goroutines: 14
| 62| 48| 72| 47| 54| 69|, active jobs: 3 / active goroutines: 14
   Job|      Read|     Write| Time|target
 Job 1| 16.3 Gbps|     0 bps| 8.00|get http://localhost:7333/g/40g
 Job 2|     0 bps| 17.2 Gbps| 8.00|put http://localhost:7333/p 40.0 GB
 Total| 16.3 Gbps| 17.2 Gbps| 8.00|
« Modifié: 03 mai 2021 à 04:30:54 par hwti »

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #93 le: 03 mai 2021 à 09:41:46 »
Merci pour tout ces tests. Je vais rajouter des métrics supplémentaires dans la prochaine version. J'ai l'impression que sur Windows, en réception, il y a bien plus d'échange entre le code et l'OS (plus d'appels systèmes).Sans doute une histoire de taille de buffer ou autre mais je ne trouve pas trop ou d'autant que ne c'est pas spécifique a nspeed. iperf3 et curl ont le même souci aussi mais les 2 viennent du monde Linux aussi (peut-être la couche POSIX de Windows n'est pas performante a ce niveau?). Ce n'est pas étonnant donc que WSL soit plus performant.

Mais ca n'explique pas l'écart Intel / Ryzen. J'ai pas de Windows sur Intel et j'ai des bizarrerie de perf en réception sur Windows/Ryzen. Sur un LAN 10Gbps, curl, iperf3 plafonnent a 6Gbps en réception mono session tcp avec un cœur a 100% la ou l'envoi sature le lien 10Gbps avec a peine 40% d'un cœur. J'ai testé avec une carte Intel 82599 et une Aquantia,pareil.

Il faudrait trouver un outil de de transfert (style curl) ou de débit (style iperf) fait pour Windows (pas un port depuis Linux donc), avec code source, qu'on trace les différences au niveau appels systèmes.
« Modifié: 03 mai 2021 à 10:13:30 par kgersen »

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #94 le: 03 mai 2021 à 11:07:58 »
iperf3 passe par Cygwin, mais curl utilise directement winsock.
De mémoire ils étaient plus performants, mais là avec le dernier test on a l'émission et la réception en même temps.

Pour WSL, je parle de WSL2, qui tant qu'on est en localhost est une VM Linux comme une autre (mais il arrive à être plus rapide qu'un Linux natif sur un flux sur le Ryzen, c'est étrange).
WSL1, qui implémente les syscalls dans le kernel Windows, est catastrophique en comparaison : seulement 2Gbps.

La réception sur une vraie interface dépend du contrôle de la modération d'interruptions, qui fait parfois des choses bizarres, et du RSS pour répartir sur les coeurs quand il y a plusieurs flux.
En émission c'est plus simple, car ce sont directement de plus gros blocs de données qui sont envoyés, et découpés par la carte.

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 230
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #95 le: 03 mai 2021 à 13:05:12 »
Pour WSL, je parle de WSL2, qui tant qu'on est en localhost est une VM Linux comme une autre (mais il arrive à être plus rapide qu'un Linux natif sur un flux sur le Ryzen, c'est étrange).
WSL1, qui implémente les syscalls dans le kernel Windows, est catastrophique en comparaison : seulement 2Gbps.

oui on parle bien de WSL= WSL2 pour moi (WSL1 n'existe quasi plus dans mon esprit :) et je n'ai même pas testé avec)

La réception sur une vraie interface dépend du contrôle de la modération d'interruptions, qui fait parfois des choses bizarres, et du RSS pour répartir sur les coeurs quand il y a plusieurs flux.
En émission c'est plus simple, car ce sont directement de plus gros blocs de données qui sont envoyés, et découpés par la carte.

completement d'accord. c'est juste que sur la même machine, Windows fait moins bien que Linux en réception mono-flux et surtout n'arrive pas au max du réseau avec un CPU très performant (Ryzen 9).

Apres c'est peut-être un souci avec les Ryzen et Windows ? Mais le test localhost justement démontre déjà moins de performance en réception entre Windows et Linux a ce niveau.

bref si j'élimine le RSS/cores car un seul flux et si j'élimine aussi carrément la carté réseau (localhost) , en réception et qu'en réception Windows est moins performant. Est-ce propre a Windows ou est-ce le portage sur Windows via Cygwin (iperf) ou MinGW (curl, Go) qui n'est pas optimum ? c'est la ou je m’interroge.