并行高效地运行多个作业

ara*_*esh 2 linux parallel-processing

操作系统:Cent-OS

我有一些30,000工作(或脚本)要运行。每项工作需要 3-5 分钟。我有48 CPUs(nproc = 48)。我可以40 CPUs to run 40 Jobs并行使用。请建议一些脚本或工具可以通过并行运行每 40 个作业来处理 30,000 个作业。

我做了什么:

  • 我创建了 40 个不同的文件夹,并通过为每个目录创建 shell 脚本来并行执行作业。

  • 我想知道下次有更好的方法来处理此类工作。

Ole*_*nge 5

正如 Mark Setchell 所说:GNU 并行。

find scripts/ -type f | parallel
Run Code Online (Sandbox Code Playgroud)

如果您坚持保留 8 个 CPU 空闲:

find scripts/ -type f | parallel -j-8
Run Code Online (Sandbox Code Playgroud)

但通常简单地使用会更有效,nice因为当其他人不需要它们时,这将为您提供所有 48 个核心:

find scripts/ -type f | nice -n 15 parallel
Run Code Online (Sandbox Code Playgroud)

了解更多: