我正在一个具有 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 drivers和 native implemented functions (NIF) 可以创建自己的线程,从而影响 Erlang 进程将使用的内核数量,而与通过 +S
指定的线程无关。选项,尽管标准驱动程序或 NIF 都没有这样做。还有 +A
选项 erl
创建一个异步线程池供驱动程序使用,这也可能影响使用的内核数,默认情况下异步线程池有 10 个线程(在 Erlang/OTP 版本 R16B 之前默认为空)。
关于multithreading - 如何限制 Erlang VM (BEAM) 使用的内核数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330701/