Использование jobs:

140 views
Skip to first unread message

Max Lapshin

unread,
Apr 14, 2012, 2:38:02 AM4/14/12
to erlang-...@googlegroups.com
Коллеги, а кто пользуется jobs?

Задача такая: есть 50-100 тасков, которые надо исполнить, но не больше
чем по 8 (количество ядер) одновременно. Ведь jobs как раз для этого
подходит?

Если да, то есть какие-нибудь примеры кроме сырцов самого jobs?

Gleb Peregud

unread,
Apr 14, 2012, 5:23:50 AM4/14/12
to erlang-...@googlegroups.com

Glicko2  by Jesper Louis

--
Страница рассылки: http://groups.google.com/group/erlang-russian
Jabber-
конференция: erl...@conference.jabber.ru
Новости: http://erlanger.ru
Написать письмо: erlang-...@googlegroups.com
Отписаться: erlang-russia...@googlegroups.com

Max Lapshin

unread,
Apr 14, 2012, 6:54:10 AM4/14/12
to erlang-...@googlegroups.com
2012/4/14 Gleb Peregud <gleb...@gmail.com>:
> Glicko2  by Jesper Louis
>

Если речь про https://github.com/jlouis/erl-glicko2/ то я не вижу там
использования jobs вообще

Gleb Peregud

unread,
Apr 14, 2012, 7:47:45 AM4/14/12
to erlang-...@googlegroups.com
2012/4/14 Max Lapshin <max.l...@gmail.com>:

> Если речь про https://github.com/jlouis/erl-glicko2/ то я не вижу там
> использования jobs вообще

И правда. Он рассказывал на Erlang Factory Lite Krakow о том, что
использовал для сбора информации со страницы Quake Live. Видимо этот
кусок кода не попал в опэн соурс

Daniil Churikov

unread,
Apr 15, 2012, 2:59:51 AM4/15/12
to Erlang в России
Не мог бы ты пояснить, что за jobs ты имеешь ввиду? Что это,
библиотека, или концепция?
То что ты описал можно написать через диспетчера и N воркеров. И
почему ограничение по кол-ву
процессоров? У тебя не нативный эрланговский код будет выполнятся?

Alexey Larin

unread,
Apr 15, 2012, 3:37:22 AM4/15/12
to Erlang в России
Макс, на сколько я смог понять, jobs именно для таких задач и
разрабатывался.
Твой вариант описывается в примере https://github.com/esl/jobs/wiki/Passive-queue

Я так же присматриваюсь к данному фреймворку. Думаю в ближайшем
проекте его задействовать достаточно плотно.

On 14 апр, 10:38, Max Lapshin <max.laps...@gmail.com> wrote:

Max Lapshin

unread,
Apr 15, 2012, 1:22:23 PM4/15/12
to erlang-...@googlegroups.com
Если честно, то меня слегка смущает jobs: там огромное количество
кода, я не понимаю, чем он занимается и для чего нужен, при этом то,
что мне нужно, явно сыро и не проработано.

Задача простая: есть 100 тасков, которые сводятся к тройке MFA. Есть
несколько машин, состыкованных в кластер (все в локальной сети).

Надо выполнить эти таски за минимальное время, максимально загрузив CPU.

Мне видится так: на центральной машине (мой ноут) запускается процесс,
определяющий сколько есть нод вокруг, сколько на них процессоров и
запускающий воркеры на этих нодах. Весь код на эти ноды, понятно,
копируется.

Воркеры по мере занятости вытаскивают с этого процесса следующую
задачу и выполняют её.
Т.е. эдакий RabbitMQ на 40 строк кода.

Может я не вижу каких-то подводных камней?

Alexey Kishkin

unread,
Apr 15, 2012, 2:01:22 PM4/15/12
to erlang-...@googlegroups.com

A  pool из stdlib не подойдет? Разница лишь в том, что не воркер тянет задачи, а центральная нода их пихает.

Max Lapshin

unread,
Apr 15, 2012, 2:10:56 PM4/15/12
to erlang-...@googlegroups.com
А как центральная нода может понять, что воркер может обрабатывать?

Дмитрий Омелечко

unread,
Apr 15, 2012, 2:16:53 PM4/15/12
to erlang-...@googlegroups.com
судя по доке, перед отправкой очередного pspawn/3 мастер выбирает ноду
с наименьшей текущей нагрузкой.

15 апреля 2012 г. 21:10 пользователь Max Lapshin
<max.l...@gmail.com> написал:


> А как центральная нода может понять, что воркер может обрабатывать?
>

Alexey Kishkin

unread,
Apr 15, 2012, 2:17:04 PM4/15/12
to erlang-...@googlegroups.com
Она  непонимает. Просто шлет задание на тот slave, загрузка которого меньше. Поэтом более мощные slave получают больше заданий. 

Igor Karymov

unread,
Apr 18, 2012, 6:07:16 AM4/18/12
to erlang-...@googlegroups.com
pool периодически собирает информацию о нагрузку путём вызова

statistics(run_queue)

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


Max Lapshin

unread,
Apr 18, 2012, 7:07:05 AM4/18/12
to erlang-...@googlegroups.com
У меня все проще. Одна задача почти полностью забивает ядро, поэтому мне нужно воркеров почти по числу ядер.

vitya chepa

unread,
May 22, 2012, 6:20:17 AM5/22/12
to Erlang в России

Мне бы тоже такую задачу нужно решить для математических вычислений на
кластере, я в итоге думал пересылыть данные с центральной ноды
остальным и использовать Port's, передавать данные в С, использовать
ThreadPool и обрабатывать. Но тут наверное проблема будет в скорости
при передаче через Port's и обратно.
Есть у тебя какие-то исходники или примеры с использованием RabbitMQ
или Riak?? Хотелось бы тоже что нибудь такое использовать.

Max Lapshin

unread,
May 22, 2012, 6:31:19 AM5/22/12
to erlang-...@googlegroups.com
2012/5/22 vitya chepa <chep...@gmail.com>:

>
> Мне бы тоже такую задачу нужно решить для математических вычислений на
> кластере, я в итоге думал пересылыть данные с центральной ноды
> остальным и использовать Port's, передавать данные в С, использовать
> ThreadPool и обрабатывать. Но тут наверное проблема будет в скорости
> при передаче через Port's и обратно.
> Есть у тебя какие-то исходники или примеры с использованием RabbitMQ
> или Riak?? Хотелось бы тоже что нибудь такое использовать.
>

ThreadPool мне здесь вообще малопонятен, это точно нужно?

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

Message has been deleted

vitya chepa

unread,
May 24, 2012, 10:26:06 AM5/24/12
to Erlang в России
Да мне бы тоже пару экранов кода сделать, но на jobs ненашел ни
примеров ни документации
a RabbitMQ еще не использовал и не знаю какая там реальная скорость по
пересылке сообщений.
Нашел только что уже кто-то спрашывал на счет jobs на эрланговском
форуме но наверно ребята заняты
что небудь написать как пример или документацию к jobs

On May 22, 12:31 pm, Max Lapshin <max.laps...@gmail.com> wrote:
> 2012/5/22 vitya chepa <chepa...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages