KVM + NFS bajo rendimiento del disco

KVM + NFS bajo rendimiento del disco

Situación: Tenemos un servidor Ubuntu que aloja tres máquinas virtuales que utilizan KVM. Todos los invitados, así como el anfitrión, deben acceder a los mismos archivos en una determinada subcarpeta de /var . Por tanto, la subcarpeta se exporta a través de NFS. Nuestro problema es que el invitado puede leer/escribir en el directorio con solo la mitad de la velocidad del host. La tabla de exportación se ve así

alice@host:~$ cat /etc/exports
/home/videos 192.168.10.0/24(rw,sync,no_root_squash)

donde el host tiene IP 192.168.10.2 y las VM 192.168.10.1{1..3}. /home/videos es un enlace simbólico a esa subcarpeta determinada en /var. En particular, es /var/videos/genvids.

Esta es la línea relevante del fstab de la VM:

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=4096,wsize=4096  0 0

El disco duro tiene una velocidad de datos sostenida de ~155 MB/s, que se verifica mediante las salidas de hdparm -tT y dd:

alice@host:~$ dd if=/home/videos/4987_1359358478.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 2.04579 s, 154 MB/s

Desde dentro de una VM las cosas se ven diferentes:

bob@guest:~$ dd if=/mnt/nfs/4959_3184629068.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 4.60858 s, 68.3 MB/

Ajustar el tamaño del bloque al tamaño de página del sistema de archivos no tuvo ningún efecto satisfactorio:

bob@guest:~$ dd if=/mnt/nfs/4925_1385624470.mp4 of=/dev/null bs=4096 count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 5.77247 s, 71.0 MB/s

Consulté varias páginas sobre el rendimiento de NFS, la más relevantePreguntas frecuentes sobre NFSParte B, y las respectivasLa optimización del rendimientoCómo. La mayoría de las sugerencias no se aplican. Los demás no mejoraron los resultados.Allá son hilos aquíque se ocupan del rendimiento del disco y KVM. Sin embargo, no cubren el aspecto NFS.EsteEl hilo sí lo hace, pero la velocidad de la red no parece ser el factor limitante en nuestro caso.

Para dar una imagen completa, este es el contenido de la pestaña de exportaciones con los enlaces simbólicos resueltos y todas las opciones de exportación activas mostradas:

alice@host:~$ cat /var/lib/nfs/etab
/var/videos/genvids 192.168.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,
no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,
anonuid=65534,anongid=65534)

Lo que también me molesta en este contexto, y lo que no entiendo, es la salida del archivo procfile del nfsd:

alice@host:~$ cat /proc/net/rpc/nfsd
...
th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
...

Para la tercera columna y más allá, habría esperado valores distintos de ceros después de leer desde el disco dentro de las máquinas virtuales. Sin embargo, nfsstat me dice que efectivamente hubo operaciones de lectura:

alice@host:~$ nfsstat
...
Server nfs v3:
null         getattr      ...
9     0%     15106     3% ...
read         write        ...
411971   95% 118       0% ...
...

Entonces, el tema es bastante complejo y me gustaría saber dónde más buscar o si existe una solución fácil para esto.

Respuesta1

Resulta que el problema fue más fácil de resolver de lo esperado. Afinando eltamañoytamañoLa opción en el fstab de la VM funcionó. La línea respectiva ahora es

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=32768,wsize=32768  0 0

Para mí esto no era obvio ya que esperaba el mejor rendimiento si los valores detamañoytamañocumplan con el tamaño de bloque del disco (4096) y no sean mayores que la MTU de la NIC (9000). Al parecer, esta suposición era errónea.

Es de destacar que la velocidad de datos sostenida exacta del disco depende del propio archivo: para dos archivos similares de tamaño 9 GB observé velocidades entre 155 MB/s (archivo 1) y 140 MB/s (archivo 2). Por lo tanto, una velocidad de datos reducida con un archivo aún puede resultar en una velocidad de datos completa con otro archivo.

información relacionada