Ja. Standardmäßig startet Erlang einen Scheduler (Betriebssystem-Thread) für jede CPU und versucht, die Last gleichmäßig auf die Scheduler zu verteilen. Es ist jedoch nicht garantiert, dass die vier Prozesse in vier verschiedenen CPUs verarbeitet werden, da normalerweise viel mehr parallel passiert. Wenn Sie wissen möchten, wie viele Scheduler Erlang gestartet hat, starten Sie einfach iex
(oder erl
, für die Angelegenheit).
~$ iex
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
...
Zum Beispiel hat mein Computer eine CPU mit 8 Kernen. In der ersten Zeile der Ausgabe sehen Sie die aktuelle Konfiguration. Aus dem Teil [smp:8:8]
können Sie sehen, dass SMP mit 8 Schedulern konfiguriert ist, von denen 8 online sind. Die Anzahl der Scheduler/Threads kann mit the +S
flag überschrieben werden.
+ S Schedulers: SchedulerOnline
Legt die Anzahl der Scheduler-Threads zu erstellen und Scheduler-Threads online gesetzt, wenn SMP-Unterstützung aktiviert wurde. Das Maximum für beide Werte ist 1024. Wenn das Erlang Laufzeitsystem die Anzahl der konfigurierten logischen Prozessoren und die verfügbaren logischen Prozessoren ermitteln kann, werden Scheduler standardmäßig auf logische Prozessoren konfiguriert, und SchedulersOnline wird standardmäßig auf logische Prozessoren verfügbar; andernfalls werden die Standardwerte sein 1. [...]
Die Zahl der Disponenten Online kann auch zur Laufzeit über :erlang.system_flag(:schedulers_online, n)
geändert werden. Ich würde jedoch davon abraten, die Standardeinstellungen zu ändern, es sei denn, Sie stoßen auf ein bestimmtes Problem.
Erlang und OTP in Aktion deckt die Grundlagen von diesem wirklich gut in einem der ersten Kapitel ab. http://www.amazon.com/Erlang-OTP-Action-Martin-Logan/dp/1933988789 – jjbohn
Bearbeitete meine Antwort, um weitere Details zur Überprüfung der aktuellen Scheduler-Konfiguration und Links zur Erlang-Dokumentation zu geben. –