5
我正在使用2个四核至强E5520 2.2GHz,24.0GB RAM和Erlang R15B02(启用SMP)的节点上运行实验。我想知道是否可以限制Erlang虚拟机使用的内核数量,以便我可以暂时禁用一些内核并逐步增加数量以测试可伸缩性。限制erlang使用的内核数量
我在此节点上没有root访问权限。所以我期待的方法是通过指定参数erl
或Erlang代码。
我正在使用2个四核至强E5520 2.2GHz,24.0GB RAM和Erlang R15B02(启用SMP)的节点上运行实验。我想知道是否可以限制Erlang虚拟机使用的内核数量,以便我可以暂时禁用一些内核并逐步增加数量以测试可伸缩性。限制erlang使用的内核数量
我在此节点上没有root访问权限。所以我期待的方法是通过指定参数erl
或Erlang代码。
您可以将Erlang通过+S
选项使用的内核数量限制为erl
,该选项允许您设置Erlang创建的调度程序内核线程的数量。有关更多详细信息,请参见erl man page。
需要注意的是二郎linked-in port drivers和native implemented functions(NIFS)能够创建自己的线程,从而影响多少个核心的Erlang进程将独立通过+S
选项指定的线程使用了,虽然没有标准的驱动程序或NIFS的做到这一点。另外选项erl
创建一个供驱动程序使用的异步线程池,这也可能影响所使用的内核数量,默认情况下,异步线程池有10个线程(在Erlang/OTP版本R16B之前默认为空) 。
谢谢!请你解释一下'+ S 4:2'和'+ S 2:2'(即'Schedulers'大于'SchedulerOnline')之间的区别吗? –
“+ S 2:2”表示您需要两个调度程序,并且您希望它们都处于联机状态。 '+ S 4:2'意味着你需要四个调度器,但你只需要两个在线。还要注意,在运行时,应用程序可以通过'erlang:system_info/1'和'erlang:system_flag/2'函数检查和更改调度程序和在线调度程序的数量;请参阅[system_info/1](http://www.erlang.org/doc/man/erlang.html#system_info-1)和[system_flag/2](http://www.erlang.org/doc)的文档/man/erlang.html#system_flag-2)以获取更多详细信息。 –
但由于在线调度程序的数量相同,因此不同'Schedulers'值有什么不同? –