运行比 gnu parallel 可用的处理器更多的作业

问题描述

我正在学习如何使用 gnu parallel,但我对语法有点困惑。从 gnu 并行手册中,我了解到 --jobs/-j 标志表示要并行运行的“作业”(或进程?)的数量。所以我做了以下事情:

parallel --joblog mylogs -N0 -j64 sleep 20 :::: num128

这是上面例子的链接https://zenodo.org/record/1146014#.YBoS0XdKhlc(第 7 章)

num128 是每行包含 1-128 数字的文件

我的机器能够处理“作业”。但我期待某种瓶颈,或错误表明并行运行的作业多于可用处理器。 使用“lscpu”后,这是我获得的机器信息:

Architecture:        x86_64
cpu op-mode(s):      32-bit,64-bit
cpu(s):              8
Thread(s) per core:  2
Core(s) per socket:  4
Socket(s):           1

我是否遗漏或混淆了一些概念?最终,我将运行 Python 脚本的多个实例,并且我想并行运行它们,但又不会让我的系统不堪重负,那么并行运行代码时要遵循的好做法是什么?我假设我应该使用比我可用的物理核心少一两个物理核心,以便为机器提供足够的核心能力来执行其通常的后台任务。但话又说回来,我能够同时提交 64 个“作业”而不会出现任何错误。这是否意味着我可以毫无问题地运行 64 个 python 脚本实例?还有什么是最适合与 ps 命令一起使用来跟踪进程及其 ID 的标志?到目前为止,我一直在使用:

ps -aux | grep sleep 

感谢您的投入!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)