我正在使用 2 个四核 Xeon E5520 2.2GHz、24.0GB RAM 和 Erlang R15B02(启用 SMP)的节点上运行实验。我想知道是否可以限制 Erlang VM 使用的核心数量,以便我可以暂时禁用一些核心并逐步增加数量,以测试可扩展性。
我无权root
访问此节点。所以我期待一些方法,要么通过指定参数,erl
要么通过 Erlang 代码。
我正在使用 2 个四核 Xeon E5520 2.2GHz、24.0GB RAM 和 Erlang R15B02(启用 SMP)的节点上运行实验。我想知道是否可以限制 Erlang VM 使用的核心数量,以便我可以暂时禁用一些核心并逐步增加数量,以测试可扩展性。
我无权root
访问此节点。所以我期待一些方法,要么通过指定参数,erl
要么通过 Erlang 代码。
您可以通过+S
选项 to限制 Erlang 使用的内核数量erl
,这允许您设置 Erlang 创建的调度程序内核线程的数量。有关详细信息,请参阅erl 手册页。
请注意,Erlang链接端口驱动程序和本机实现函数(NIF) 都可以创建自己的线程,因此会影响 Erlang 进程将使用多少内核,而与通过+S
选项指定的线程无关,尽管标准驱动程序或 NIF 都没有这样做这个。此外,还+A
可以选择erl
创建异步线程池供驱动程序使用,这也可能影响使用的内核数量,默认情况下异步线程池有 10 个线程(在 Erlang/OTP 版本 R16B 之前默认为空)。