2014-12-26 2 views
1

Я недавно читал об OpenOnload, который обходит ядро ​​Linux во время определенных сетевых операций, чтобы повысить производительность. Это заставило меня узнать, как обрабатываются сетевые данные между контейнерами LXC на одном сервере. Если я отправляю данные от одного к другому, он будет проходить через стек TCP TCP несколько раз? Если да, то сколько латентности это добавляет по сравнению с чем-то вроде общей памяти (которую я мог бы использовать, если бы я не использовал LXC)? Возможно ли какое-то переполнение ядра для LXC-LXC-связи?Каков путь сетевых данных между двумя контейнерами LXC на одном физическом узле?

ответ

2

Как вы знаете:

Ядро Linux включает в себя контрольные группы для выделения ресурсов (CPU, памяти, блок ввода-вывода, сети/и т.д.), которая не требует запуска каких-либо виртуальных машин. Cgroups также обеспечивает изоляцию пространства имен до , полностью изолируя вид приложений операционной среды, , включая деревья процессов, сети, идентификаторы пользователей и смонтированные файловые системы.

LXC объединяет группы и пространство имен для обеспечения изолированной среды для приложений. Вы спросили: Мне стало интересно, как обрабатываются сетевые данные между контейнерами LXC на одном сервере.

Это как один процесс на Linux машине общаться с другим/же процессом на одной и ту же машину, но если он будет использовать один или два (LXC сеть внутри контейнера) Linux моста + те мосты внутри различных контрольных групп/имен.

Если я отправляю данные от одного к другому, он проходит весь путь через стек TCP TCP несколько раз? Если да, то сколько латентности делает это , добавьте по сравнению с чем-то вроде общей памяти (которую я мог бы использовать, если я не использовал LXC)? Является ли какой-то способ обхода ядра для LXC-LXC ?

Это не большой задержкой, но когда я использовал PHP-FPM, как демон, который слушают в 127.0.0.1:8888 и изменил его слушать Сокет был рост RPS (страниц в секунду). Performance of unix sockets vs TCP ports

PS: Вы можете использовать гнезда unix на своих контейнерах LXC. Например, я использую для создания общего каталога между всеми контейнерами (например: /tmp/mysql.sock):

mount --bind /lxc/shared /lxc/shared 
mount --make-unbindable /lxc/shared 

 Смежные вопросы

  • Нет связанных вопросов^_^