如何解决运行比 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 举报,一经查实,本站将立刻删除。