微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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