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?
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 principio
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.