限制erlang使用的核心数

时间:2012-11-11 11:30:07

标签: multithreading erlang scalability smp

我正在使用2 x四核Xeon E5520 2.2GHz,24.0GB RAM和Erlang R15B02(启用SMP)的节点上运行实验。我想知道是否可以限制Erlang VM使用的内核数量,以便我可以暂时禁用某些内核并逐步增加数量以测试可伸缩性。

我在此节点上没有root访问权限。所以我期待一些方法,可以通过指定erl的参数或通过Erlang代码。

1 个答案:

答案 0 :(得分:13)

您可以通过+S选项将Erlang使用的核心数限制为erl,这允许您设置Erlang创建的调度程序内核线程数。有关详细信息,请参阅erl man page

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