Question

Quand je démarre mon émulateur Erlang, il le premier bit a un tas de choses d'information. (Légèrement reformaté pour effet).

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> 

Certaines d'entre elles, je peux deviner, probablement exact, mais certains, cela signifie « ici être magique ».

  • Erlang (BEAM) emulator version 5.6.5: la version, bien sûr
  • [source]: l'émulateur a été compilé à partir des sources
  • [smp:2]: deux coeurs CPU détectés et disponibles
  • [async-threads:0]: actuellement en cours d'exécution emplois
  • [hipe]:
  • [kernel-poll:false]:

Je me demande aussi s'il y a d'autres éléments de [foo] qui peuvent apparaître avec des configurations différentes, construit ou paramètres de démarrage.

Alors, qu'est-ce que les déclarations d'information de l'émulateur Erlang signifie?

Était-ce utile?

La solution

[async-threads: 0]

Taille du pool de threads disponibles pour async pilotes chargés d'utiliser. Ceci permet le blocage syscalls à exécuter dans un thread noyau séparé de la machine virtuelle du faisceau. Utilisez +A N de commutateur de commande pour régler la taille de la piscine.

[hipe]

Prise en charge de la compilation native de source Erlang et bytecode. Tend à être surtout utile pour le numéro de code crissement. Code IO-lié arriveras sur l'interpréteur de bytecode.

[-poll noyau: false]

Il est l'ancien select (2) et poll (2) appels système pour recevoir notification que certains descripteur de fichier est prêt pour débouchage écriture ou de lecture. Ils ne pas bien à échelle grand nombre de descripteurs de fichiers ouverts. operatingSystems modernes ont des interfaces alternatives, linux a epoll, freebsd a KQueue. Activer avec la commande interrupteur +K true

Autres conseils

Au Erlang 20,0 , l'ensemble des balises chaîne de version est:

[64 bits]

L'émulateur BEAM est conçu pour utiliser pleinement d'un processeur 64 bits.

[async-threads: 10]

fait référence au nombre de threads dans le pool de threads async d'émulateur Erlang, qui plus ou moins vous indique le nombre d'appels de système bloqués peuvent être essaimé en fils de fond avant que les stands de l'émulateur.

Bien qu'il actuellement par défaut à 10, la valeur par défaut est 0 pendant de nombreuses années, ce qui signifie que tous les appels système ont été exécutés de manière synchrone dans chaque thread émulateur Erlang. Quand un appel système bloqué, il est arrêté que le fil de l'émulateur Erlang de courir jusqu'à ce que l'appel système terminé. La faible valeur par défaut actuelle permet à l'émulateur d'essayer de partir et faire autre chose pendant un appel système bloque l'un des threads async E / S.

Vous pouvez modifier la valeur par défaut avec l'option +A au Erlang. (Par exemple erl +A 50) Si vous allez changer cela, méfiez-vous que vos résultats dépendront de votre système particulier et la charge de travail. une valeur trop élevée pourrait nuire à la performance, car il provoque le système d'essayer de faire beaucoup de choses dans l'arrière-plan lorsque le système est très occupé, ce qui rend seulement encore plus occupé. Sur certaines charges de travail, la désactivation de la fonction avec erl +A 0 pourrait être la meilleure option.

[debug compilé]

Ce n'apparaît que si vous sortez de votre façon de construire un émulateur de BEAM alternent avec les options du compilateur Set pour valider votre exécutable résultant plus facile à déboguer, comme gdb ou similaire. Vous devez également exécuter cet émulateur alternatif BEAM d'une manière spéciale.

L'émulateur Erlang est normalement BEAM construit pour la vitesse, ce qui rend souvent difficile le travail d'un débogueur. Si vous travaillez sur le développement de la prochaine version de l'émulateur BEAM, vous trouverez peut-être utile pour exécuter au débogage builds comme vous affinez votre travail.

Pour activer ce mode, cd dans erts/emulator sous l'arbre source Erlang après avoir exécuté configure dessus, puis tapez quelque chose comme ERL_TOP=../.. make FLAVOR=smp debug. Ensuite, pour lancer votre nouvel émulateur RAYON débogable, vous devez exécuter bin/cerl -debug du haut niveau de l'arbre source Erlang, après le reste du système Erlang / OTP a été construit.

Voir de ordonnanceurs sale ». Les valeurs décrivent la configuration de la fonction de ce système.

Cette fonctionnalité a été introduite avec Erlang 19,0, d'abord comme une fonctionnalité expérimentale qui n'a pas été compilé par défaut dans SMP builds comme dans Erlang 20,0.

[DTrace]

Apparaît si vous avez passé --with-dynamic-trace=dtrace au script configure pour permettre à la DTrace fonction d'instrumentation ajouté en R15B01. Cette fonctionnalité ne devrait fonctionner sur Mac OS X, Solaris et FreeBSD. Il peut travailler sur d'autres plates-formes à l'avenir. Voir [systemtap] ci-dessous pour une alternative ajouté en même temps pour les systèmes Linux.

[frame-pointer]

Ceci est un cas particulier de la [debug compilé] ci-dessus, sauf qu'il désactive seulement le cadre de l'optimisation du pointeur. Utiliser frmptr au lieu de debug dans les commandes ci-dessus pour activer ce mode.

[hipe]

L'émulateur a été compilé avec le Hipe fonction est activée, ce qui est un sur la volée compilateur de code natif pour Erlang. Il ne fonctionne que sur les plus populaires types de CPU qui supporte Erlang, et il ne fonctionne pas avec toutes les configurations même sur ces processeurs, ce qui est pourquoi il est facultatif.

[instruction de comptage]

Apparaît si vous définissez ERTS_OPCODE_COUNTER_SUPPORT lors de la construction, ce qui permet une fonction de comptage RAYON opcode, sans doute utile pour les profils des performances de l'émulateur BEAM.

[-poll noyau: false]

Le code de l'émulateur Erlang connaît plusieurs façons de poser la pile réseau du système d'exploitation qui d'un ensemble de descripteurs de fichiers et prises sont disponibles pour les E / S. Le seul qui fonctionne à peu près partout est l'ancien appel select() BSD qui est relativement lent en raison de sa conception, et a d'autres problèmes d'évolutivité en plus. Ainsi, la plupart des systèmes ont un ou plusieurs plus rapides et plus évolutives de remplacement - par exemple, kqueue, epoll(), etc. - mais aucun d'entre eux est pris en charge partout. Lorsque le message de démarrage de l'émulateur dit false ici, cela peut signifier soit que le scrutin du noyau ne sont pas disponibles ou qu'il est, mais vous ne l'avez pas passé +K true à erl.

[lock-vérification]

Apparaît si vous avez passé --enable-lock-check au script de configuration.

[lock-comptage]

Apparaît si vous avez passé --enable-lock-counter au script de configuration.

[LTTng]

Apparaît si vous avez passé --with-dynamic-trace=lttng au script configure pour activer le support LTTng , un cadre de traçage pour Linux .

[purifions-compilé]

Ceci apparaît lorsque vous exécutez une Purify -Aware version l'émulateur Erlang BEAM. Les instructions sont les mêmes que dans la section [debug décompilées] ci-dessus, sauf que vous utilisez purify dans les commandes au lieu de debug.

[partage de la conservation]

apparaît si vous passez --enable-sharing-preserving au script configure, ce qui provoque partager termes immuables intra-nœud au lieu d'aplatir et de les recréer. Que cette option rend votre programme dépend plus ou moins rapidement sur les détails du programme, donc pourquoi il est pas défini dans la version par défaut.

[ech: 2: 2]

[ech: 2] balise a changé à ce format en Erlang R13, ce qui signifie 2 ordonnanceurs, qui sont tous deux en ligne. Si vous dites "ERL + S1", il est dit [ech: 1: 1] à la place. Vous pouvez prendre ordonnanceurs en ligne lors de l'exécution avec Erlang. System_flag (schedulers_online, N), où N peut être comprise entre 1 et le nombre de cœurs détectés, y compris

[source] ou [source VERSION]

Cela signifie une tierce partie (peut-être vous, peut-être le responsable du paquet de votre système d'exploitation distro, peut-être votre sysadmin) fit construire Erlang à partir du code source. L'alternative est de télécharger une version binaire officielle de Erlang.org.

Si vous construisez Erlang de le dépôt Git , ce message passe à quelque chose comme [source 8acc644] , où le nombre hexadécimal est un fragment de courant hachage Git , qui vous permet de vérifier la version exacte de la source qui a construit un exécutable donné.

[systemtap]

Apparaît si vous avez passé --with-dynamic-trace=systemtap au script configure. Ceci est une alternative à la valeur =dtrace pour cette option de configuration, fournissant essentiellement les mêmes fonctionnalités sur Linux en utilisant SystemTap , car DTrace est normalement disponible sous Linux. Voir [DTrace] ci-dessus.

[type-assertions]

Apparaît lorsque vous supprimez la ligne de ET_DEBUG dans erts/emulator/beam/erl_term.h, ce qui permet la vérification de l'exécution de toutes les données spécifiques de type accès. Non activé par défaut, car il ralentit l'émulateur.

[valgrind-compilé]

Ceci apparaît lorsque vous exécutez une Valgrind -Aware version de l'émulateur Erlang BEAM. Les instructions sont les mêmes que dans la section [debug décompilées] ci-dessus, sauf que vous utilisez valgrind dans les commandes au lieu de debug.


(Cette liste provient de erts/emulator/beam/erl_bif_info.c dans l'arbre source OTP Erlang. Voir la définition de erts_system_version près du haut du fichier.)


balises obsolètes :

  • [64 bits demi-mot] optimisation pour les versions 64 bits de l'émulateur BEAM a été ajouté à R14, puis retiré sans explication 19,0. Cela supprime également la possibilité de voir les [no-c-pile-objets] , qui a été associée à l'émulateur de demi-mot.

  • [rq: 2] balise renvoyé à un système de file d'exécution destiné à améliorer l'extensibilité dans SMP oeuvre de l'émulateur BEAM Erlang. Ajouté à R13b, il a été remplacé par R15B une meilleure solution .

  • [hybride tas] et [GC incrémental] balises et les caractéristiques associées ont été enlevés dans R15B02 essentiellement parce qu'ils étaient a échoué experiements .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top