>>Я советую vmxnet3
К сожалению, под рукой нет конкретных фактов и примеров, но со времён 5.5 вывел для себя золотой алгоритм:
— в машине дурит сеть?
— удали vmxnet, поставь E1000e
— 90% проблема самоустранится
Как я написал в начале, я рассматривал с позиции написания DPDK приложения.
Основные бенефиты vmxnet3:
1) multiqueue
2) использование shared memory вместо VMexit-VMentry
Первое за счет RSS может скейлить обработку по ядрам,
второе за счет уменьшения количества VMexit экономит по 600 циклов за выход.
По тестам у vmxnet3 на 97% меньше частота VMexit-VMentry.
С точки зрения традиционных приложений, я за e1000.
Интересуют конкретные цифры.
То что там будет Overhead из-за копирования — и ежу понятно.
Профилятор — профилятору рознь. Надо понимать что есть multisample profiling, есть monitoring gap и прочие нюансы.
Было бы просто замечательно прогнать это всё в афинном окружении (numactl/taskset) на изолированных ядрах, да отрисовать flame graph'ы. Даже банального ptrace хватило бы.
Были бы цифры и графики для каждого из вариантов — было бы понятно конкретно что и сколько времени выполняется.
Ок. Я посмотрю, остались ли у нас репорты, и приложу.
По поводу афинного окружения, тесты выполнялись на хосте, в котором через isolcpu было оставлено только одно ядро ОС, irqbalance выключен, VM и DPDK свитч на разных ядрах, все в рамках одной нумы, память тоже выделялась в рамках одной нумы.
Использование технологий от Intel для передачи сетевого трафика из физического адаптера в виртуальный