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

0 Membres et 1 Invité sur ce sujet

hwti

  • Client Orange Fibre
  • *
  • Messages: 1 586
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #96 le: 03 mai 2021 à 13:44:46 »
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)
C'est important de ne pas l'oublier, parce que si certaines personnes veulent tester avec WSL, elles risquent de se retrouver avec WSL1 : ma MSI X570 Tomahawk avait la virtualisation désactivée par défault !

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.
Le test avec 1 flux semble plus compliqué que 1 thread get + 1 thread put + 1 ou 2 threads server (ou alors les OS déplacent les threads d'un coeur à l'autre).
Curl n'utilise pas nécessairement MinGW, il est possible de compiler avec Visual C++.
L'API est WinSock, mais peut-être qu'il existe des extensions qui seraient utiles pour un test de débit (par exemple TransmitFile en émission) et qui ne sont pas exploitées, ou un paramétrage non optimal.

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #97 le: 03 mai 2021 à 14:16:39 »
Curl n'utilise pas nécessairement MinGW, il est possible de compiler avec Visual C++.
L'API est WinSock, mais peut-être qu'il existe des extensions qui seraient utiles pour un test de débit (par exemple TransmitFile en émission) et qui ne sont pas exploitées, ou un paramétrage non optimal.

oui possible. la distrib que tout le monde utilise ( https://curl.se/windows/ ) est compilée avec mingw.

Apres toutes ces 'couches" intermédiaires appellent WinSock de toute façon. cf en Go: https://golang.org/src/net/fd_windows.go (c'est bien WSARecv qui est utilisé).

Mais je ne vais pas traîner plus la dessus: tant que nspeed est au meme niveau que curl et iperf3,  ca me suffit pour le moment.

hwti

  • Client Orange Fibre
  • *
  • Messages: 1 586
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #98 le: 03 mai 2021 à 20:46:16 »
Mais je ne vais pas traîner plus la dessus: tant que nspeed est au meme niveau que curl et iperf3,  ca me suffit pour le moment.
J'ai un léger écart, mais ce que je vois c'est surtout que Windows semble très incohérent.

Sur le 3500X avec un serveur nspeed local :
 - un client nspeed (dans le même processus, ou séparé) donne entre 9,2Gbps et 11,2Gbps
 - le curl 7.55.1 intégré à Windows donne 1110Mo/s, donc à priori un peu moins (à voir, en fonction de ce qui est compté par npeed et curl)
 - le curl 7.76.1 officiel donne 15xx-16xxMo/s, soit un peu plus

Sur le 3930K avec un serveur nspeed local :
 - un client nspeed (dans le même processus, ou séparé) donne environ 6Gbps (soit la moitié de ce que j'avais hier  :o)
 - le curl 7.76.1 officiel donne 800Mo/s à 1000Mo/s, c'est assez variable

Dans le test combiné réception/envoi, j'avais 12.0 Gbps/8.2 Gbps, et là j'ai fait  6.5 Gbps/10.8 Gbps puis 7.0 Gbps/12.5 Gbps.
Peut-être que le get plus lent permet un put plus rapide.

J'ai l'impression qu'il essaye de garder nspeed et curl sur le même coeur, jusqu'à ce que ça sature, d'où un comportement un peu étrange.
Peut-être qu'il faudrait forcer l'affinité.
« Modifié: 03 mai 2021 à 22:01:14 par hwti »

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #99 le: 03 mai 2021 à 21:24:28 »
J'ai un léger écart, mais ce que je vois c'est surtout que Windows semble très incohérent.

Sur le 3500X avec un serveur nspeed local :
 - un client nspeed (dans le même processus, ou séparé) donne entre 9,2Gbps et 11,2Gbps
 - le curl 7.55.1 intégré à Windows donne 1110Mo/s, donc à priori un peu moins (à voir, en fonction de ce qui est compté par npeed et curl)
 - le curl 7.76.1 officiel donne 15xx-16xxMo/s, soit un peu plus

Sur le 3930K avec un serveur nspeed local :
 - un client nspeed (dans le même processus, ou séparé) donne environ 6Gbps (soit la moitié de ce que j'avais hier  :o)
 - le curl 7.76.1 officiel donne 800Mo/s à 1000Mo/s, c'est assez variable

J'ai l'impression qu'il essaye de garder nspeed et curl sur le même coeur, jusqu'à ce que ça sature, d'où un comportement un peu étrange.
Peut-être qu'il faudrait forcer l'affinité.

On peut sous cmd utiliser "start /affinity X .\nspeed server" pour fixer l'affinité du server. puis dans une autre fenetre curl et nspeed get avec une autre affinité.( https://docs.microsoft.com/en-us/archive/blogs/santhoshonline/how-to-launch-a-process-with-cpu-affinity-set )
sous Linux y'a taskset.

Je sais qu'iperf3 a un option d'affinité. Je vais voir si c'est compliqué a rajouter en Go mais pas avant la 1.0.

hwti

  • Client Orange Fibre
  • *
  • Messages: 1 586
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #100 le: 03 mai 2021 à 21:49:16 »
L'affinité n'a pas l'air de changer grand chose au final, sauf bien sûr si je force les deux processus a s'exécuter sur le même cœur logique ou physique, où là c'est bien plus lent.

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #101 le: 03 mai 2021 à 22:00:33 »
L'affinité n'a pas l'air de changer grand chose au final, sauf bien sûr si je force les deux processus a s'exécuter sur le même cœur logique ou physique, où là c'est bien plus lent.

ok bon a savoir. merci.

hwti

  • Client Orange Fibre
  • *
  • Messages: 1 586
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #102 le: 03 mai 2021 à 22:56:09 »
iperf 3.9 Windows, en local sur le 3930K, TCP : 7Gbps à 9Gpbs, parfois 11Gps
C'est donc moins que les 12Gbps de nspeed hier, mais bien mieux que toutes les valeurs d'aujourd'hui.
Certes, du TCP pur c'est peut-être un peu plus simple que du HTTP, mais je ne sais pas si ça justifie un tel écart.

Sur le 3500X, c'est assez variable, mais potentiellement beaucoup plus rapide que nspeed.
Je lance "iperf3.exe -s", et :
 - "iperf3.exe  -c 127.0.0.1 -R" : 16Gbps à 23Gbps
 - "iperf3.exe  -c 127.0.0.1 -R -w 32M" : jusqu'à 40Gbps  :o (mais parfois seulement un peu plus de 20Gbps)
 - "iperf3.exe  -c 127.0.0.1 -R -w 32M -l 1M" : j'alterne entre un test à 26-28Gbps, et un test à 44-45Gbps  ???
 - "iperf3.exe  -c 127.0.0.1 -w 32M" : parfois un début à 40Gbps pendant quelques secondes, puis retour à 10Gbps (on ne peut pas mettre l'option "-w" côté serveur, j'ai l'impression que ça manque)

Ce n'est pas mieux avec plusieurs flux, parce que iperf3 est limité par le fait de n'utiliser qu'un seul thread.
« Modifié: 03 mai 2021 à 23:41:33 par hwti »

hwti

  • Client Orange Fibre
  • *
  • Messages: 1 586
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #103 le: 03 mai 2021 à 23:41:04 »
https://github.com/microsoft/ethr
Je ne connaissais pas, c'est en Go comme nspeed.

Dans le mode par défaut (TCP) sous Windows sur le 3500X :
 - un peu plus de 40Gbps avec "-l 128K" ou "-l 256K" (mais pas plus), et "-r" ou pas
 - 60Gbps sur deux flux, dans le sens client vers serveur ("-l 256K -n 2")
 - 80Gpbs sur deux flux, dans le sens serveur vers client ("-r -l 256K -n 2")
Rajouter plus de flux n'aide pas.

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #104 le: 04 mai 2021 à 13:19:44 »
https://github.com/microsoft/ethr
Je ne connaissais pas, c'est en Go comme nspeed.

Dans le mode par défaut (TCP) sous Windows sur le 3500X :
 - un peu plus de 40Gbps avec "-l 128K" ou "-l 256K" (mais pas plus), et "-r" ou pas
 - 60Gbps sur deux flux, dans le sens client vers serveur ("-l 256K -n 2")
 - 80Gpbs sur deux flux, dans le sens serveur vers client ("-r -l 256K -n 2")
Rajouter plus de flux n'aide pas.

Pas vu non plus pourtant j'ai cherché longtemps... c'est peut-être ouvert en public depuis peu.
pas mal. y'a peut-être du code a s'inspiré de et ca donne un bon point de comparaison.

en tout cas le code "iperf like" d'ethr peut facilement s'intégrer dans nspeed.

daleksek

  • Client Free Pro
  • *
  • Messages: 744
NSpeed: nouveau projet de mesure de débit
« Réponse #105 le: 04 mai 2021 à 13:27:23 »
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 )
Problème réglé, ça venait du docker DNS qui ne communiquait pas avec le serveur, et mis en DNS primaire.
Donc si le DNS primaire tombe, le secondaire ne fonctonne pas avec le speedtest

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #106 le: 10 mai 2021 à 20:11:28 »
peu de progrès vu les jours fériés/vacances et parce que j'ai pas mal décortiqué ethr: pas grand chose a en récupérer (sauf peut-être la mesure de latence) et le projet a plutôt l'air figé.
pour le module débit "a la iperf" je maintient donc mon choix initial (goben) mais de toute façon ce n'est pas pour de suite.

Je constate des débits faiblards en chiffré (https). La prochaine version, pour mercredi en principe, inclura un certificat autosigné (avec mkcert) pour faire des tests https plus facilement.
« Modifié: 11 mai 2021 à 11:03:13 par kgersen »

kgersen

  • Modérateur
  • Client Free Pro
  • *
  • Messages: 7 919
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #107 le: 18 mai 2021 à 16:28:52 »
v0.7 dispo. https://dl.nspeed.app/nspeed-client/v0.7/

un 'breaking change': les url /p et /g ont été supprimés car pas vraiment utiles. Tout ce fait avec '/' maintentant (/10g par exemple) et upload juste sur /

https://github.com/nspeed-app/nspeed/blob/main/CHANGELOG.md

# v0.7
## general
- global flags:
  - `-self`: activate self-signed certificate for all clients (get & put)
  - `-color` : use colors in output (by default there will be no color at all)
  - `-cpu` : display cpu usage (every second). `-debug` & `-verbose` don't display cpu usage anymore
- news debug metrics: `ReadCount`,`WriteCount` (how many OS level Read & Write calls were performed) and `AverageReadSize`,`AverageWriteSize` (total volume/count)
- fix some usage messages
## server
- `-self` flag: listen in https mode using a self-signed certificate
- bigger buffer when sending
- paths in url for upload (`/p`) & download (`/g`) removed. just use the root path `/` for both (see the updated README.md examples)
- download paths can now have an extension. For instance `/10G.iso`. The Content-Type header will be set accordingly to https://golang.org/pkg/mime/#TypeByExtension.
- query parameters:
  - `ct` query parameter added: set the returned content-type header, for instance: http://localhost:7333/1k.jpg?ct=text/plain will return a content-type of `text/plain` instead of `image/jpeg` ("ct" has precedence oever the extension. With no precedence or `ct` parameter, the default content-type is `application/octet-stream` ).
  - `chunk_size` query parameter limited to 1 MiB (it's allocated once, this will be tuned later)
  - `seed` query parameter removed (this will return later)
## client
- disable compression
- dns report is back in -verbose mode
- `-self` : same as global '-self' flag
## known issues / caveats
- the self-signed cert only work for 'localhost, 127.0.0.1,::1'. Next vesion will allow test https over a LAN between trusted machines, meanwhile use `-k` flag with nspeed or curl.

j'ai de gros souci de performance en https:

https:
./nspeed_linux_amd64 server -n 1 -self get -w 1 -self https://localhost:7333/1g
     Job|     Read| Write| Time|target
   Job 1| 4.5 Gbps| 0 bps| 1.79|get https://localhost:7333/1g
 Average| 4.5 Gbps| 0 bps| 1.79|
http:
./nspeed_linux_amd64 server -n 1 get -w 1 http://localhost:7333/1g
     Job|      Read| Write| Time|target
   Job 1| 36.1 Gbps| 0 bps| 0.22|get http://localhost:7333/1g
 Average| 36.1 Gbps| 0 bps| 0.22|