2016-12-17 12 views
0

У меня есть хост Arch Linux, который запускает виртуализированный маршрутизатор.KVM и Libvirt: Плохая производительность CPU/сети гостя

При использовании гостевого LXC в качестве маршрутизатора все в порядке. Я получаю 100MBits Up/Down и почти никакого использования процессора вообще.

Однако, когда я использую libvirt gest (pfSense FreeBSD) в качестве маршрутизатора, всякий раз, когда происходит тяжелый сетевой трафик, проходящий через гостя, использование ЦП идет неоправданно высоко (до 100%), но самое страшное, что сеть пропускная способность сокращена вдвое! Я получаю максимум 45-49 Мбит.

хост не поддерживает PCI пройти, так что это мой конфиг для libvirtd VM:

Nic1 (wan) 
Network source: Direct ‘eth0’ 
Source mode: passthrough 
Device model: virtio 

Nic2 (lan) 
Bridge name: br0 
Device model: virtio 

Я попытался E1000, но вместо этого она не меняет абсолютно ничего.

Host CPU: AMD A4-5000 Kabini 
Guest CPU: default or Opteron_G3 

Это произошло уже более года, так как я начал использовать KVM. Если я не решит эту проблему, мне придется сбросить libvirt, потому что такая производительность неприемлема.

+0

pfSense может использовать опрос для повышения производительности, который может не работать в виртуализованной среде. Может быть полезно подробное чтение 'ifconfig '. – kikap

+0

Опрос оборудования отключен. ifconfig показывает это: http://storage5.static.itmages.com/i/16/1217/h_1481996196_8871112_a2f0d75655.png – lockheed

+0

Stack Overflow - это сайт для вопросов программирования и разработки. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

ответ

0

Очень сложно диагностировать такие проблемы с такой ограниченной информацией. Определенно не используйте e1000 или любую другую модель NIC - virtio-net предложит лучшую производительность любого виртуализованного сетевого адаптера. Убедитесь, что на хосте есть/dev/vhost-net, что ускоряет гостевой сетевой адаптер в пространстве ядра хоста.

Если вы хотите использовать гостя как высокопроизводительное сетевое устройство маршрутизации, то есть довольно много способов настроить его на виртуальную машину в целом. Привязка гостевых vCPU к конкретным основным физическим процессорам, а также сохранение других гостей от этих процессоров гарантирует, что гость не получит свой кеш, если его упрется другим процессам. Затем, используйте огромные страницы для гостевой ОЗУ, чтобы значительно увеличить частоту попадания кэша TLB для доступа к гостевой памяти. Если хост имеет несколько узлов NUMA, убедитесь, что гостевой процессор и гостевая оперативная память (огромные страницы) исправлены с одного узла NUMA узла. Аналогичным образом, обработка IRQ для хост-сетевого адаптера, используемого гостем, имеет аффинность, установленную в соответствии с pCPU, используемыми гостем.

+0

Спасибо за идеи. Host ca see/dev/vhost-net, а его собственностью является root: kvm, поэтому я считаю, что это правильно. Гостевой процессор - Opteron_G3. Я где-то читал, что это оптимально для хоста AMD Kabini. Боюсь, что все остальное, что вы написали, немного по голове. Но из того, что вы написали, я собираю, это вторичные потенциальные преступники. – lockheed