Источник: vmxnet3 and MTU sizes


После тестирования производительности сети между виртуальными машинами, которые находятся на разных хостах и соединены между собой физической сетью 10GbE, и виртуальными машинами на одном хосте, у меня спросили: "был ли включен Jumbo Frames?". Jumbo Frames включен не был, так как я вообще не думал, что его включение значительно повлияет на конечный результат. Но, как показала практика, я был сильно не прав. В тесте, приведенном ниже, видно, что существует большая разница в значениях пропускной способности между ВМ на одном хосте и ВМ на разных хостах при включенном Jumbo Frames.


Приступим. В своей виртуальной инфраструктуре я изменил значение MTU и, затем, перезапустил тесты. Тест между ВМ на разных хостах через 10GbE, как и ожидалось, оказался немного лучше - 9.75Gbit против 9.05Gbit при выключенном Jumbo Frames. Тест между виртуальными машинами на одном хосте показал намного меньшую пропускную способность. Результат был на 4.5Gbit меньше по сравнению с результатом теста при MTU, равном 1500 байт (значение по умолчанию).


Подобное поведение мне показалось странным. В Twitter прозвучала идея о том, что код VMware лучше оптимизирован для дефолтного размера MTU. Чтобы это проверить, я написал небольшой скрипт, который автоматически устанавливает различные значения MTU и запускает ipref тест для измерения пропускной способности:

MTU graph.png

Как можно видеть выше, лучший результат в тестах был достигнут при MTU, равном 1500 байт, и это, в свою очередь, означает, что код VMware, в данном случае, лучше оптимизирован именно для дефолтного значения MTU.