2

マルチコア システムでは、Erlang プロセスをスケジュールする複数のスケジューラがあります。1 つのスケジューラーが 1 つの CPU にマップされます。私の疑問は次のとおりです。Erlang 仮想マシンも、何らかのカーネル スレッドで実行されるプロセスです。次に、どのCPUにマップされましたか?または、可用性に応じてすべての CPU を共有します。(OS は可用性に応じて CPU 時間を提供します)?

4

1 に答える 1

7

Erlang 仮想マシンは、単一の OS プロセスとして実行されます。そのプロセス内で、スケジューラごとに 1 つずつ、複数のスレッドを実行します (場合によっては、非同期 I/O などの追加スレッドも)。デフォルトでは、CPU コアごとに 1 つのスケジューラ スレッドを取得します。

Erlang プロセス (「グリーン スレッド」) はスケジューラ スレッドによって実行され、それらの間で負荷分散が行われます。そのため、単一のオペレーティング システム内で (クアッドコア マシン上で) 4 つのスケジューラ スレッドによって実行される Erlang プロセスが 10 万に上る可能性があります。処理する。通常、OS はスケジューラ スレッドを物理コアにマッピングしますが、Erlang プロセスはどのようにカーネル スレッドにマッピングされますか?も参照してください。.

于 2012-05-26T16:27:37.013 に答える