Domanda

Quando avvio il mio emulatore Erlang, c'è il primo bit ha un mucchio di cose informativi. (Leggermente riformattato per effetto.)

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> 

Alcuni di essi posso indovinare, probabilmente accurate, ma parte di essa significa 'qui essere magico'.

  • Erlang (BEAM) emulator version 5.6.5: la versione, ovviamente
  • [source]:? L'emulatore è stato compilato dai sorgenti
  • [smp:2]: due core rilevati e disponibile
  • [async-threads:0]:? attualmente in esecuzione di posti di lavoro
  • [hipe]:?
  • [kernel-poll:false]:?

Mi chiedo anche se ci sono altri elementi che possono [foo] pop-up con configurazioni diverse, costruisce o avviare parametri.

Così, che cosa fanno le informazioni emulatore dichiarazioni Erlang dire?

È stato utile?

Soluzione

[asincrone-discussioni: 0]

Dimensioni del pool di thread asincrono disponibile per driver caricati da utilizzare. Ciò consente di bloccare syscalls da eseguire in un thread kernel separato dal vm fascio. Utilizzare opzione di comando +A N per regolare la dimensione del pool.

[hipe]

Il supporto per la compilazione nativa della sorgente di Erlang e bytecode. Tende ad essere particolarmente utile per numero di codice sgranocchiare. Codice IO-bound fare bene sul interprete bytecode.

[kernel-poll: true]

C'è il vecchio select (2) e poll (2) chiamate di sistema per ricevere la notifica che un descrittore di file è pronto per sbloccare la scrittura o la lettura. Essi non scala bene a elevato numero di descrittori di file aperti. operatingSystems moderni hanno interfacce alternative, Linux ha epoll, FreeBSD ha kqueue. Abilita con interruttore di comando +K true

Altri suggerimenti

Come di Erlang 20,0 , la serie completa di tag versione stringa è:

[64-bit]

L'emulatore BEAM è costruito per fare pieno uso di una CPU a 64 bit.

[asincrone-discussioni: 10]

Si riferisce al numero di thread nel pool di thread asincrono dell'emulatore Erlang, che più o meno ti dice quante chiamate di sistema bloccate possono essere scorporate in thread in background prima che le bancarelle emulatore.

Anche se attualmente il default è 10, il valore predefinito è 0 per molti anni, il che significava che tutte le chiamate di sistema sono stati eseguiti in modo sincrono all'interno di ciascun thread emulatore Erlang. Quando una chiamata di sistema bloccato, si è fermato che Erlang filo emulatore esecuzione finché la chiamata di sistema finito. L'attuale valore di default piccolo consente l'emulatore per cercare di andare fuori e fare qualcosa di diverso, mentre una chiamata di sistema sta bloccando uno dei async I fili / O.

È possibile modificare il valore predefinito con l'opzione +A al runtime Erlang. (Ad esempio erl +A 50) Se avete intenzione di cambiare questo, fate attenzione che i risultati dipendono dalla particolare sistema e il carico di lavoro. Un valore troppo alto potrebbe danneggiare le prestazioni, perché fa sì che il sistema per provare a fare molte cose in background quando il sistema è molto occupato, il che rende solo ancora più occupato. Su alcuni carichi di lavoro, disabilitazione della funzione con erl +A 0 potrebbe essere l'opzione migliore.

[debug-compilato]

Questo appare solo se si va fuori del vostro modo di costruire un emulatore BEAM si alternano con le opzioni del compilatore appresta a fare la risultante eseguibile più facile da mettere a punto, come con gdb o simili. È inoltre necessario eseguire questo emulatore BEAM si alternano in un modo speciale.

L'emulatore Erlang BEAM è normalmente costruito per la velocità, che spesso rende il lavoro di un debugger più difficile. Se si sta lavorando sullo sviluppo della prossima versione dell'emulatore BEAM, potreste trovare utile per eseguire il debug speciale build di esso come a perfezionare il vostro lavoro.

Per abilitare questa modalità, cd in erts/emulator sotto l'albero dei sorgenti Erlang dopo aver eseguito configure su di esso, quindi digitare qualcosa come ERL_TOP=../.. make FLAVOR=smp debug. Poi per eseguire il nuovo emulatore debuggable BEAM, è necessario eseguire bin/cerl -debug dal livello superiore dell'albero dei sorgenti Erlang, dopo che il resto del sistema Erlang / OTP è stato costruito.

Vedere Come costruire un debug abilitato Erlang runtime di sistema per più su questo argomento.

[ds: 1: 1: 1]

A partire dal ERTS 9.0, questo dovrebbe sempre apparire quando si è costruito l'emulatore BEAM con il supporto SMP. Si riferisce ai " scheduler sporchi " caratteristica. I valori descrivono la configurazione della funzione su questo sistema.

Questa funzionalità è stata introdotta con Erlang 19.0, inizialmente come una funzione sperimentale che non è stato compilato per default in SMP costruisce come in Erlang 20.0.

[dtrace]

Appare se hai superato --with-dynamic-trace=dtrace allo script configure per abilitare la DTrace caratteristica strumentazione aggiunto in R15B01. Questa funzione è previsto solo per lavorare su OS X, Solaris e FreeBSD. Si può lavorare su altre piattaforme in futuro. Vedere [systemtap] sotto per un'alternativa aggiunto allo stesso tempo per i sistemi Linux.

[frame-pointer]

Questo è un caso speciale della [debug-compilato] sopra, con la differenza che disabilita solo il cornice ottimizzazione puntatore . Utilizzare frmptr anziché debug nei comandi sopra per attivare questa modalità.

[hipe]

L'emulatore è stato compilato con la Hipe funzione attivata, che è un on-the-fly compilatore di codice nativo per Erlang. Funziona solo sui tipi di CPU più popolari che Erlang supporta, e non funziona con tutte le configurazioni anche su queste CPU, che è il motivo per cui è facoltativa.

[istruzioni conteggio]

Appare se si definisce ERTS_OPCODE_COUNTER_SUPPORT durante la costruzione, che consente una funzione di conteggio BEAM codice operativo, presumibilmente utile a chi profiling delle prestazioni BEAM emulatore.

[kernel-poll: true]

Il codice dell'emulatore Erlang conosce diversi modi per chiedere stack di rete del sistema operativo, che di un insieme di descrittori di file e prese sono disponibili per I / O. L'unico che funziona un po 'ovunque è la vecchia chiamata select() BSD che è relativamente lento per il suo design, e ha altri problemi di scalabilità oltre. Così, la maggior parte dei sistemi hanno uno o più sostituti più veloce e più scalabile - per esempio, kqueue, epoll(), ecc - ma nessuno di loro è supportato in tutto il mondo. Quando il messaggio di avvio dell'emulatore dice false qui, può significare sia che polling kernel non è disponibile o che sia, ma non ha superato +K true a erl.

[Blocco controllo]

Appare se hai superato --enable-lock-check per lo script di configurazione.

[Blocco conteggio]

Appare se hai superato --enable-lock-counter per lo script di configurazione.

[LTTng]

Appare se hai superato --with-dynamic-trace=lttng allo script configure per abilitare il supporto per LTTng , un quadro tracciato per Linux .

[Purify-compilato]

Questo appare quando si esegue un Purify versione -consapevoli l'emulatore Erlang BEAM. Le istruzioni sono le stesse come nel [debug-compilato] sopra, solo che si utilizza purify nei comandi invece di debug.

[condivisione-preservando]

Questo appare se si passa --enable-sharing-preserving allo script configure, che provoca a condividi Diritti immutabili intra-node invece di appiattimento e di ricreare. Se questa opzione rende il programma più veloce o più lento dipende i dettagli del programma, quindi, perché non è impostata nella build di default.

[SMP: 2: 2]

Il [SMP: 2] tag cambiato in questo formato in Erlang R13, che significa 2 pianificatori, entrambi i quali sono online. Se dici "Erl + S1", dice [SMP: 1: 1] , invece. Si può prendere utilità di pianificazione in linea in fase di esecuzione con Erlang:. SYSTEM_FLAG (schedulers_online, N), dove N può essere qualsiasi cosa tra il 1 e il numero di core rilevati, inclusi

[fonte] o [fonte-VERSION]

E 'significa che alcuni di terze parti (forse si, forse manutentore del pacchetto del sistema operativo di distribuzione, forse il vostro amministratore di sistema) costruito Erlang dal codice sorgente. L'alternativa è il download una versione binaria ufficiale del Erlang.org.

Se si costruisce Erlang da il Git repository , questo messaggio cambia a qualcosa come [source-8acc644] , dove il numero esadecimale è un frammento del repository corrente Git hash , che permette di controllare la versione esatta della fonte che ha costruito un dato eseguibile.

[systemtap]

Appare se hai superato --with-dynamic-trace=systemtap allo script configure. Questa è un'alternativa al valore =dtrace per questa opzione di configurazione, fornendo essenzialmente la stessa funzionalità in Linux utilizzando SystemTap , in quanto DTrace non è normalmente disponibile su Linux. Vedere [dtrace] sopra.

[TYPE-asserzioni]

appare quando si rimuove il commento dalla linea di ET_DEBUG in erts/emulator/beam/erl_term.h, consentendo il controllo di esecuzione di tutti i dati specifici del tipo di accessi. Non abilitato di default perché rallenta l'emulatore.

[valgrind-compilato]

Questo appare quando si esegue un Valgrind versione -consapevoli dell'emulatore Erlang BEAM. Le istruzioni sono le stesse come nel [debug-compilato] sopra, solo che si utilizza valgrind nei comandi invece di debug.


(Questo elenco viene dal erts/emulator/beam/erl_bif_info.c nell'albero dei sorgenti Erlang OTP. Vedere la definizione di erts_system_version vicino alla parte superiore del file.)


tag obsoleti :

  • Il [64-bit halfword] di ottimizzazione per 64 bit costruisce dell'emulatore BEAM è stata aggiunta nel R14, poi rimosso senza alcuna spiegazione a 19,0. Ciò elimina anche la possibilità di vedere le [no-c-stack-oggetti] di tag, che è stato associato con l'emulatore halfword.

  • Il [RQ: 2] tag di cui un sistema di coda di esecuzione destinata a migliorare la scalabilità SMP in costruisce dell'emulatore Erlang BEAM. Aggiunto in R13B, è stato sostituito nel R15B da una soluzione migliore .

  • Il [hybrid-heap] e [GC incrementale] i tag e le funzioni associate sono stati rimossi in R15B02 essenzialmente perché erano non riuscita experiements .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top