Erlang 文档/SMP : single-node and multi-node per machine or per application, 以及随之而来的困惑

标签 erlang ipc scheduled-tasks smp

我现在正在研究 Erlang 的流程模型。我在 tech report 中遇到了问题(第 3 节,第 2 段)关于 Erlang:

This explains why it in some cases can be more efficient to run several SMP VM's with one scheduler each instead on one SMP VM with several schedulers. Of course the running of several VM's require that the application can run in many parallel tasks which has no or very little communication with each other.

现在这一段让我很困惑;我可以看到单进程多调度程序场景,但我没有看到单个调度程序的多个进程;假设每个进程都有一个不同的节点名称,这意味着某个应用程序,未经修改,不能与该模型一起使用; 不需要修改的优点已在报告中被提及为 SMP 的一个关键特性。 如果多个进程具有相同的节点名称,那么由于 Erlang 进程间的消息 Storm ,性能将是灾难性的——假设使用内存中的健忘症。是否有一些本文没有介绍的流程模型,而我在这里遗漏了这些模型?

作者想在这里说什么?他是否试图建议必须为多进程单调度程序案例重写应用程序(以考虑多个唯一节点名称)?

-- 编辑1:澄清问题根源--

问题已通过讨论得到解答;以下是我遇到的麻烦的概述。

我记得,这个问题的问题是文档没有涉及在每台物理机器上运行多个 Erlang 模拟器的场景——它一直表明模拟器代表你的物理机器(在工业用途中) );此外,从未考虑过必须显式划分程序以提高计算效率的情况。这种突然的介绍是我痛苦的根源。

惯例仍然偏向于创建大量进程,并且 future 会为 Erlang 的 SMP 仿真器进行许多改进,这意味着假设有利的应用程序设计,每台机器单个节点仍然是一个非常可行的选择。

最佳答案

阅读文章后重写:

This explains why it in some cases can be more efficient to run several SMP VM's with one scheduler each instead on one SMP VM with several schedulers.

  • 非 SMP 虚拟机没有锁,因此运行速度很快。
  • 由于检查锁的成本,单个调度程序 SMP VM 慢 10%
  • 由于使用/等待锁定,多个调度程序 SMP VM 再次变慢

Of course the running of several VM's require that the application can run in many parallel tasks which has no or very little communication with each other.

  • 我认为:同一服务器上的节点必须有不同的名称。
  • 由于 VM 节点的进程间特性与进程内消息传递相比,进程间消息传递速度较慢。

关于Erlang 文档/SMP : single-node and multi-node per machine or per application, 以及随之而来的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862655/

相关文章:

c++ - Linux IPC - 多个编写器,单个读取器

c++ - Chromium 嵌入式框架 (C++) 和另一个二进制文件之间的 IPC

windows - 计划任务无法在外部服务器上写入文件

java - 使用 java.util.concurrent API 结束线程

Erlang 使用 for() 与列表 :foreach

erlang - 名为timer_server的gen_server导致定时器模块函数不返回

Erlang 语法错误, 'Or'

python - 从源代码构建 rabbitmq

java - 如何让 2 个 JVM 相互通信

azure - Azure 应用服务中的重复任务