LINUX.ORG.RU

Равномерное распределение нагрузки


0

1

Здравствуйте!
Есть N объектов, для каждого нужно посчитать статистику.
Сейчас статистика считается скриптами по крону.
Проблема в том, как распределить нагрузку равномерно по времени в зависимости от N.
Сейчас тупо есть скрипт, которому передается аргумент - число S (шаг) - а он запускает C скриптов для объектов [C*S, C*S+M], где M - константа, указанная в скрипте.
Т.е. у нас есть 10 объектов, M = 4, например, мы запускаем скрипт c шагом 0:

script 0

И он запускает скрипты для объектов с 0 по 4. В другое время - для объектов с 5 по 8, в другое - для остальных.
Проблем несколько:

1. Нагрузка не распределяется по времени в зависимости от количества объектов. Т.е. если у нас 100 объектов, а M = 50, то за 1ую итерацию обрабатываться будут 50 объектов, за вторую - остальные 50.
Если у нас 50 объектов - то они абсолютно так же будут обрабатываться за 1 итерацию.
Т.е. надо как-то динамически менять параметр M в зависимости от кол-ва объектов. Как это лучше делать? И если менять динамически, то возникает проблема:

2. Все делается по сути вручную правкой кронтаб. Как это все лучше автоматизировать?

PS: Прошу прощения за некоторую сумбурность и абстрактность.

★★★★★

Задача, как я понимаю, стандартная. Как ее принято решать?

kovrik ★★★★★
() автор топика

Детский сад какой-то. Все расчеты в пределах 4-х арифметических действий

sdio ★★★★★
()
Ответ на: комментарий от sdio

Я не про расчеты, а про реализацию спрашиваю. Да, посчитать то, как и сколько распределять по времени - легко, не спорю. Но что потом делать с этим? Не менять же динамически кронтаб постоянно.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

По крону запускай управляющий скрипт, который рассчитает и запустит остальные скрипты в соотв. с расчетами.

Как вариант: управляющий скрипт, рассчитает и раскидает запуск скриптов по времени при помощи команды «at»

sdio ★★★★★
()

А из каких соображений выбирается число скриптов работающих единовременно, и все ли скрипты работают одно и то же время или кто то заканчивает раньше/позже?

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

А из каких соображений выбирается число скриптов работающих единовременно, и все ли скрипты работают одно и то же время или кто то заканчивает раньше/позже?

Число скриптов определяется экспериментальным путем :)
Сколько будет работать скрипт по времени - неизвестно. Какие-то завершаются почти мгновенно, какие-то могут минут 10-30 работать.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

Ну тогда делайте очередь и в путь....

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.