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

virtio / proc / net / dev

мы проводим несколько тестов виртуальной машины (citrix-xen) / реальной машины в университете и обнаружили странное поведение. мы использовали потоковый тест netperf, чтобы измерить производительность между двумя машинами. оба дали одинаковое значение 940 Мбит, но на выходе /proc/net/dev был другим:

117 MB/sec vs. 112 MB/sec.

Я попытался воспроизвести эту ситуацию с помощью VirtualBox дома. Я заверил отображаемый трафик с помощью nload на ВМ и на хосте виртуальной машины.

При использовании эмулированного устройства на 1000 Мбит:

vm says: 107 MB/sec
vm host says: 107 MB/sec

оба значения соответствие. Все идет нормально. но при использовании устройства virtio-net:

vm says: 102 MB/sec
vm host says: 107 MB/sec

ценности не совпадает. так что виновником, похоже, является паравиртуализированное сетевое устройство. кто-нибудь знает об этой проблеме? я думаю, обычно "байты" перечисляются из /proc/dev/net предназначены для кадров Ethernet, и при использовании паравиртуализированных устройств он перечисляет только байты пакета (без заголовков), поскольку хост VM выполняет всю обработку пакета?

спасибо за любые предложения :)

РЕДАКТИРОВАТЬ1:

Я просто использовал wirehark для некоторых тестов. Wireshark сообщает: 1514 байтов на проводе, и один пакет содержит 1448 байтов данных. Чтобы получить значение из 1448, нужно умножить на 10456 (примерно). при умножении 102 МБ сверху получаем 106,7 МБ => ~ 107 МБ

=> Кажется доказанным, что паравиртуализированная сеть пропускает байты заголовков в /proc/net/dev

РЕДАКТИРОВАТЬ2:

я не спрашивает, работает ли паравиртуализированная сеть быстрее, чем эмулируемая. Я уже знаю, что это данность. Как видно из приведенных мной значений, трафик был в обе кейсы 107 МБ / сек (конечно, с разной загрузкой процессора).

Но /proc/net/dev списки разные значения в виртуальной машине. Внутри хоста оба значения одинаковы! Итак, я спрашиваю, если /proc/net/dev/ перечисляет различные значения (например, без заголовков пакетов) при использовании паравиртуализированных сетевых драйверов.

Да. Виртуальное сетевое устройство может отправлять данные быстрее, чем заявлено сетевой картой.

Вы также можете протестировать это на локальном хосте, чтобы увидеть это.

Некоторые отличные ссылки на тестирование и устранение неполадок виртуальных сетей:

http://wiki.xen.org/xenwiki/Network_Throughput_Guide

http://openvswitch.org/papers/hotnets2009.pdf