相关疑难解决方法(0)

如何编写一个进程池bash shell

我有10个以上的任务要执行,系统限制最多可以同时运行4个任务.

我的任务可以像:myprog taskname一样启动

如何编写bash shell脚本来运行这些任务.最重要的是,当一个任务完成时,脚本可以立即启动另一个任务,使运行任务计数始终保持为4.

bash shell sh multiprocessing multiprocess

33
推荐指数
4
解决办法
2万
查看次数

是否已存在已修改的命令调用工具(根据负载动态调节作业池)?

Unix哲学家,

我在Perl中编写了一些工具,这些工具有一个可以并行运行的部分.我装备他们用-j像(工种)的选项make,并prove因为这是明智的.但是,很快我就因为两个原因而对此感到不满.

  1. 我指定的--jobs=2,因为我有两个CPU核心,但我不应该需要告诉它可以通过自身找出计算机的信息.
  2. 很少运行该工具的占据超过20%的CPU(I/O负荷也小),通过不利用CPU到一个更好的程度浪费时间.

我进行了更多的修改以添加负载测量,产生额外的工作,同时仍然有"容量",直到达到负载阈值,这是当工作数保持或多或少不变时,但是在运行过程中的其他过程更高的优先级需要更多的CPU,随着时间的推移,产生的新工作量减少,因此工作量减少.

由于这种责任是在工具重复的代码,我下面的精神分解出来的调度方面成为一个独立的工具nice等..并行工具现在非常愚蠢,它们只有信号处理程序,通过它们可以增加或减少作业池,而负载测量和确定何时控制池的智能驻留​​在调度程序中.

尝试界面的味道(我也想提供合理的默认值,因此可以省略选项):

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
Run Code Online (Sandbox Code Playgroud)

在我努力进入最后的90%之前,请告诉我,我是否复制了别人的工作?这个概念非常明显,所以它似乎应该已经完成​​了,但是我发现它不是一个单独的责任独立工具,只是作为更大的多用途系统管理员套件的深度集成部分.

奖金的问题:我已经知道runNparallel.它们执行并行执行,但没有动态调度(niceload进入该区域,但非常原始).如果对我的期望独立的工具,还不存在,我是最好延长runN自己提交一个愿望反对parallel

unix parallel-processing perl

5
推荐指数
1
解决办法
175
查看次数