Я управляю vagrant
настройкой для наших разработчиков, работающих под управлением OSX, для управления системами VirtualBox для разработки.
Для поддержки inotify
внутри машины linux мы отказались от обычного метода совместного использования каталогов с VirtualBox: вместо этого машина Virtualbox предоставляет общий ресурс NFS, который монтируется в OSX.
Git (и связанные инструменты, такие как sourcetree) запускаются в OSX, в общем каталоге. Производительность очень низкая: на запуск часто уходит до 5 секунд git status
. Клонирование небольшого хранилища в подключенный диск NFS может занять пару минут (5-10 секунд на локальном диске).
Очевидно, что производительность NFS будет хуже, чем прямая запись на локальный SSD, но NFS работает только через интерфейс виртуальной частной сети с Virtualbox.
Я провел пару тестов. Первый:
dd if=/dev/zero of=test bs=16 count=16384
Каждый результат основан на 100 образцах.
# 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
Второй тест:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
Очевидно, что некоторая задержка неизбежна, но это достаточно плохо, что делает некоторые простые задачи довольно болезненными.
Владелец тома работает под управлением Ubuntu 12.10 (Quantal) с настройками по умолчанию. Система монтирования тома работает под управлением OSX Mavericks.
На данный момент основное соединение nfsd работает по протоколу UDP, что кажется идеальным для виртуального соединения. Я не уверен, работают ли statsd
и lockd
работают по TCP и UDP.
Я пробовал монтировать с async
флагом и с rwsize
бустером, и это мало что изменило.
Какие есть возможности для серьезного улучшения производительности NFS в этой среде?
git status
с гостевой машины занимает около 5 секунд. На хост-машине, которая является OSX, тихо быстро. Моя установка - последняя версия vagrant, vb, общий каталог NFS. Как вы меняли интерфейс, я пытался это сделать, но так и не понял. Кроме того, это стало более заметным после некоторого обновления. У меня не было этой проблемы в начале
Am79C973
вместоvirtio
. Урок здесь состоит в том, чтобы внимательнее присмотреться к тому, что делали системы: в определенный момент узким местом кажется производительность виртуальной сети.