Рубиновый процесс, когда сервер свободен - PullRequest
2 голосов
/ 10 января 2011

Я хочу запустить задание Stalker, только когда загрузка ЦП меньше, чтобы сайт не пострадал.

Задача - конвертировать видео из любого формата в flv и mp4.так что это довольно дорогая работа.

как мне этого добиться?

РЕДАКТИРОВАТЬ

это хороший способ?

как насчет чего-то вроде

load = `uptime`.gsub(/(.*): /,'').strip.split ' '
if (load[0].to_f < 0.7 && load[0].to_f < load[1].to_f) || (!args["max_delay"].nil? && total_delay > args["max_delay"] && load[0].to_f < 0.85)
  do stuff
end

1 Ответ

5 голосов
/ 10 января 2011

Запустите отдельный процесс интерпретатора Ruby, который выполняет только перекодирование, и запустите его с nice -n 19 или, возможно, nice -n 12.

. Возможно, вы захотите понизить свой приоритет (увеличьте nice уровень) в Ruby-коде после запуска интерпретатора.

Теперь вы можете использовать Process.setpriority для изменения приоритета интерпретатора.Но если у вас нет привилегий или вы работаете в Linux и не имеете возможности CAP_SYS_NICE, вы не сможете вернуться к обычному приоритету.

Стратегия для , в которой проблема может заключаться в получении некоторой работывыполнить, выполнив Process или Kernel.fork, понизив приоритет, запустив задание, а затем вызвав exit.

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