У меня есть хост VMWare ESXi 5.1.0 (сборка 1065491), на котором запущенаSolaris (ОткрытыйИндиана)VM в качестве гостя. Я создал частный vSwitch для трафика NFS между ESXi и Solaris. На виртуальной машине Solaris установлены инструменты VMware и адаптер VMXnet3 ( vmxnet3s0
) на частном vSwitch.
Чтение из файла непосредственно на виртуальной машине Solaris с использованием dd
Я получаю скорость до 4,5 ГБ/сек (44,8 гигабит/сек) при чтении файла (если он был кэширован моим ARC/L2ARC)
При чтении того же файла по NFS из VMware я могу получить максимум только 0,163 ГБ/сек (1,131 гигабит/сек)
Почему такая разница? Я ожидаю некоторые накладные расходы из-за TCP и NFS, а также виртуальных сетей, но эту разницу я бы не назвалнакладные расходы, похоже, что-то не так.
Процессор на виртуальной машине Solaris никогда не используется более чем на 20%. Средние показатели нагрузки низкие. На хосте много свободной оперативной памяти (не подкачивается), а загрузка процессора на хосте значительно ниже 50% (обычно около 33%). На гостевой виртуальной машине dladm show-linkprop vmxnet3s0
скорость составляет 10000 (10 Гбит/с), а MTU — 9000 (Jumbo Frames включены)
В качестве теста я попробовал использовать «стандартную» виртуальную сетевую карту E1000 ( e1000g0
) и смог включить большие кадры (9000 MTU), однако при чтении того же файла по NFS из VMware я смог получить максимум только 0,124 ГБ/с (0,992 гигабит/с), что вполне логично, поскольку скорость соединения на E1000 составляет всего 1000 мегабит.
Почему я вижу скорость передачи данных всего около 1 гигабита в секунду между VMware ESXi 5.1 и моей виртуальной машиной OpenIndiana Solaris?
ОБНОВЛЯТЬ:После применения настройки производительности, рекомендованной VFrontDe в его ответе, я теперь получаю впечатляющие 8-9 Гбит/с между Solaris и виртуальной машиной Linux с адаптером vmxnet3
. Я получаю ~6 Гбит/с при чтении кэшированного файла через NFS под Linux:
root@iperf:/mnt/public/ISO# dd if=Test.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
6170824704 bytes (6.2 GB) copied, 8.44985 s, 730 MB/s
Однако при чтении того же файла на хосте VMware ESXi я получаю ужасные 1,91 Гбит/с:
/vmfs/volumes/3d77318f-82c7901a/ISO # time dd if=Windows\ 7\ Home\ Premium.cdr of=/dev/null bs=1024k
5884+1 records in
5884+1 records out
real 0m 27.85s
user 0m 17.32s
sys 0m 0.00s
6,2 ГБ за 27,85 секунд — это 1,91 Гбит/с..
Что заставляет Vmware ESXi vmknic
работать так плохо, хотя vmxnet3
все vmxnet3
может быть гораздо лучше?
решение1
Похоже, что есть некоторые проблемы и ошибки с адаптером vmxnet3 для Solaris. Пожалуйста, взгляните на этот очень подробный пост:http://blog.cyberexplorer.me/2013/03/improving-vm-to-vm-network-throughput.htmlАвтору удалось добиться гораздо большей производительности после некоторой настройки, но повторять все шаги здесь слишком сложно.