如何限制Erlang VM(BEAM)使用的内核数量?

zwghvu4y  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(142)

我正在一个节点上运行实验,该节点具有2个四核Xeon E5520 2.2GHz、24.0GB RAM和Erlang R15B02(支持SMP)。我想知道是否可以限制Erlang VM使用的内核数量,以便我可以暂时禁用一些内核,然后逐步增加内核数量,以测试可扩展性。
我在这个节点上没有root访问权限,所以我期待一些方法,要么通过指定erl的参数,要么通过Erlang代码。

ev7lccsx

ev7lccsx1#

您可以通过+S选项将Erlang使用的内核数量限制为erl,这允许您设置Erlang创建的调度器内核线程的数量。有关详细信息,请参阅erl man page
请注意,Erlang linked-in port driversnative implemented functions(NIF)都可以创建自己的线程,从而影响Erlang进程将使用多少内核,而不受通过+S选项指定的线程的影响,尽管标准驱动程序或NIF都不这样做。此外,erl+A选项创建了一个异步线程池,供驱动程序使用,这也可能影响所使用的内核数量,并且默认情况下异步线程池有10个线程(在Erlang/OTP版本R16 B之前默认情况下为空)。

相关问题