multithreading - 如何限制 Erlang VM (BEAM) 使用的内核数量?

标签 multithreading erlang scalability smp

我正在一个具有 2 个四核 Xeon E5520 2.2GHz、24.0GB RAM 和 Erlang R15B02(启用 SMP)的节点上运行实验。我想知道我是否可以限制Erlang VM使用的核心数量,以便我可以暂时禁用一些核心并逐步增加数量以测试可扩展性。
我没有 root访问此节点。所以我期待一些方法,要么通过指定参数给 erl或通过 Erlang 代码。

最佳答案

您可以通过 +S 限制 Erlang 使用的内核数选项 erl ,它允许您设置 Erlang 创建的调度程序内核线程的数量。见 erl man page更多细节。

注意 Erlang linked-in port driversnative implemented functions (NIF) 可以创建自己的线程,从而影响 Erlang 进程将使用的内核数量,而与通过 +S 指定的线程无关。选项,尽管标准驱动程序或 NIF 都没有这样做。还有 +A选项 erl创建一个异步线程池供驱动程序使用,这也可能影响使用的内核数,默认情况下异步线程池有 10 个线程(在 Erlang/OTP 版本 R16B 之前默认为空)。

关于multithreading - 如何限制 Erlang VM (BEAM) 使用的内核数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330701/

相关文章:

依赖于库应用程序的 Erlang EUnit 测试模块

php - 我的 SAAS 应用程序可以使用哪个计费提供商?

testing - 是否有明确的软件可伸缩性测试模式?

java - 如何停止可运行的线程

multithreading - Condition 的哪些实现不需要当前线程持有锁?

erlang - Erlang 中有一个好的 OpenID 实现吗?

erlang - Elixir 调用 :io_lib. fread

node.js - 将计算繁重的任务与基于 Nodejs 的 API 分开的推荐方法是什么?

java - 从 Java 中同一类的另一个同步方法内创建的新线程调用同步方法

java - Kafka 消费者抛出 java.lang.OutOfMemoryError : Direct buffer memory