https://combot.org/chat/-1001043143583 Ссылки на полезные ресурсы: https://ruhaskell.org/links.html ; Информация о мероприятиях: https://gist.github.com/qnikst/a96cac661be80d126d0829f2ced1916e
Мне кажется важнее думать наоборот: как выдавать воркерам джобы. Тебе же нужно SLA обеспечивать. Например: каждый пользователь ждет обратную связь не больше минуты.
Бьешь каждую джобу на интервалы размером
<квант времени>/<кол-во воркеров>/<пользователи>. Допустим при 4 юзерах и двух воркерах у нас время ожидания 1мин на юзера, тогда максимальное время выполнения это 0.5 минуты. Отправляешь сабтасок примерно на пол минуты и при выходе за лимит или изменение вводных делаешь переоценку и перепланировку. Дальше уже тюнишь механизмы переоценки и подгонки про план (exponential backoff, throttling). Я так понимаю два последующих кадра не сильно будут отличаться по времени рендеринга
ну типа того. плюс сигнал от джоб чтоб появились новые таски. STM и это вот всё.
Читать полностью…загвоздка в том как выдавать джобам воркеров на их таски, чтоб было удобно художникам. т.е. чтоб джобы не ждали поке более приоритетные выполнятся. и чтоб более приоритетные не голодали.
Читать полностью…все ровно наоборот. жоба состоит из тасков, у джобы приоритет. прервать можно всё что угодно, и перезапустить. но это всё ерунда решаемая
Читать полностью…очень просто. выкинул джобу из очереди и освободил воркеров.
Читать полностью…джобу генерит софт у художника, он присылает её шедулеру. Ну это всё ерунда.
Читать полностью…Код джоб ты сам пишешь, или он сторонний, и тебе уже будет дан?
Читать полностью…А у тебя job выдают результаты не по всей задаче сразу, а по частям и дизайнеры сразу видят, и тебе их надо «типа одновременно делать»?
Читать полностью…Она описана в книге "Algorithms. A Functional programming appoach"
Читать полностью…А для очереди приоритетов можно взять "двоичную кучу на основе массивов" (array-based binary heap). Что такое "даг"?
Читать полностью…не, я имел в виду, что если задача длительная, то ее хорошо бы тоже разбить на подзадачи
Читать полностью…Если ты можешь задачи разбить на шаги, то это уже пол дела!
Читать полностью…тут непредсказуемо всё. таска может считаться 30 сек (маловероятно) а может 2 часа (более вероятно)
Читать полностью…пока стоишь в обычной очереди (от 20 минут до часа) на один аттракцион, можно купить в электронном киоске буст на 40 минут и пойти на другой через быструю очередь
Читать полностью…Ну, это уже детали! Только тут появится параметр емкости второй очереди. Как бы сколько вторая очередь может позволить джобам пробраться без очереди. Такие джобы-зайцы получаются
Читать полностью…А если использовать две очереди? Одна - очередь на ожидание для новых джоб (по приоритетам). Другая очередь - для воркеров для назначения уже исполняющихся тасков воркерам (по приоритетам джоб). Размер второй очереди может быть больше количества воркеров (??). Правда, я еще сам не совсем понимаю, как это будет выглядеть. Тогда появится параметр для емкости второй очереди. Только боюсь, как бы фигня полная не вышла.
А мы не усложняем? Может быть, просто, если джоба попала к воркерам, то так и оставить ее таски там? Есть ли смысл в более сложной схеме?
Ну, ладно! Значит, джоба состоит из тасков. А в чем тогда конкретно загвоздка? Я пока не совсем понял (кстати, проговаривая задачу, ты можешь сам ее быстрее решить)
Читать полностью…То есть, таск состоит из джоб? Джобы небольшие, но с приоритетами. У каждой джобы свой приоритет. Есть ограниченное количество воркеров. Когда исполняется джоба - ее прервать нельзя. Но если выкинуть все джобы, относящиеся к конкретному таску, то таска будет отменена - и это может сделать художник. Я правильно понял?
Читать полностью…оно уже разбито на шаги, ациклический граф тасков внутри джобы. там всё понятно как делать. вопрос как выдавать рабочих каждой джобе чоб она могла посчитать таск.
Читать полностью…Так вот же шаги, на которые можно разбить задачи (джобы)! Только как ты собрался делать прерывание перед и после показа дизайнерам? Эта деталь тоже важна
Читать полностью…для очереди приоритетов можно взять psqueues, там их сотня дай бог будет. это ерунда
Читать полностью…ну вот они не совсем статические, но мы можем их пересчитать при каждом шаге шедулера.
т.е. у нас есть группы жобов по приоритетам, далее сортируем по количеству активных тасков и времени создания джобы. и назначаем так чтоб у всех было одинаковое количество воркеров. (раунд-робин).