我有一个shell脚本。在那个脚本中,我开始了6个新进程。我的系统有4个CPU。 如果我运行shell脚本,则生成的新进程默认由操作系统自动分配给其中一个CPU。现在,我想减少运行脚本的总时间。有没有办法可以检查处理器的免费利用率,然后选择一个来运行我的流程?
我不想在使用率> 75%的CPU上运行进程。我会等待并使用<75%的CPU运行。
我需要对脚本进行编程,以便检查4个CPU的利用率,然后在所选的CPU上运行该过程。
有人可以帮我举个例子吗?
答案 0 :(得分:2)
我建议GNU Parallel:
GNU parallel是一个shell工具,用于使用一台或多台计算机并行执行作业。作业可以是单个命令,也可以是必须为输入中的每一行运行的小脚本。典型的输入是文件列表,主机列表,用户列表,URL列表或表列表。作业也可以是从管道读取的命令。然后,GNU parallel可以拆分输入并将其并行输入命令。
此外,请使用nice
。
答案 1 :(得分:1)
您可以使用taskset
命令告诉调度程序应该使用某个CPU:
taskset -c 1 process
将告诉调度程序process
应该在CPU1上运行。
但是,我认为在大多数情况下,内置的Linux调度程序应该运行良好。