Administro una vagrant
configuración para nuestros desarrolladores que ejecutan OSX para administrar los sistemas VirtualBox para el desarrollo.
Para admitir inotify
dentro de la máquina Linux, evitamos el método habitual de compartir directorios con VirtualBox: en cambio, la máquina Virtualbox expone un recurso compartido NFS, que está montado en OSX.
Git (y herramientas relacionadas como sourcetree) se ejecutan en OSX, en el directorio compartido. El rendimiento de esto es extremadamente pobre: a menudo tarda hasta 5 segundos en ejecutarse git status
. La clonación de un pequeño repositorio en la unidad NFS montada puede llevar un par de minutos (5-10 segundos en una unidad local).
Obviamente, el rendimiento de NFS será peor que escribir directamente en un SSD local, pero el NFS solo se ejecuta en una interfaz de red privada virtual con Virtualbox.
Ejecuté un par de puntos de referencia. El primero:
dd if=/dev/zero of=test bs=16 count=16384
Cada resultado se basa en 100 muestras.
# local drive
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.990 1.000 1.020 1.021 1.030 1.130
# on the shared NFS drive
Min. 1st Qu. Median Mean 3rd Qu. Max.
6.000 6.278 6.390 6.482 6.570 7.630
# inside the VirtualBox instance
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.3600 0.4800 0.5150 0.5552 0.5400 1.4500
El segundo punto de referencia:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
Es evidente que cierta latencia es inevitable, pero esto es lo suficientemente malo como para que algunas tareas simples sean bastante dolorosas.
El propietario del volumen ejecuta Ubuntu 12.10 (Quantal), con la configuración predeterminada. El sistema que monta el volumen ejecuta OSX Mavericks.
En este momento, la conexión principal de nfsd se ejecuta a través de UDP, lo que parece ideal en una conexión virtual. No estoy seguro de si statsd
y lockd
se están ejecutando a través de TCP y UDP.
Traté de montar con la async
bandera, y con rwsize
impulso, y no hizo mucha diferencia.
¿Qué oportunidades hay para mejorar seriamente el rendimiento de NFS en este entorno?
Am79C973
lugar devirtio
. La lección aquí es haber observado más de cerca lo que estaban haciendo los sistemas: hasta cierto punto, el cuello de botella parece ser el rendimiento de la red virtual.git status
desde la máquina invitada tarda unos 5 segundos. En la máquina host que es OSX, es silenciosa rápidamente. Mi configuración es la última vagabunda, vb, directorio compartido NFS. ¿Cómo cambiaste la interfaz? Intenté hacerlo, pero no lo he resuelto. Además, esto se hizo más notable después de alguna actualización. No tuve este problema al principioRespuestas:
Intente usar esta configuración de Git, que hace una gran diferencia de rendimiento en los recursos compartidos de NFS:
fuente
Este artículo contiene algunos consejos útiles para ajustar el rendimiento de NFS.
Particularmente el uso de
nfsstat -rc
para verificar cuántos 'reintentos de retransmisión' habían estado sucediendo. Si hay demasiados reintentos, eso significa que elnfsd
demonio se quedó sin hilos para atender las solicitudes de los clientes, y necesita aumentar el número de hilos disponibles.Además, asegúrese de que su instancia de VirtualBox no esté bien aprovisionada; El almacenamiento de aprovisionamiento delgado en VirtualBox es un éxito significativo cuando se producen escrituras.
fuente
Otra respuesta ya menciona verificar las estadísticas de NFS.
Puede valer la pena probar diferentes configuraciones nic (virtuales) para VirtualBox vm: diferentes conjuntos de chips y modos virtuales (modo puente en lugar de nat).
Además, si se utilizó NFSv4, puede valer la pena probar NFSv3 en su lugar. Esas versiones son muy diferentes y esto puede hacer una diferencia significativa en el rendimiento.
fuente