Низкая скорость загрузки в гостевом KVM с драйвером virtio eth в OpenStack в версии 3.14 [закрыто]

После обновления вычислительного узла OpenStack до ядра 3.14 я получаю низкую скорость загрузки от всех гостевых систем KVM при использовании драйвера virtio ethernet. Скорость загрузки не изменяется, а загрузка по HTTP остается постоянной 50 МБ / с, однако загрузка начинается со 2 МБ / с и снижается до килобит в секунду (в сети 1 Гбит / с). Это включает как передачу вне сети, так и передачу между виртуальными машинами.

Настройка:

  • OpenStack Icehouse с нейтронной сетью
  • Туннелированная сеть GRE под плагином ml2 через openvswitch
  • GRO отключен на всех физических интерфейсах, которые находятся в драйвере igb 2.0.5
  • интерфейсы данных подключены через порты 1 Гбит / коммутатор
  • один выделенный сетевой узел с несколькими вычислительными узлами
  • все серверы работают под управлением 14.04 (также пробовали 14.10 на одном вычислительном узле, но проблема сохраняется)

После переключения драйвера на e1000 производительность сети возвращается к ожидаемая скорость (но e1000 дает худшую производительность, чем virtio; загрузка около 16 МБ / с). Кроме того, на другом узле, все еще работающем с ядром 3.13, скорость загрузки составляет> 50 МБ / с (и передача от ВМ на узле 3.13 к ВМ на узле 3.14 нормальна, в то время как передача в противоположном направлении имеет эту прерывистую загрузку).

В SSH на гостевой системе простой запуск cat для файла длиной 2000 строк показывает проблему с зависанием каждые 2 секунды.На обычном гостевом компьютере он печатает в течение полсекунды.

Обратите внимание, что эта проблема затрагивает только вычислительный узел - с двумя вычислительными узлами в одном кластере, на одном узле работает 3.13, а на другом - 3.14, а на узле нейтронной сети работает что-то еще (не имеет значения, но я думаю, что это на 3.16 на данный момент), 3.13 все еще в порядке, в то время как у гостей на узле 3.14 есть проблемы.

Я заметил отчет об ошибке в https://bugzilla.kernel.org/show_bug.cgi?id=74851 . Однако

  • a) насколько я понимаю, переадресация IP не требуется на вычислительном узле (после его отключения с помощью "echo 0> / proc / sys / net / ipv4 / ip_forward" гостевая сеть все еще работает) и
  • b) после обновления до последней версии 3.14, последней версии 3.15 и последней версии 3.16 с http://kernel.ubuntu.com/~kernel-ppa/mainline/ проблема сохраняется.
0
задан 29 July 2014 в 00:11

1 ответ

Похоже, что это не было на самом деле связанным ядром, но вместо этого по некоторым причинам обновляющий до 3,14 ядер магистрали заставил TSO быть включенным на мосту, касаться, и другие интерфейсы, которые автоматически создает OpenStack.

После выполнения ethtool -K [interface] gro off tso off на каждом qbr, qvb, qvo, и интерфейсе касания, virtio драйвер возвращается к хорошей производительности.

, Так как мне нужно 3.14 для некоторых других изменений, связанных с bcache, я закончил тем, что исправил новинку OpenStack в /usr/lib/python2.7/dist-packages/nova/network/linux_net.py для выполнения команды ethtool (через utils.execute с run_as_root=True) каждый раз, когда один из этих интерфейсов создается. До сих пор это, кажется, работает.

1
ответ дан 29 July 2014 в 00:11

Другие вопросы по тегам:

Похожие вопросы: