[NFS] performances médiocres

Bonsoir à toutes et à tous,

La config du réseau est la suivante (explications un peu succincte, car il y a des postes en plus. Mais pour le problème, il y a uniquement des 2 postes qui sont utilisés : les autres étant éteints) :
pfsense (parre-feu et serveur dhcp) et après :

  • un NAS (sous Debian, adresses IP : 192.168.2.20/21) avec un switch A
  • un poste client (sous archlinux, adresses IP : 192.168.2.40/41) avec un switch B

Les 2 postes ont chacuns 2 prises réseaux.

Je trouve que les performances NFS sont un peu faibles (de l’ordre de 30 Mo/s).

Ne connaissant pas de soft pour tester NFS, je passe par iperf.
Ça donne des perf brutes, mais ça donne déjà un ordre d’idées… Si les débits sont de 4 Mbits/sec, ce n’est pas étonnant que NFS rame.

Donc, les résultats sont les suivants

Depuis le poste client (le poste sous Archlinux) :

$ iperf -c 192.168.2.21 -u -b 10G
Client connecting to 192.168.2.21, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1.10 us (kalman adjust)
UDP buffer size:  208 KByte (default)
[  3] local 192.168.2.40 port 35232 connected with 192.168.2.21 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.11 GBytes   956 Mbits/sec
[  3] Sent 812791 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  1.11 GBytes   953 Mbits/sec   0.000 ms 2145860372/2146670857 (1e+02%)
$ iperf -c 192.168.2.20 -u -b 10G
Client connecting to 192.168.2.20, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1.10 us (kalman adjust)
UDP buffer size:  208 KByte (default)
[  3] local 192.168.2.40 port 40348 connected with 192.168.2.20 port 5001
[  3] WARNING: did not receive ack of last datagram after 10 tries.
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.11 GBytes   956 Mbits/sec
[  3] Sent 812800 datagrams

Depuis le serveur (le poste sous Debian) :

$ iperf -su 192.168.2.41
iperf: ignoring extra argument -- 192.168.2.41
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
[  3] local 192.168.2.21 port 5001 connected with 192.168.2.40 port 51691
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-10.0 sec  1.11 GBytes   954 Mbits/sec   0.011 ms 2145859953/2146670842 (1e+02%)
quit
$ iperf -su 192.168.2.40
iperf: ignoring extra argument -- 192.168.2.40
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
[  3] local 192.168.2.21 port 5001 connected with 192.168.2.40 port 50843
[  4] local 192.168.2.21 port 5001 connected with 192.168.2.40 port 33307
quit
^CWaiting for server threads to complete. Interrupt again to force quit.
quit
^C^CConnection to 192.168.2.20 closed by remote host.
Connection to 192.168.2.20 closed.

Le premier point positif, c’est que le réseau est en gigabit.

Ce qui est étrange, c’est le retour de iperf depuis le serveur.
Pour le couple 192.168.2.21-192.168.2.41, pour quitter iperf (depuis le serveur) ça va.
Mais concernant le couple 192.168.2.20-192.168.2.40, pour quitter iperf (depuis le serveur), je suis obliger de tuer la commande : la combinaison Ctrl + c ne fonctionne pas, ni la commande quit.

D’ailleurs, on le voit au niveau de retour de la commande :

^CWaiting for server threads to complete. Interrupt again to force quit. 
quit
^C^CConnection to 192.168.2.20 closed by remote host.
Connection to 192.168.2.20 closed.
Connection closed

normal j’ai tué directement l’accès ssh de la commande.

Est-ce que ça signifie que la connexion sur le 192.168.2.20 déconne ?
Ce qui expliquerai pourquoi les débit NFS ne sont pas très performants. Le fstab monte les disques dessus.

Je profite de la même occasion si vous connaissez une application permettant de tester les performances NFS (hormis le fait de copier beaucoup de données et de chronométrer le temps…)

Je vous remercie pour les réponses.

Bonne soirée.

Bonjour,
J’ai vu cela sur https://doc.ubuntu-fr.org/nfs, mais tu connaissais sûrement
Optimisation possible:

  • Si vous utilisez un réseau Gigabit ethernet (les dernier switchs, routeurs, box), vous pouvez ajouter en option de montage: ,rsize=16384,wsize=16384

Bonjour Albert,

Je te remercie pour ta réponse.

Exact, je connais cette optimisation. Je suis passé directement par rsize et wsize à 32768 sur les postes clients.
Sachant que l’incrémentation s’effectue par 1024 jusqu’à un maximum de 65536.

J’ai également mis le serveur ntp sur le même site de mise à jour entre les différents postes (Configurer un client NFS sous CentOS 7, et Comment garder synchrones les horloges d’un réseau local)

Je vais voir en modifiant la taille de rsize et wsize et te tiens informé.

Bon dimanche.

J’ai effectuer plusieurs essais (8192,16384,24576,32768,40960,49152,57344,65536).

Grosso modo, je ne voit que très légèrement une différence… Avec une petite préférence pour une valeur à 65536.

Mais bon, les essais sont effectués sans chrono. J’ai juste pris un fichier de taille identique, et j’ai vu comment le système répondait.

Bon dimanche.

1 J'aime