5

我有一个 shell 脚本。在那个脚本中,我开始了 6 个新进程。我的系统有 4 个 CPU。如果我运行 shell 脚本,操作系统默认会自动将生成的新进程分配给其中一个 CPU。现在,我想减少脚本运行的总时间。有没有一种方法可以检查处理器的空闲利用率,然后选择一个来运行我的进程?

我不想在利用率超过 75% 的 CPU 上运行进程。我会等待并在利用率 <75% 的 CPU 上运行。

我需要对我的脚本进行编程,使其检查 4 个 CPU 的利用率,然后在所选 CPU 上运行该进程。

有人可以帮我举个例子吗?

4

2 回答 2

2

我推荐GNU 并行

GNU 并行是一个 shell 工具,用于使用一台或多台计算机并行执行作业。作业可以是单个命令,也可以是必须为输入中的每一行运行的小脚本。典型的输入是文件列表、主机列表、用户列表、URL 列表或表列表。作业也可以是从管道读取的命令。然后 GNU 并行可以拆分输入并将其并行传输到命令中。

此外,使用nice.

于 2013-07-30T10:24:06.257 回答
1

taskset您可以使用以下命令告诉调度程序应该使用某个 CPU :

taskset -c 1 process

将告诉调度程序process应该在 CPU1 上运行。

但是,我认为在大多数情况下,内置的 Linux 调度程序应该可以正常工作。

于 2013-07-30T10:25:58.353 回答