August 9th, 2017

Book

Об очередях

Мне постоянно приходится писать код, работающий с разного рода очередями. И хочется это дело как-то автоматизировать, вынести в либу или миддлваре. Интересно, какие наработки в этом плане уже есть (в т.ч. академические).

Вот пример задачи. Есть блобы по 1000 байт и функция из блоба в блоб. Надо эти блобы распихать по MPI-нодам, на нодах обработать тредпулом и собрать результаты обратно. Порядок результатов не важен.

Оказалось (это было 10 лет назад, сейчас YMMV) что слать блобы по одному совершенно нереально.

Приходится лепить "очереди".

Буферизатор блобов батчит их кусками по 2 мб и шлёт. Шлёт он их не просто так а с двойной буферизацией - пока кусок отправляется, собирается следующий кусок. Воркер принимает куски, делит их на меньшие куски и шедулит меньшие куски по ядрам. На ядрах меньшим кускам делают мап, собирают результаты и симметрично всё идет назад, до синка кусков.

Ну и там время работы функции блоб-блоб непредсказуемо, и вариант "тупо раунд робином слать" не проходит, пришлось делать балансер. До ворк-стилинга я не дошёл, там сам собой благодаря семантике сообщений MPI получился средне-тупой вариант с "горшочек не вари".

Короче, нужна либа очередей позволяющая все эти параллелизаторы и депараллелизаторы лепить. Как для дискового IO, так и для иного - пример MPI показывает что надо "транспортонезависимо".
Book

Почему не Gearman

C конкретно гирманом c gearman.org есть проблемы:

1. Там дебильный протокол http://nponeccop.livejournal.com/487193.html (но менее дебильный, чем в beanstalkd и ещё паре task queues на которые я смотрел)

2. Гирман требует нетривиальных в написании клиентов:

https://github.com/iarna/abraxas/issues - это клиент на ноде, там куча перформанс багов и в целом код достаточно хрупкий. И так для каждого языка!

3. Он не гибок - сегодня мне нужен гирман а завтра хуирман. Я не говорю уже о транспорте через MPI, даже например если мне понадобится фича "Buried job state" из beanstalkd. Если я решусь патчить gearmand и клиентов - её реализация будет очень хрупкой. Аналогично например у меня job source и job sink разнесены по нодам. Или порядок не требуется, а джобы большие по размеру - и трекинг соответствия джобов результатам жрёт память. И те де.

Короче, я хочу (как минимум) конструктор гирманов с алгебраической корректностью и шлюхами.
Book

Linux i686 на Windows 10 Hyper-V

4.12.4 и 4.12.5 по-прежнему работают, и даже какие-то новые коммиты есть по поддежке Hyper-V. Но в ветках 4.1, 4.4 и 4.9 глухо. Хоть сам коммиты бэкпортируй.

И да, всё это нужно, чтобы написать пост о том, какое же RancherOS говно (или не говно, но это маловероятно).