Назад | Перейти на главную страницу

Низкая производительность сети с KVM (драйверы virtio) - Обновление: с vhost_net

Раньше я настраивал несколько сетей на основе KVM и никогда не сталкивался с этой проблемой, хоть убей, не могу подумать, что я бы настроил иначе раньше.

Настроить

В принципе, у меня есть и полностью Dell Stack:

На всех машинах работают гипервизоры CentOS6.5, в основном стандартная установка с несколькими настройками sysctl.

На данный момент у меня есть несколько тестовых виртуальных машин с настройками, аналогичными их мастерам (CentOS 6.X, базовая установка с базовой конфигурацией, управляемой марионеткой). Все виртуальные машины:

Некоторые простые копии файлов внутри виртуальной машины и тесты dd дают вполне приемлемые результаты (300–800 МБ / с в этих небольших синтетических тестах)

Производительность сети между физическими машинами

На данный момент я оставил конфигурации Jumbo Frame / MTU, и передача с сервера на сервер вполне успешно превысит гигабитное соединение (или около того) (100 МБ / с -> 118 МБ / с плоский по нескольким большим тестам файлов на / с каждой машины)

Производительность сети между физической машиной и виртуальной машиной (и виртуальной машиной к виртуальной машине)

Передача Rsync / SSH постоянно меняется (нестабильно), но всегда между 24 МБ / с и максимум около 38 МБ / с

Я выполнил несколько других тестов: - Между IP-адресом физических машин на одном мосту и ВМ (на другом мосту) - Между IP-адресом физических машин на одном мосту и ВМ (на том же мосту) - Пытался запустить виртуальную машину с помощью e1000 драйверы устройств вместо virtio

Кажется, ничего не работает, сталкивался ли кто-нибудь раньше с таким падением производительности? Я только что проверил свою старую сеть (размещенную на другом DC), и помимо того факта, что в ней используется другой коммутатор (гораздо более дешевый старый PowerConnect 2824), производительность сети виртуальной машины, похоже, приближается к 80-90% необработанной сети. исполнение (не менее половины)

Если я могу предоставить какие-либо настройки / конфигурации или дополнительную информацию, я буду более чем счастлив!

Обновление (14.08.2014)

Пробовал несколько вещей:

Кажется, что хост находится на 125% CPU (для хост-процесса), может ли это иметь какое-то отношение к назначению слишком большого количества VCPU для гостя или сродства CPU / Numa?

Однако после всего этого я, кажется, увеличил среднюю устойчивую скорость с 25-30 МБ / с до 40-45 МБ / с. Это приличное улучшение, но я уверен, что смогу приблизиться к производительности на «голом железе» (на данный момент она все еще намного ниже половины).

Есть другие идеи?

Ваши экземпляры KVM должны иметь возможность без проблем загружать сетевое соединение вашего хоста.

Моя первая рекомендация - обновить как хост-ядро, так и гостевое ядро. Стандартное ядро ​​CentOS 6.5 не обеспечивает высокой производительности для KVM. Я бы предложил kernel-lt от ELRepo (или kernel-ml, если вы чувствуете себя смелым). Это должно дать вам приличный прирост производительности сразу же.

Затем попробуйте протестировать с помощью iperf3 (или даже более старого iperf). Это даст вам максимально возможное чистое сетевое соединение. Ваши тесты rsync / ssh на самом деле недействительны, потому что они определенно попадают на диск. RSync особенно может не выполнять последовательный ввод-вывод, как ваш тест dd (попробуйте вместо этого использовать fio).

Интересно то, что трафик от виртуальных машин к виртуальным машинам фактически не попадает в сетевой контроллер. Это будет сделано исключительно на хосте, поэтому остальная часть вашей сети (и различные настройки разгрузки) на самом деле не имеют здесь никакого значения.

Еще одна вещь, которую стоит проверить: ваш сервер не перегружает процессоры? У нас было несколько машин Dell, которые думали, что они простаивают, и начали запускать ЦП значительно медленнее, чем должны были. Функция энергосбережения не всегда хорошо распознает рабочие нагрузки сервера.

Вы определенно захотите здесь virtio, даже не тратьте время на тестирование какой-либо из эмулируемых опций.

Вы не упомянули об этом, но если на вашем сервере есть сетевые карты на базе i350, вы можете изучить SR-IOV (при условии, что вам нужно только <= 7 виртуальных машин на машину). Это дает виртуальной машине прямой доступ к физическому сетевому адаптеру (за счет потери функциональности, например отсутствия поддержки nwfilter) и будет более эффективным. Однако вам не нужно это для получения полной скорости гигабита.