限制erlang使用的核心数

Xia*_*Jia 5 erlang multithreading scalability smp

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

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

Ste*_*ski 13

您可以通过+S选项限制Erlang使用的核心数erl,这允许您设置Erlang创建的调度程序内核线程数.有关更多详细信息,请参见erl手册页.

请注意,Erlang 链接端口驱动程序本机实现的函数(NIF)都可以创建自己的线程,从而影响Erlang进程将独立于通过该+S选项指定的线程使用的核心数,尽管没有标准驱动程序或NIF执行这个.还+A可以选择erl创建供驱动程序使用的异步线程池,这也可能影响所使用的内核数量,默认情况下,异步线程池有10个线程(默认情况下,在Erlang/OTP版本R16B之前它是空的).

  • 我之前的评论有点误导,所以它可能是你混淆的原因.应该说`erlang:system_info/1`允许你检查调度程序的数量和在线调度程序的数量,而'erlang:system_flag/2`允许你改变在线调度程序的数量.这两个数字是不同的:调度程序的数量是您运行Erlang VM时可用的最大数量,并且在启动时是固定的.在线调度程序的数量范围从1到调度程序的数量; 你通过`erlang:system_flag/2`改变它.默认情况下,数字是相同的. (2认同)