2013-07-01 7 views
1

У меня два компьютера, c1 и c2. c1 - с двумя ядрами cpu, а c2 - с четырьмя ядрами cpu. Поэтому я соединяю эти два компьютера с сельдереем, используя 6 работников для выполнения некоторых задач. Однако, когда я использую многопроцессорность в c1 с шестью рабочими, кажется, что каждый рабочий в сельдерее медленнее в многопроцессорности? Почему это? Итак, каково преимущество сельдерея в многопроцессорной обработке?сельдерей медленнее, чем многопроцессорность?

Например:

У меня есть функция:

def readFromHBase(inputData): 
     ... 
     return data 

Я использовал сельдерей и многопроцессорные читать 1000 файлов из 100000 образцов.

В сельдерее я установил 6 рабочих, пересекающих два компьютера c1 и c2, как указано выше. каждый работник будет читать 10 файлов до получения 1000 файлов.

В многопроцессорной обработке я сделал то же самое, но настроил только в c1 и с 6 рабочими пулами. Каждый рабочий будет читать 10 файлов до получения 1000 файлов.

Результаты показывают, что каждый работник в многопроцессорности будет стоить меньше времени, чем в сельдере. Как это произошло?

+0

Не могли бы вы опубликовать код, чтобы дать нам представление о том, что вы делаете? – John

ответ

0

Сельдерей имеет брокера очереди. Многопроцессорности нет. Работники сельдерея вытаскивают задачи из центральной очереди, сеть одна (даже на локальном хосте). Многопроцессорность использует IPC.

Конечно, IPC имеет меньше накладных расходов, чем сокет.

Вы платите своим показателем за свою способность масштабировать.

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