Pregunta

Cuando comienzo mi emulador de Erlang, existe el primer bit tiene un montón de cosas informativos. (Algo reformateado para el efecto.)

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> 

Algunas de ella puedo adivinar, probablemente sea exacto, pero algunas de ellas significa 'aquí sea mágica'.

  • Erlang (BEAM) emulator version 5.6.5: la versión, por supuesto
  • [source]:? El emulador fue compilado desde el código fuente
  • [smp:2]: dos núcleos de CPU detectan y disponible
  • [async-threads:0]:? Actualmente ejecución de trabajos
  • [hipe]:?
  • [kernel-poll:false]:?

También pregunto si hay otros artículos [foo] que podrían surgir con diferentes configuraciones, construye o puesta en marcha de parámetros.

Entonces, ¿qué hacen las declaraciones de información emulador Erlang significan?

¿Fue útil?

Solución

[asincrónicos-hilos: 0]

Tamaño del grupo de subprocesos asincrónica disponibles para los conductores cargados para su uso. Esto permite syscalls para ser realizadas en un hilo del núcleo separada de la vm haz de bloqueo. Utilice el interruptor +A N comando para ajustar el tamaño de la piscina.

[HIPE]

El apoyo a la compilación nativa de la fuente de Erlang y código de bytes. Tiende a ser sobre todo útil para número de código crujido. IO-atado código Si bien en el intérprete de código de bytes.

[kernel-encuesta: false]

No es la edad de selección (2) y poll (2) llamadas al sistema para recibir la notificación de que algún descriptor de archivo está listo para desbloquear la escritura o lectura. Ellos no se adaptan bien al elevado número de descriptores de archivos abiertos. operatingSystems modernos tienen interfaces alternativas, Linux tiene epoll, FreeBSD ha kqueue. Activar con el interruptor +K true comando

Otros consejos

A partir de Erlang 20,0 , el conjunto completo de etiquetas cadena de versión es:

[64-bit]

El emulador BEAM está construido para hacer pleno uso de una CPU de 64 bits.

[asincrónicos-hilos: 10]

Esto se refiere al número de hilos en grupo de subprocesos asincrónica del emulador de Erlang, que más o menos le indica cuántas llamadas al sistema bloqueados se pueden girar apagado en hilos de antecedentes antes de los puestos de emulador.

A pesar de que actualmente defecto es 10, el valor por defecto de 0 durante muchos años, lo que significa que todas las llamadas al sistema se llevaron a cabo de forma sincronizada dentro de cada hilo emulador de Erlang. Cuando una llamada al sistema bloqueado, dejó que Erlang hilo emulador se ejecute hasta que terminó la llamada al sistema. El valor actual pequeño defecto permite el emulador para tratar de salir y hacer algo más mientras una llamada al sistema está bloqueando uno de los asíncrono de E / S hilos.

Puede cambiar el valor por defecto con la opción +A al tiempo de ejecución de Erlang. (Por ejemplo erl +A 50) Si va a cambiar esto, ten en cuenta que los resultados dependerán de su sistema y la carga de trabajo en particular. Un valor demasiado alto puede perjudicar el rendimiento, ya que hace que el sistema trate de hacer muchas cosas en segundo plano cuando el sistema está muy ocupado, que sólo hace que sea aún más ocupado. En algunas cargas de trabajo, la desactivación de la función con erl +A 0 podría ser la mejor opción.

[depuración-compilados]

Esto sólo aparece si se sale de su manera de construir un emulador BEAM se alternan con las opciones del compilador establecidos para hacer el ejecutable resultante más fácil de depurar, al igual que con gdb o similar. También tiene que ejecutar este emulador BEAM alternan de una manera especial.

El emulador de Erlang haz es normalmente construido para la velocidad, lo que a menudo hace que el trabajo de un depurador más difícil. Si está trabajando en el desarrollo de la próxima versión del emulador BEAM, puede que le resulte útil para funcionar de depuración especial obra de ella como a definir mejor su trabajo.

Para activar este modo, cd en erts/emulator bajo el árbol de fuentes de Erlang después de haber ejecutado configure en él, a continuación, escriba algo así como ERL_TOP=../.. make FLAVOR=smp debug. A continuación, para ejecutar su nuevo emulador depurable BEAM, usted tiene que funcionar bin/cerl -debug desde el nivel superior del árbol de fuentes de Erlang, después de que el resto del sistema Erlang / OTP se ha construido.

Consulte Cómo construir un sistema de ejecución de depuración Habilitado Erlang para más información sobre este tema.

[ds: 1: 1: 1]

A partir del ERTS 9.0, esto debe aparecer siempre si usted construyó el emulador viga con soporte SMP. Se refiere a los " programadores sucios " característica. Los valores describen la configuración de la función en este sistema.

Esta característica se introdujo con Erlang 19,0, inicialmente como una función experimental que no fue compilado por defecto en SMP construye como lo es en Erlang 20.0.

[dtrace]

Aparece si usted pasó --with-dynamic-trace=dtrace a la secuencia de comandos para que el configure Dtrace función instrumentación añadió en R15B01. Esta característica sólo se espera que trabajar en OS X, Solaris y FreeBSD. Se puede trabajar en otras plataformas en el futuro. Ver [systemtap] a continuación para una alternativa añadió al mismo tiempo para los sistemas Linux.

[frame-pointer]

Este es un caso especial de la [debug-compilado] opción anterior, excepto que sólo desactiva el marco de optimización puntero . Utilice frmptr en lugar de debug en los comandos de arriba para activar este modo.

[HIPE]

El emulador se compiló con el href="http://www.it.uu.se/research/group/hipe/" rel="nofollow noreferrer"> HIPE característica

[instrucción de conteo]

Aparece si se define ERTS_OPCODE_COUNTER_SUPPORT durante la construcción, lo que permite una función de conteo BEAM código de operación, presumiblemente útil para los perfiles de rendimiento BEAM emulador.

[kernel-encuesta: false]

El código emulador Erlang sabe varias maneras diferentes a plantearse pila de red del sistema operativo, que de un conjunto de descriptores de archivos y enchufes están disponibles para E / S. El único que funciona prácticamente en todas partes se encuentra la antigua llamada select() BSD que es relativamente lento debido a su diseño, y tiene otros problemas de escalabilidad, además. Por lo tanto, la mayoría de los sistemas tienen una o más sustituciones más rápidas y escalables - por ejemplo, kqueue, epoll(), etc - pero ninguno de ellos es apoyado por todas partes. Cuando el mensaje de inicio emulador dice false aquí, puede significar o bien que el sondeo del núcleo no está disponible o que es pero no pasó a +K true erl.

[Bloqueo de comprobación]

Aparece si usted pasó a --enable-lock-check el script de configuración.

[Bloqueo de conteo]

Aparece si usted pasó a --enable-lock-counter el script de configuración.

[lttng]

Aparece si aprobó --with-dynamic-trace=lttng al guión configure para habilitar el soporte para LTTNG , un software de rastreo para Linux .

[purifican-compilados]

Esto aparece cuando se ejecuta una Purificar sea conscientes versión de el emulador de Erlang BEAM. Las instrucciones son las mismas que en la sección [compilan-debug] anterior, excepto que se utiliza purify de comandos en lugar de debug.

[compartir-preservar]

Esto aparece si se pasa a la secuencia de comandos --enable-sharing-preserving configure, lo que provoca a compartir términos inmutables intra-nodo en vez de aplastar y volver a crearlos. Si esta opción hace que su programa rápido o más lento depende de los detalles del programa, de ahí que no se encuentra en la acumulación por defecto.

[smp: 2: 2]

La [SMP: 2] etiqueta cambiado a este formato en Erlang R13, es decir, 2 programadores, los cuales están en línea. Si usted dice "ERL + S1", que dice [SMP: 1: 1] en su lugar. Puede tomar los programadores de fuera de línea en tiempo de ejecución con erlang:. System_flag (schedulers_online, N), donde N puede ser cualquier cosa entre 1 y el número de núcleos detectado, inclusive

[fuente] o [fuente-VERSION]

Esto significa que un tercero (tal vez, tal vez mantenedor de paquetes de su distribución del sistema operativo, tal vez su administrador de sistemas) construido Erlang partir del código fuente. La alternativa es la descarga de una versión oficial binario desde Erlang.org.

Si se construye a partir de Erlang el repositorio Git , este mensaje cambia a algo como [fuente-8acc644] , donde el número hexadecimal es un fragmento de la corriente del repositorio Git de hash, lo que le permite comprobar la versión exacta de la fuente que se construyó un ejecutable dado.

[systemtap]

Aparece si usted pasó --with-dynamic-trace=systemtap al guión configure. Esta es una alternativa al valor =dtrace para esta opción de configuración, proporcionando esencialmente la misma funcionalidad en Linux mediante SystemTap , ya que DTrace normalmente no está disponible en Linux. Ver [dtrace] anteriormente.

[tipo-afirmaciones]

Aparece cuando se quite la línea ET_DEBUG en erts/emulator/beam/erl_term.h, lo que permite la comprobación de tiempo de ejecución de los accesos de todos los datos de tipo específico. No es activado por defecto, ya que ralentiza el emulador.

[valgrind-compilados]

Esto aparece cuando se ejecuta una Valgrind sea conscientes versión del emulador de Erlang BEAM. Las instrucciones son las mismas que en la sección [compilan-debug] anterior, excepto que se utiliza valgrind de comandos en lugar de debug.


(Esta lista proviene de erts/emulator/beam/erl_bif_info.c en el árbol de fuentes de Erlang OTP. Ver la definición de erts_system_version cerca de la parte superior del archivo.)


etiquetas obsoletos

  • La [64-bit media palabra] optimización para 64-bit construye de se añadió el emulador BEAM en R14, luego se retira sin explicación en 19,0. Esto también elimina la posibilidad de ver los [no-c-Stack-objetos] etiqueta, que se asoció con el emulador media palabra.

  • La [rq: 2] etiqueta se refiere a un sistema de cola de ejecución destinado a mejorar la escalabilidad en SMP construye del emulador Erlang BEAM. Añadido en R13B, que fue sustituido en R15b por una mejor solución .

  • La [híbrido-heap] y [GC incrementales] etiquetas y características asociadas se eliminaron en R15B02 esencialmente porque eran fallidos experiements .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top