2012-02-07 19 views
5

¿Se pueden supervisar los programas mientras se están ejecutando (posiblemente canalizando el registro de eventos)? O solo es posible ver los registros de eventos después de la ejecución. Si este último es el caso, ¿hay alguna razón más profunda con respecto a cómo funciona el tiempo de ejecución Haskell?funcionalidad de threadscope

Editar: No sé mucho sobre el tiempo de ejecución tbh, pero dada la respuesta de dflemstr, tenía curiosidad sobre cuánto y las formas en que se degrada el rendimiento agregando la opción de tiempo de ejecución del monitoreo. Recuerdo que en RWH mencionaron que el rts tiene que agregar centros de costos, pero no estaba completamente seguro de lo caro que era este tipo de cosas.

Respuesta

1

La respuesta directa es que, no, no es posible. Y, no, no hay ninguna razón para eso, excepto que nadie ha hecho el trabajo requerido hasta el momento.

creo que esto sería principalmente una cuestión de

  1. Modificación ghc-events por lo que soporta la lectura de eventos registra trozo-sabia y proporcionar resultados parciales. Tal vez la portarlo a attoparsec ayudaría?

  2. Threadscope tendría que actualizar sus estructuras de datos internos como árbol de nuevos flujos de datos en.

nada que sea difícil, pero alguien tendría que hacerlo. Creo que ya escuché la discusión sobre la adición de esta función ... Por lo que podría suceder eventualmente.

Edit: Y para dejar en claro, no hay una razón real por la que esto tenga que degradar el rendimiento más allá de lo que obtiene con el registro de eventos o el perfil del centro de coste.

1

Si desea supervisar el rendimiento de la aplicación mientras se está ejecutando, puede, por ejemplo, utilizar the ekg package como se describe en this blog post. No es tan detallado como ThreadScope, pero hace el trabajo para servicios web, por ejemplo.

Para obtener información en tiempo real sobre lo que está haciendo el tiempo de ejecución, puede utilizar el programa dtrace para capturar eventos dinámicos publicados por algunas sondas de tiempo de ejecución de GHC. Cómo se hace esto se describe en this wiki page. A continuación, puede utilizar esta información para armar un registro de eventos más coherente.

+0

¡genial! hmmm, acabo de comenzar a buscar fuentes para threadscope, pero a la larga me interesó posiblemente hacer algunas notificaciones básicas dentro de threadscope, y pensé que sería genial verlo en tiempo real, aunque eso no es un factor decisivo, Me pregunto si es fácil de hacer. –

+0

He agregado detalles sobre cómo se pueden rastrear más las acciones realizadas por el tiempo de ejecución de GHC. Esto debería responder mejor a la primera parte de su pregunta. – dflemstr