2
在多核系統中,有多個調度程序來調度Erlang進程。一個調度器映射到一個CPU。我的疑問是:Erlang虛擬機也是在某個內核線程上運行的進程。然後將其映射到哪個CPU?或者根據可用性共享所有CPU。 (OS根據可用性提供CPU時間)?Erlang虛擬機映射到哪個內核線程?
在多核系統中,有多個調度程序來調度Erlang進程。一個調度器映射到一個CPU。我的疑問是:Erlang虛擬機也是在某個內核線程上運行的進程。然後將其映射到哪個CPU?或者根據可用性共享所有CPU。 (OS根據可用性提供CPU時間)?Erlang虛擬機映射到哪個內核線程?
Erlang虛擬機作爲單個OS進程運行。在這個過程中,它運行多個線程,每個調度器一個線程(可能還有用於異步I/O的附加線程等)。默認情況下,每個CPU內核都有一個調度程序線程。
Erlang進程(「綠色線程」)由調度程序線程執行,它們在它們之間進行負載平衡,因此可能會有4個調度程序線程(在四核機器上)執行的10萬個Erlang進程一個單一的操作系統進程。通常,操作系統執行調度程序線程到物理核心的映射,但也可參見How, if at all, do Erlang Processes map to Kernel Threads?。