Erlang - 将每个 "erlang process" 映射到新的内核线程

Erlang - map each "erlang process" to new kernel thread

我正在研究一个基于 erlang 的系统,并试图分析系统中发生的事件的顺序。每次调用 "spawn" 时,有没有办法强制 erlang 运行-time 或 elang vm 创建一个新的内核线程。这会使系统变慢,但会使研究变得容易得多。 我已经尝试了 +S 标志,并且已经启用了 smp,但我怀疑系统仍在将多个进程映射到一个内核线程或 erlang 调度程序。是否缺少 inputs/configuration 个参数?

不,这不是 Erlang VM 的工作方式。 BEAM 为每个内核和 运行s 调度程序生成线程。每个 Erlang 进程都可以 运行 在任何调度器上,甚至可以从一个调度器迁移到另一个调度器,这使得它们从一个线程迁移到另一个线程。默认情况下,这些调度程序甚至没有绑定到 CPU 核心,因此它们可以从一个核心迁移到另一个核心。您可以使用 -sbt 开关绑定它们。您还可以将 Erlang 进程绑定到未记录且强烈不推荐的特定调度程序。你不能从 Erlang 中生成一个线程,而是从 NIF 或端口中生成一个线程,但是这样你就不能 运行 Erlang 在这个线程上进行任何处理。