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

Странная производительность с адаптером VirtIO в гостевой системе Linux

Я столкнулся с чрезвычайно странным поведением адаптера VirtIO для гостевых систем Linux KVM. Во-первых, моя установка:

KVM-хост - это коробка CentOS 6.8. Гости работают под управлением CentOS 7. Изначально адаптеры были подключены к мосту хоста, хотя я изменил виртуальную сеть на установку OVS с гостевыми подключениями к мосту OVS.

Все гости Linux живут на мосте OVS "internalbr1", который не соединен с интерфейсом хоста. Вместо этого трафик поступает на шлюз LAN 10.255.0.1, который является интерфейсом LAN виртуальной машины PFSense, которая отправляет его через сквозной интерфейс на хосте. В основном мост OVS "internalbr1" действует как коммутатор между гостевыми системами и брандмауэром со стороны LAN.

Изначально у гостей был адаптер e1000, но из-за проблем со скоростью (снижение скорости до 100k во время загрузки) я хочу перейти на VirtIO. Есть Windows Guest (2012), работающая с адаптером VirtIO (видел ту же проблему с e1000. На мосту с интерфейсом хоста), и он работает отлично. Все гости Linux могут нормально пинговать без задержки, попытки вытащить веб-страницы с помощью wget очень медленные, а команды yum возвращаются с сообщением «Нет маршрута к хосту», хотя пинги к репозиториям yum работают нормально.

Я не понимаю, что происходит, и многочасовые поиски в Google не помогают. Кто-нибудь еще сталкивался с подобной проблемой раньше?

Обновить

Обнаружил, что это был брандмауэр PfSense, а не VirtIO (частично). После захвата пакетов на брандмауэре я обнаружил неправильные контрольные суммы уходящих пакетов. Я обнаружил, что иногда это проблема с разгрузкой контрольной суммы оборудования. Я отключил разгрузку аппаратной контрольной суммы, и все заработало как надо. Я предполагаю, что адаптер VirtIO не может выполнять разгрузку аппаратной контрольной суммы (по крайней мере, с моими версиями). Это также объясняет, почему я не видел проблем с адаптером e1000.

Надеюсь, это кому-то поможет в будущем.