2011-11-25 17 views
5

Estaba buscando una forma de recuperar información sobre cómo se realiza la programación durante la ejecución de un programa: qué procesos están en qué programador, si cambian, qué proceso está activo en cada programador, si cada uno el planificador se ejecuta en un núcleo, etc. ...Erlang VM: información de tiempo de ejecución del planificador

¿Alguna idea o documentación relacionada/artículos/algo?

Respuesta

5

Yo sugeriría que eche un vistazo a las siguientes opciones de perfiles/rastreo:

erlang:system_profile/2

Cuenta con opciones para la supervisión planificador y cola de ejecución (runnable_procs) la actividad. La opción planificador informará

{profile, scheduler, Id, State, NoScheds, Ts} 

donde Estado le dirá si está activo o no. NoScheds informa el número de programadores actualmente activos (si no recuerdo mal).

La opción runnable_procs le permitirá saber si un proceso se inicia o se elimina de una cola de ejecución de un planificador en particular.

+0

gracias! Tenía R14A y siempre devuelve indefinido, pero actualicé a R14B04 y funciona bien ahora: D – raymond

+0

el proceso está activo cuando está en la cola de ejecución, no solo cuando realmente se ejecuta, ¿no? – raymond

+0

Sí, se considera activo tanto cuando se puede ejecutar (en la cola de ejecución) como si se está ejecutando realmente y, de lo contrario, inactivo. – psyeugenic

4

Si tiene un sistema que admita DTrace, puede usar las sondas erlang dtrace que se están desarrollando para ver exactamente cuándo se producen los eventos de programación.

Por ejemplo, escribí un simple one-liner que muestra el número de nanosegundos que transcurren entre el envío de un mensaje a un proceso y la ejecución programada del destinatario (± unos nanosegundos para varianza y procesos de reloj cruzado y tal).

+0

Me gusta dtrace, lástima que solo funciona en Mac y Solaris (y algunos otros) pero no en Linux. @Dustin, buen trabajo en erlang/dtrace impl. – psyeugenic

+0

systemtap funciona para hacer las mismas cosas. Siempre puede trabajar en algo que no sea Linux o Windows lo suficiente como para descubrir cómo funcionan las cosas y luego aplicar ese conocimiento en su implementación de Linux. – Dustin

+0

interesante, definitivamente comprobaré DTrace/SystemTrap! – raymond

Cuestiones relacionadas