Je gère une vagrant
configuration pour nos développeurs exécutant OSX pour gérer les systèmes VirtualBox pour le développement.
Afin de prendre en charge l' inotify
intérieur de la machine Linux, nous évitons la méthode habituelle de partage de répertoires avec VirtualBox: à la place, la machine Virtualbox expose un partage NFS, qui est monté dans OSX.
Git (et les outils associés comme sourcetree) sont exécutés dans OSX, sur le répertoire partagé. Les performances sont extrêmement médiocres: il faut souvent jusqu'à 5 secondes pour fonctionner git status
. Le clonage d'un petit référentiel dans le lecteur NFS monté peut prendre quelques minutes (5 à 10 secondes sur un lecteur local).
Évidemment, les performances NFS seront pires que d'écrire directement sur un SSD local, mais le NFS ne fait que fonctionner sur une interface de réseau privé virtuel avec Virtualbox.
J'ai couru quelques repères. La première:
dd if=/dev/zero of=test bs=16 count=16384
Chaque résultat est basé sur 100 échantillons.
# 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
Le deuxième repère:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
De toute évidence, une certaine latence est inévitable, mais cela est suffisamment grave pour rendre certaines tâches simples assez douloureuses.
Le propriétaire du volume exécute Ubuntu 12.10 (Quantal), avec les paramètres par défaut. Le système qui monte le volume exécute OSX Mavericks.
Pour le moment, la connexion nfsd principale fonctionne sur UDP, ce qui semble idéal sur une connexion virtuelle. Je ne sais pas si statsd
et lockd
fonctionnent sur TCP et UDP.
J'ai essayé de monter avec le async
drapeau, et avec rwsize
boosté, et cela n'a fait aucune différence.
Quelles sont les possibilités d'améliorer sérieusement les performances de NFS dans cet environnement?
Am79C973
au lieu devirtio
. La leçon ici est d'avoir examiné de plus près ce que faisaient les systèmes: jusqu'à un certain point, le goulot d'étranglement semble être les performances du réseau virtuel.git status
partir de la machine invitée prend environ 5 secondes. Sur la machine hôte qui est OSX, elle est silencieuse et rapide. Ma configuration est le dernier répertoire vagabond, vb, NFS partagé. Comment avez-vous changé l'interface, j'ai essayé de le faire mais je n'ai pas compris cela. En outre, cela est devenu plus perceptible après une mise à jour. Je n'avais pas ce problème au débutRéponses:
Essayez d'utiliser ce paramètre Git, qui fait une énorme différence de performances sur les partages NFS:
la source
Cet article contient quelques conseils utiles pour régler les performances NFS.
En particulier, l'utilisation de
nfsstat -rc
pour vérifier combien de «nouvelles tentatives de retransmission» avaient eu lieu. S'il y a trop de tentatives, cela signifie que lenfsd
démon a manqué de threads pour répondre aux demandes des clients, et vous devez augmenter le nombre de threads disponibles.Assurez-vous également que votre instance VirtualBox n'est pas provisionnée de manière fine; le stockage provisionné fin sur VirtualBox est un impact significatif sur les performances lors des écritures.
la source
Une autre réponse mentionne déjà la vérification des statistiques NFS.
Il peut être utile d'essayer différentes configurations nic (virtuelles) pour VirtualBox vm - différents chipsets et modes virtuels (mode ponté au lieu de nat).
De plus, si NFSv4 a été utilisé, il peut être préférable d'essayer NFSv3 à la place. Ces versions sont très différentes et cela peut faire une différence significative dans les performances.
la source