2013-09-17 8 views
2

Я создал пару контейнеров с помощью Dockers и измерил производительность сети с помощью Netperf. Однако пропускная способность является довольно низкой, около 563,81 Мбит/с. Разве связь между двумя контейнерами/процессами не осуществляется через основную память? У кого-нибудь есть идея, почему у меня такая низкая пропускная способность. Нужна ли мне конкретная конфигурация?Почему пропускная способность сети для контейнеров низкая

Спасибо, GENC

+0

Возможно, вы могли бы поделиться, как вы пришли к выводу, что это медленно. Как ваши файлы докеров и т. Д. Некоторые данные, аппаратные средства и т. Д. Все это кажется очень YMMV. – Till

+0

Было бы полезно узнать, какую версию ядра вы используете; и если вы работаете на голом металле или внутри виртуальной машины. Спасибо! – jpetazzo

ответ

6

Вопрос был задан в списке рассылки docker-user, и после некоторого исследования, мы выяснили, что производительность veth в виртуальных машинах с ядром 3.8 «не большое», и были значительно улучшены с ядром 3.10.

Другими словами:

  • при запуске контейнеров на голый металл, вам будет хорошо (и увидеть очень высокую скорость передачи данных между контейнерами), независимо от версии ядра, которые вы используете;
  • Если вы запускаете контейнеры в виртуальной машине (проверены с помощью Xen, VirtualBox и KVM), вы можете увидеть огромное падение скорости передачи данных между контейнерами, если вы запускаете ядро ​​до 3,8;
  • Если вы запускаете ядро ​​3.10 или выше, производительность будет прекрасной, независимо от настройки.

Мы еще не определили источник проблемы.

+0

У меня была такая же проблема с докером на VM для mac. действительно не идеально подходит для развития. :( – alexzg