2012-11-11 24 views
5

Ich führe Experimente auf einem Knoten mit 2 x Quad-Core Xeon E5520 2,2 GHz, 24,0 GB RAM und Erlang R15B02 (SMP aktiviert). Ich frage mich, ob ich die Anzahl der von der Erlang-VM verwendeten Kerne begrenzen kann, so dass ich einige Kerne vorübergehend deaktivieren und die Anzahl Schritt für Schritt erhöhen kann, um die Skalierbarkeit zu testen.begrenzen die Anzahl der Kerne von Erlang verwendet

Ich habe keinen Root-Zugriff auf diesen Knoten. Also erwarte ich eine Methode, die entweder durch Angabe von Parametern erl oder durch Erlang-Code ist.

Antwort

13

Sie können die Anzahl der Cores, die Erlang verwendet, über die Option +S auf erl begrenzen, mit der Sie die Anzahl der Scheduler-Kernel-Threads festlegen können, die Erlang erstellt. Weitere Informationen finden Sie unter erl man page.

Beachten Sie, dass Erlang linked-in port drivers und native implemented functions (NIF), die beide ihre eigenen Threads erstellen können und somit Einfluss darauf, wie viele Kerne ein Erlang Prozess unabhängig von den über die +S Option angegeben Threads verwenden, obwohl keine der Standard-Treiber oder NIFs dies tun . Auch die +A Option zu erl erstellt einen Pool von asynchronen Threads für die Verwendung von Treibern, die auch die Anzahl der verwendeten Kerne beeinflussen können, und der asynchrone Threadpool hat standardmäßig 10 Threads (er war standardmäßig leer vor Erlang/OTP Version R16B) .

+0

Danke! Könnten Sie bitte den Unterschied zwischen '+ S 4: 2' und' + S 2: 2' erklären (d. H. 'Scheduler' ist größer als' SchedulerOnline')? –

+1

'+ S 2: 2' bedeutet, dass Sie zwei Scheduler haben wollen und beide online möchten. '+ S 4: 2' bedeutet, dass Sie vier Scheduler haben möchten, aber nur zwei davon online. Beachten Sie auch, dass Ihre Anwendung zur Laufzeit die Anzahl der Scheduler und Online-Scheduler über die Funktionen "erlang: system_info/1" und "erlang: system_flag/2" prüfen und ändern kann; Weitere Informationen finden Sie in der Dokumentation zu [system_info/1] (http://www.erlang.org/doc/man/erlang.html#system_info-1) und [system_flag/2] (http://www.erlang.org/doc /man/erlang.html#system_flag-2) für weitere Details. –

+0

Aber da die Anzahl der Online-Scheduler die gleiche ist, was ist der Effekt der verschiedenen "Scheduler" -Werte? –