如何限制Erlang VM(BEAM)使用的核心数? [英] How to limit the number of cores used by the Erlang VM (BEAM)?
问题描述
我正在一个带有2个四核Xeon E5520 2.2GHz,24.0GB RAM和Erlang R15B02(启用SMP)的节点上进行实验.我想知道是否可以限制Erlang VM使用的内核数量,以便暂时禁用某些内核并逐步增加数量,以测试可伸缩性.
I'm running experiments on a node with 2 x Quad-Core Xeon E5520 2.2GHz, 24.0GB RAM, and Erlang R15B02 (SMP enabled). I wonder if I can limit the number of cores used by the Erlang VM so that I can temporarily disable some cores and increase the number step by step in order to test scalability.
我在此节点上没有 root
访问权限.所以我期望有一种方法,可以通过为 erl
指定参数或通过Erlang代码来实现.
I don't have root
access on this node. So I'm expecting some method which is either by specifying parameters to erl
or by Erlang code.
推荐答案
您可以通过 + S
选项将Erlang使用的内核数限制为 erl
,这允许您可以设置Erlang创建的调度程序内核线程的数量.有关更多详细信息,请参见 erl手册页.
You can limit the number of cores Erlang uses via the +S
option to erl
, which allows you to set the number of scheduler kernel threads Erlang creates. See the erl man page for more details.
请注意,Erlang 链接的端口驱动程序和
Note that Erlang linked-in port drivers and native implemented functions (NIFs) can both create their own threads and thus affect how many cores an Erlang process will use independently of the threads specified via the +S
option, though none of the standard drivers or NIFs do this. Also the +A
option to erl
creates a pool of asynchronous threads for use by drivers that could also affect the number of cores used, and by default the async thread pool has 10 threads (it was empty by default prior to Erlang/OTP version R16B).
这篇关于如何限制Erlang VM(BEAM)使用的核心数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!