2

我想运行 Stalker 作业,只有在 CPU 负载较少时才不会影响站点。

工作是将视频从任何格式转换为 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
4

1 回答 1

5

运行一个单独的 Ruby 解释器进程,它只进行代码转换,并使用nice -n 19或可能运行它nice -n 12

在已经启动解释器之后,您可能希望在 Ruby 代码中降低优先级(提高nice级别)。

现在,您可以使用Process.setpriority来更改解释器的优先级。但是,除非您有特权或在 Linux 上并且拥有 CAP_SYS_NICE 功能,否则您将无法恢复正常的优先级。

解决该问题的策略可能涉及接收一些要完成的工作、执行ProcessKernel.fork降低优先级、运行作业,然后调用exit.

于 2011-01-10T17:21:01.693 回答