2012-11-11 44 views
5

我正在使用2個四核至強E5520 2.2GHz,24.0GB RAM和Erlang R15B02(啓用SMP)的節點上運行實驗。我想知道是否可以限制Erlang虛擬機使用的內核數量,以便我可以暫時禁用一些內核並逐步增加數量以測試可伸縮性。限制erlang使用的內核數量

我在此節點上沒有root訪問權限。所以我期待的方法是通過指定參數erl或Erlang代碼。

回答

13

您可以將Erlang通過+S選項使用的內核數量限制爲erl,該選項允許您設置Erlang創建的調度程序內核線程的數量。有關更多詳細信息,請參見erl man page

需要注意的是二郎linked-in port driversnative implemented functions(NIFS)能夠創建自己的線程,從而影響多少個核心的Erlang進程將獨立通過+S選項指定的線程使用了,雖然沒有標準的驅動程序或NIFS的做到這一點。另外選項erl創建一個供驅動程序使用的異步線程池,這也可能影響所使用的內核數量,默認情況下,異步線程池有10個線程(在Erlang/OTP版本R16B之前默認爲空) 。

+0

謝謝!請你解釋一下'+ S 4:2'和'+ S 2:2'(即'Schedulers'大於'SchedulerOnline')之間的區別嗎? –

+1

「+ 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)以獲取更多詳細信息。 –

+0

但由於在線調度程序的數量相同,因此不同'Schedulers'值有什麼不同? –