7 votos

Mejorar el rendimiento del cliente NFS

Tengo mi Macbook Pro (MacOS Mojave) conectándose a un recurso NFS en una máquina Linux directamente conectada a través de Thunderbolt con marcos jumbo. Probando con iperf3, puedo alcanzar ~14 Gbps (~1.8 GBps) a través de la conexión, por lo que espero que la red no sea el cuello de botella.

Aquí está el /etc/exports:

/srv/share         169.254.0.*(rw,sync,insecure,rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)

Haciendo algunas pruebas simples con dd, aquí es lo que veo:

Directo al disco en el servidor (~800MB/s)

~$ dd if=/dev/zero of=/tmp/testfile bs=5120 count=100000
100000+0 registros dentro
100000+0 registros fuera
512000000 bytes (512 MB, 488 MiB) copiados, 0.62477 s, 820 MB/s

NFS desde el servidor (~660 MB/s)

Conecté un cliente en el servidor para ver cómo se desempeñaba con un cliente Linux y eliminando la red de la ecuación.

$ sudo mount -t nfs -o rw 169.254.0.1:/srv/share /tmp/share
$ nfsstat -m
/tmp/share desde 169.254.0.1:/srv/share
 Flags: rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=169.254.0.1,local_lock=none,addr=169.254.0.1
$ dd if=/dev/zero of=/tmp/share/test_file bs=5120 count=100000
100000+0 registros dentro
100000+0 registros fuera
512000000 bytes (512 MB, 488 MiB) copiados, 0.76516 s, 669 MB/s

Desde Macbook Pro a través de Thunderbolt (~150MBps)

Intenté emular la conexión de cliente NFS por defecto desde Linux, pero el cliente Mac no soporta las mismas opciones. He probado vers=3 e incluso async, pero nunca logro que sea mucho más rápido que esto.

$ sudo mount -t nfs -o rw,vers=4,rsize=1048576,wsize=1048576,hard,proto=tcp,timeo=600,retrans=2,sec=sys 169.254.0.1:/srv/share /srv/share
$ nfsstat -m
/srv/share desde 169.254.0.1:/srv/share
  -- Opciones de montaje originales:
     Banderas generales de montaje: 0x0
     Parámetros NFS: vers=4,proto=tcp,hard,rsize=1048576,wsize=1048576,timeo=600,retrans=2,sec=sys
     Ubicaciones del sistema de archivo:
       /srv/share @ 169.254.0.1 (169.254.0.1)
  -- Parámetros actuales de montaje:
     Banderas generales de montaje: 0x4000000 multilabel
     Parámetros NFS: vers=4.0,proto=tcp,port=2049,hard,nointr,noresvport,callback,negnamecache,nonamedattr,noacl,noaclonly,locks,noquota,rsize=65536,wsize=65536,readahead=16,dsize=32768,nordirplus,nodumbtimr,timeo=600,maxgroups=16,acregmin=5,acregmax=60,acdirmin=5,acdirmax=60,nomutejukebox,noephemeral,nonfc,sec=sys
     Ubicaciones del sistema de archivo:
       /srv/share @ 169.254.0.1 (169.254.0.1)
     Banderas de estado: 0x0
$ dd if=/dev/zero of=/srv/share/testfile bs=5120 count=10000
10000+0 registros dentro
10000+0 registros fuera
51200000 bytes transferidos en 0.337533 segundos (151688873 bytes/s)

Dado lo rápido que es la red, parece que debería poder obtener velocidades 3-4 veces más rápidas de lo que veo desde el Mac. ¿Cómo puedo mejorar el rendimiento?

1voto

Peter Puntos 124

Estaba teniendo muchos problemas tanto con la velocidad de transferencia hacia/desde una compartición NFS, como con un rendimiento extremadamente lento al atravesar directorios; después de montar una compartición, listar un directorio que contiene solo 5 elementos tardaba varios segundos..
Acceder a la misma compartición a través de smb era mucho más rápido..

Finalmente encontré una 'solución' que me ayudó después de buscar aquí, aquí y aquí:

Descubra qué versión del protocolo NFS está en uso en el servidor; en mi caso, es la 3..

Ahora, en el archivo:

/etc/nfs.conf

agregue la siguiente línea:

nfs.client.mount.options=nolocks,locallocks,vers=3

Guarde y reinicie..
El rendimiento de NFS debería mejorar considerablemente..

Tomando nota de que debes cambiar 3 en la línea anterior por la versión del protocolo que esté utilizando tu servidor NFS..

EDIT: acabo de cambiar el número de versión (vers=3) en la respuesta de 4.1 a 3.. Ambos parecen funcionar bien para mí, pero se ha sugerido en los comentarios que 4.1 no es realmente una opción válida ya que el cliente NFS de macOS va hasta 4.. Una última nota, usando vers=4 rompe mis montajes, pero puede variar en diferentes casos..

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X