Почему скорость между Solaris и VMware составляет всего 1 Гбит/с?

Почему скорость между Solaris и VMware составляет всего 1 Гбит/с?

У меня есть хост 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Автору удалось добиться гораздо большей производительности после некоторой настройки, но повторять все шаги здесь слишком сложно.

Связанный контент