Frage

Wenn ich meinen Erlang -Emulator starte, hat das erste Stück eine Reihe von informativen Dingen. (Leicht neu formatiert.)

manoa:~ stu$ erl
Erlang (BEAM) emulator version 5.6.5 
[source] [smp:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5 (abort with ^G)
1> 

Einiges davon kann ich vermuten, wahrscheinlich genau, aber einige davon bedeutet "Hier ist Magie".

  • Erlang (BEAM) emulator version 5.6.5: Die Version natürlich
  • [source]: Der Emulator wurde aus der Quelle zusammengestellt?
  • [smp:2]: Zwei CPU -Kerne entdeckt und verfügbar
  • [async-threads:0]: Derzeit leiten Jobs?
  • [hipe]: ?
  • [kernel-poll:false]: ?

Ich frage mich auch, ob es andere gibt [foo] Elemente, die mit unterschiedlichen Konfigurationen, Builds oder Startparametern auftauchen können.

Was bedeuten die Erlang -Emulator -Info -Anweisungen?

War es hilfreich?

Lösung

Async-Threads: 0

Größe des asynchronen Threadpools für geladene Treiber verfügbar. Auf diese Weise können das Blockieren von Syscalls in einem separaten Kernelfaden aus dem Strahl -VM durchgeführt werden. Verwenden Sie den Befehlsschalter +A N um die Größe des Pools einzustellen.

Hipe

Unterstützung für die native Zusammenstellung von Erlang -Quelle und Bytecode. Ist meistens nützlich für den Zahlen -Crunching -Code. IO-gebundener Code ist auf dem Bytecode-Interpreter einwandfrei.

Kernel-Poll: Falsch

Es gibt das alte System für die alte Auswahl (2) und Umfrage (2), die eine Benachrichtigung erhalten, dass ein Dateideskriptor für das Entblockern von Schreiben oder Lesen bereit ist. Sie skalieren nicht gut auf eine hohe Anzahl offener Dateideskriptoren. Moderne Operatings -Systeme haben alternative Schnittstellen, Linux hat EPOLD, FreeBSD hat Kqueue. Mit dem Befehlsschalter aktivieren +K true

Andere Tipps

Ab Erlang 20.0, Der vollständige Satz von Versions -String -Tags lautet:

64-Bit

Der Strahlemulator ist gebaut, um eine 64-Bit-CPU voll auszunutzen.

Async-Threads: 10

Dies bezieht sich auf die Anzahl der Threads im Async -Thread -Pool des Erlang -Emulators, wobei Sie mehr oder weniger mitteilen, wie viele blockierte Systemaufrufe in Hintergrund -Threads abgegeben werden können, bevor die Emulators stehen.

Obwohl es derzeit standardmäßig 10 Jahre alt ist, betrug der Standard für viele Jahre 0 0, was bedeutete, dass alle Systemaufrufe in jedem Erlang -Emulator -Thread synchron ausgeführt wurden. Wenn ein Systemaufruf blockiert wurde, verhinderte er, dass der Erlang -Emulator -Thread ausgeführt wurde, bis der Systemaufruf fertig ist. Mit dem aktuellen kleinen Standardwert kann der Emulator versuchen, zu versuchen, etwas anderes zu machen, während ein Systemaufruf eines der asynchronen E/A -Threads blockiert.

Sie können den Standardwert mit dem ändern +A Option zur Erlang -Laufzeit. (z.B erl +A 50) Wenn Sie dies ändern möchten, achten Sie darauf, dass Ihre Ergebnisse von Ihrem speziellen System und Ihrer Arbeitsbelastung abhängen. Ein zu hoher Wert könnte die Leistung beeinträchtigen, da das System versucht, viele Dinge im Hintergrund zu tun, wenn das System sehr beschäftigt ist, was es nur noch stärker macht. Bei einigen Workloads deaktivieren Sie die Funktion mit erl +A 0 könnte die beste Option sein.

Debugg-kompiliert

Dies erscheint nur, wenn Sie sich bemühen, einen alternativen Strahlemulator mit den Compiler -Optionen zu erstellen, die so eingestellt sind, dass die resultierende ausführbare Datei wie mit gdb oder ähnliches. Sie müssen diesen alternativen Strahlemulator auch auf besondere Weise ausführen.

Der Erlang Beam Emulator ist normalerweise für Geschwindigkeit gebaut, was oft schwieriger zu Debugger wird. Wenn Sie an der Entwicklung der nächsten Version des Beam -Emulators arbeiten, ist es möglicherweise hilfreich, spezielle Debug -Builds davon durchzuführen, wenn Sie Ihre Arbeit verfeinern.

Um diesen Modus zu aktivieren, cd hinein erts/emulator Unter dem Erlang -Quellbaum nach dem Laufen configure Dann tippen Sie dann so etwas wie ERL_TOP=../.. make FLAVOR=smp debug. Um Ihren neuen Debuggable Beam Emulator auszuführen, müssen Sie rennen bin/cerl -debug Aus der oberen Ebene des Erlang -Quellbaums wurde nach dem Rest des Erlang/OTP -Systems gebaut.

Sehen So erstellen Sie ein Debugg -ermöglichtes Erlang -Laufzeitsystem Weitere Informationen zu diesem Thema.

DS: 1: 1: 1

Ab ERTS 9.0 sollte dies immer angezeigt werden, wenn Sie den Strahlemulator mit SMP -Unterstützung erstellt haben. Es bezieht sich auf das "Schmutzige Scheduler"Feature. Die Werte beschreiben die Konfiguration der Funktion in diesem System.

Diese Funktion wurde mit Erlang 19.0 eingeführt, zunächst als experimentelles Merkmal, das in SMP -Builds standardmäßig nicht wie in Erlang 20.0 zusammengestellt wurde.

Dtrace

Erscheint, wenn Sie bestanden haben --with-dynamic-trace=dtrace zum configure Skript, um das Experimental zu ermöglichen Dtrace Instrumentierungsfunktion in R15B01 hinzugefügt. Es wird nur erwartet, dass diese Funktion unter OS X, Solaris und FreeBSD funktioniert. Es kann in Zukunft auf anderen Plattformen funktionieren. Sehen SystemTap Unten für eine Alternative zur gleichen Zeit für Linux -Systeme.

Frame-Zeiger

Dies ist ein Sonderfall der Debugg-kompiliert Option oben, außer dass es nur deaktiviert wird Rahmenzeigeroptimierung. Verwenden frmptr Anstatt von debug in den obigen Befehlen, um diesen Modus zu aktivieren.

Hipe

Der Emulator wurde mit dem zusammengestellt Hipe Feature aktiviert, ein nationaler Code-Compiler im Fliege für Erlang. Es funktioniert nur bei den beliebtesten CPU -Typen, die Erlang unterstützt, und es funktioniert nicht mit allen Konfigurationen, selbst bei diesen CPUs, weshalb es optional ist.

Anweisungsabdeckung

Erscheint, wenn Sie definieren ERTS_OPCODE_COUNTER_SUPPORT Während des Builds, der eine Strahl -Opcode -Zählfunktion ermöglicht, die vermutlich für die Leistung der Profile -Strahlemulator -Leistung nützlich ist.

Kernel-Poll: Falsch

Der Erlang -Emulator -Code kennt verschiedene Möglichkeiten, um den Netzwerkstapel des Betriebssystems zu fragen, welcher einer Satz von Dateideskriptoren und Sockets für E/A verfügbar ist. Der einzige, der so ziemlich überall arbeitet, ist die alte BSD select() Rufen Sie aufgrund seines Designs relativ langsam und haben außerdem andere Skalierbarkeitsprobleme. Die meisten Systeme haben also einen oder mehr schnelleren und skalierbaren Ersatz - z. B. Kquee, epoll(), usw. - aber keiner von ihnen wird überall unterstützt. Wenn die Emulator -Startmeldung sagt false Hier kann es entweder bedeuten, dass Kernel -Umfragen nicht verfügbar sind oder dass es nicht möglich ist, aber Sie haben nicht bestanden +K true zu erl.

Lock-Checking

Erscheint, wenn Sie bestanden haben --enable-lock-check zum Konfigurationsskript.

Lock-Coung

Erscheint, wenn Sie bestanden haben --enable-lock-counter zum Konfigurationsskript.

ltttng

Erscheint, wenn Sie bestanden haben --with-dynamic-trace=lttng zum configure Skript, um Unterstützung für die Unterstützung für Ltttng, ein Tracing -Framework für Linux.

Purify-Compiled

Dies wird angezeigt, wenn Sie ein Special ausführen Reinigen-Age Version des Erlang Beam Emulators. Die Anweisungen sind die gleichen wie in der Debugg-kompiliert Abschnitt oben, außer dass Sie verwenden purify in Befehlen statt von debug.

STEILUNGSVERSÄRTIGUNG

Dies wird angezeigt, wenn Sie bestehen --enable-sharing-preserving zum configure Skript, das dazu führt Teilen Sie unveränderliche Begriffe Intra-Knoten Anstatt sie zu verflachen und nachzubauen. Ob diese Option Ihr Programm schneller oder langsamer macht, hängt von den Details des Programms ab, weshalb es nicht im Standardaufbau festgelegt ist.

SMP: 2: 2

Das SMP: 2 Das Tag wurde in diesem Format in Erlang R13 geändert, was bedeutet, dass 2 Scheduler, die beide online sind. Wenn Sie "Erl +S1" sagen, heißt es SMP: 1: 1 stattdessen. Sie können Scheduler zur Laufzeit mit Erlang: System_flag (Schedulers_online, n) offline stellen, wobei N zwischen 1 und der Anzahl der erkannten Kerne inklusive sein kann.

Quelle] oder [Quellversion

Es bedeutet, dass ein Dritter (vielleicht Sie, vielleicht Ihr Betriebssystem -Paketbetrieb, vielleicht Ihr Sysadmin) Erlang aus dem Quellcode erstellt hat. Die Alternative ist das Herunterladen einer offiziellen binären Version von erlang.org.

Wenn Sie Erlang aus bauen Das Git -Repository, Diese Nachricht ändert sich zu so etwas wie Quelle-8ACC644, wo die Hex -Nummer ein Fragment des Stroms des Repositorys ist Git Hash, Sie können die genaue Version der Quelle überprüfen, die eine bestimmte ausführbare Datei erstellt hat.

SystemTap

Erscheint, wenn Sie bestanden haben --with-dynamic-trace=systemtap zum configure Skript. Dies ist eine Alternative zur =dtrace Wert für diese Konfigurationsoption und liefert im Wesentlichen dieselbe Funktionalität unter Linux unter Verwendung Systemtap, Da DTRACE normalerweise nicht unter Linux verfügbar ist. Sehen Dtrace Oben.

Typ-Asserien

Erscheint, wenn Sie die kontrollieren ET_DEBUG Linie in erts/emulator/beam/erl_term.h, Aktivierung der Laufzeitüberprüfung aller typenspezifischen Datenzugriffe. Standardmäßig nicht aktiviert, da es den Emulator verlangsamt.

Valgrind-kompiliert

Dies wird angezeigt, wenn Sie ein Special ausführen Valgrind-Age Version des Erlang Beam Emulators. Die Anweisungen sind die gleichen wie in der Debugg-kompiliert Abschnitt oben, außer dass Sie verwenden valgrind in Befehlen statt von debug.


(Diese Liste kommt von erts/emulator/beam/erl_bif_info.c im Erlang OTP -Quellbaum. Siehe die Definition von erts_system_version nahe der Oberseite der Datei.)


Veraltete Tags:

  • Das 64-Bit-Halbwort Die Optimierung zu 64-Bit-Builds des Strahlemulators wurde in R14 hinzugefügt und dann 19.0 ohne Erklärung entfernt. Dies beseitigt auch die Möglichkeit, die zu sehen NO-C-Stack-Objects Tag, das mit dem Halbwort -Emulator verbunden war.

  • Das RQ: 2 Das Tag verwies auf ein Run -Warteschlangensystem, mit dem die Skalierbarkeit in SMP -Builds des Erlang -Strahlemulators verbessert werden soll. In R13b hinzugefügt, wurde es in R15b durch ersetzt durch Eine bessere Lösung.

  • Das Hybrid-heap und Inkrementelle GC Tags und zugehörige Merkmale wurden in R15B02 im Wesentlichen deshalb entfernt, weil sie es waren Fehlgeschlagene Erfahrungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top