Как стать автором
Обновить

Использование технологий от Intel для передачи сетевого трафика из физического адаптера в виртуальный

Время на прочтение3 мин
Количество просмотров7.1K
Всего голосов 13: ↑13 и ↓0+13
Комментарии9

Комментарии 9

НЛО прилетело и опубликовало эту надпись здесь
Извините, издержки професcии: https://en.wikipedia.org/wiki/Network_traffic.
Спасибо, поправил.
>>Я советую vmxnet3
К сожалению, под рукой нет конкретных фактов и примеров, но со времён 5.5 вывел для себя золотой алгоритм:
— в машине дурит сеть?
— удали vmxnet, поставь E1000e
— 90% проблема самоустранится

Отсюда вопрос — исходя из чего рекомендация?
Как я написал в начале, я рассматривал с позиции написания DPDK приложения.

Основные бенефиты vmxnet3:
1) multiqueue
2) использование shared memory вместо VMexit-VMentry
Первое за счет RSS может скейлить обработку по ядрам,
второе за счет уменьшения количества VMexit экономит по 600 циклов за выход.

По тестам у vmxnet3 на 97% меньше частота VMexit-VMentry.

С точки зрения традиционных приложений, я за e1000.
КМК, сами разработчики e1000 толком не тестируют, так как во всех рекомендациях указан vmxnet3. Иначе не объяснить PSOD хоста из-за бага с e1000.
Слишком мало конкретики — пробуйте профилировать и получать flame graph'ы.
Я постарался на схемах показать основные потери performance по результатам профилирования. Вам интересно конкретно скриншоты профилировщика?
Интересуют конкретные цифры.
То что там будет Overhead из-за копирования — и ежу понятно.
Профилятор — профилятору рознь. Надо понимать что есть multisample profiling, есть monitoring gap и прочие нюансы.

Было бы просто замечательно прогнать это всё в афинном окружении (numactl/taskset) на изолированных ядрах, да отрисовать flame graph'ы. Даже банального ptrace хватило бы.

Были бы цифры и графики для каждого из вариантов — было бы понятно конкретно что и сколько времени выполняется.
Ок. Я посмотрю, остались ли у нас репорты, и приложу.
По поводу афинного окружения, тесты выполнялись на хосте, в котором через isolcpu было оставлено только одно ядро ОС, irqbalance выключен, VM и DPDK свитч на разных ядрах, все в рамках одной нумы, память тоже выделялась в рамках одной нумы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории