Как мне выделить одинаковое количество ресурсов для всех моих задач, развернутых в кластере Celery? - PullRequest
1 голос
/ 27 мая 2020

Чтобы сравнить и сопоставить производительность трех различных алгоритмов в научном c эксперименте, я планирую использовать планировщик Celery. Эти алгоритмы реализуются тремя разными инструментами. В них может быть реализован или не реализован параллелизм, о чем я не хочу делать никаких предварительных предположений. Набор данных содержит 10 000 точек данных. Предполагается, что все три инструмента работают со всеми точками данных; что переводит в 30K задач, запланированных планировщиком. Все, что я хочу, - это выделить одинаковое количество ресурсов для всех инструментов во всех исполнениях.

Предположим, мой физический сервер Ubuntu 18.04 оснащен 24 ядрами и 96 ГБ ОЗУ. Задачи планируются 4 рабочими Celery, каждый из которых выполняет одну задачу. Я хочу установить верхний предел в 4 ядра процессора и 16 ГБ памяти на задачу. Более того, никакие две задачи не должны соревноваться за одни и те же ядра, т. Е. 4 задачи должны использовать в общей сложности 16 ядер, каждая из которых запланирована на своем собственном наборе ядер. , либо через Celery, либо через cgroup, либо любым другим механизмом? Я хочу воздержаться от использования docker, kubernetes или любого подхода, основанного на виртуальных машинах, за исключением случаев, когда это абсолютно необходимо.

1 Ответ

0 голосов
/ 27 мая 2020

Работа с ядрами ЦП должна быть довольно простой, указав параллелизм равным 6. Но ограничение использования памяти является жесткой частью требования, и я считаю, что вы можете sh добиться этого, сделав рабочие процессы принадлежащими определенной группе, для которой указана память ограничение на.

Альтернативой может быть запуск воркеров Celery в контейнерах с указанными пределами.

Я предпочитаю не делать этого, поскольку могут быть задачи (или задачи с определенными аргументами), которые выделяют крошечные объем оперативной памяти, поэтому было бы расточительно, если бы вы не могли использовать 4G оперативной памяти во время выполнения такой задачи.

Автоматическое масштабирование Pity Celery устарело (это одна из самых крутых функций Celery, IMHO). Реализовать автомасштабирование сельдерея, которое масштабируется вверх / вниз в зависимости от использования памяти, не должно быть сложной задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...