在更大的 Google Compute Engine 机器类型上分配特定 CPU 的特定并行进程

在更大的 Google Compute Engine 机器类型上分配特定 CPU 的特定并行进程

我已经找到了这个 SU 问题(类似但不相同):

如何将 Google Compute Engine CPU 利用率限制为 100%

我不希望并行处理彼此隔离,不同的进程需要定期相互交互...如果我正确理解了这个概念,那么 Kubernetes 就是对不同的进程进行沙盒化(容器化),以便出于安全考虑,它们不会互相干扰,它应该是更高效的 VM 沙盒化版本(也就是说,我不必担心其他人和他们的 VM 会感染我的 VM)...

我能想到的唯一替代方案是初始化几个仅具有单个 CPU 的小型 VM,然后通过 REST API 相互交互,但这对于我的特定项目来说效率低下,因为神经网络所需的 RAM 量仅比最大的高内存机器类型可用的最多 RAM 少一点...我知道英特尔芯片应该具有优化功能,但是我可以明确分配非常具体的部分用于并行处理...有人有链接吗?

答案1

https://www.cyberciti.biz/faq/how-to-run-command-or-code-in-parallel-in-bash-shell-under-linux-or-unix/

语法是:命令 & 命令 arg1 arg2 & 自定义函数 &

或 prog1 & prog2 & 等待 prog3

在上面的代码示例中,prog1 和 prog2 将在后台启动,并且 shell 将等到它们完成后再启动下一个名为 progr3 的程序。

要显示当前 shell 会话中作业的状态,请运行 jobs 命令,如下所示:$ jobs

答案2

http://www.acuriousanimal.com/2017/08/12/understanding-the-nodejs-cluster-module.html

NodeJS 进程在单个进程上运行,这意味着默认情况下它不会利用多核系统。如果您有 8 核 CPU 并通过 $ node app.js 运行 NodeJS 程序,它将在单个进程中运行,浪费剩余的 CPU。

希望 NodeJS 能提供集群模块,其中包含一组函数和属性,可帮助我们创建使用所有 CPU 的程序。集群模块用于最大化 CPU 使用率的机制是通过分叉进程,这不足为奇,类似于旧的 Unix 系统 fork() 系统调用。

相关内容