各位 Unix 哲学家们,
我用 Perl 编写了一些工具,其中有一部分可以并行运行。我给他们配备了-j
(工作)选项如make http://www.gnu.org/software/make/manual/html_node/Parallel.html and prove http://p3rl.org/prove#OPTIONS have 因为这是明智的 http://catb.org/~esr/writings/taoup/html/ch01s06.html#id2878339。然而,很快我就因为两个原因对此感到不满。
- 我指定
--jobs=2
因为我有两个CPU核心,但我应该不需要告诉计算机它可以自己计算出的信息。
- 该工具的运行很少会占用超过20%的CPU(I/O负载也很少),没有更好地利用CPU而浪费时间。
我还做了一些工作来添加负载测量,在仍然有“容量”的情况下产生额外的作业,直到达到负载阈值,此时作业数量或多或少保持不变,但是在运行其他进程的过程中较高优先级需要更多 CPU,随着时间的推移,产生的新作业会减少,作业数量也会相应减少。
由于此职责是工具中的重复代码,因此我遵循以下精神将调度方面分解为一个独立的工具:nice et al. http://www.gnu.org/software/coreutils/manual/html_node/Modified-command-invocation.html。并行工具现在相当愚蠢,它们只有信号处理程序,通过信号处理程序告诉它们增加或减少作业池,而负载测量和确定何时控制作业池的智能则驻留在调度程序中。
尝试一下暂定界面(我还想提供合理的默认值,以便可以省略选项):
run-parallel-and-schedule-job-pool \
--cpu-load-threshold=90% \
--disk-load-threshold='300 KiB/s' \
--network-load-threshold='1.2 MiB/s' \
--increase-pool='/bin/kill -USR1 %PID' \
--decrease-pool='/bin/kill -USR2 %PID' \
-- \
parallel-something-master --MOAR-OPTIONS
在我投入精力之前last 90% http://en.wikipedia.org/wiki/Ninety-ninety_rule,请告诉我,我是在复制别人的工作吗?这个概念非常明显,所以看起来应该已经完成了,但我找不到它作为单一职责的独立工具,只是作为更大的多用途系统管理套件的深度集成部分。
额外问题:我已经知道了runN http://aaroncrane.co.uk/2008/07/runN/ and parallel http://www.gnu.org/software/parallel/。它们可以并行执行,但没有动态调度(niceload http://www.gnu.org/software/parallel/niceload.html进入那个领域,但相当原始)。如果与我的预期相反,独立工具还不存在,我过得更好吗延伸runN
myself or提出反对的愿望parallel
?
我们的一些用户非常满意condor http://www.cs.wisc.edu/condor/。它是一个根据其他工作站和服务器的空闲计算资源动态分配作业的系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)