デフォルトでは、ErlangはSMPでコンパイルされた場合、8つのスケジューラを起動する必要があります。スタートアップヘッダでこれを見ることができます:
Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:8:8] [rq:2] [async-threads:0]
[hipe] [kernel-poll:false] ^^^^^^^^^
これはフラグとして-smp auto
を与えることと等価です。 -smp enable
は、単一のコアシステム(通常はパフォーマンスがやや低下します)でもSMPモードを強制します。
フラグ+S
フラグを使用すると、作成するスケジューラの数(およびオンラインにする予定の数)を制御できます。たとえば:
$ erl +S16:16
Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:16:16] [rq:16]
[async-threads:0] [hipe] [kernel-poll:false]
さらに行く、あなたは正確にスケジューラがその正確なコア上に存在すべきかを定義する+sct
フラグを使用することができます。そのフラグの説明については、かなり複雑なのでerlang manualを参照してください。
ただし、Erlangは、OSが公開している場合は、コアごとに1つのスケジューラを(ハイパースレッドであっても)すでに開始しているはずです。ハイパースレッドが既に表示されているデュアルクアッドコアシステムで実行していないことを確認します(合計8つの仮想コアにします)。
いくつかのアプリケーションでは、erlインスタンスごとに1つのスケジューラだけを起動し、コアごとに1つのインスタンスを起動することで、より多くのパフォーマンスを鍛えることができます。 –