2012-02-07 2 views
5

Могут ли программы отслеживаться во время их работы (возможно, протоколирование журнала событий)? Или можно только просмотреть журналы событий после выполнения. Если последнее имеет место, существует ли более глубокая причина в отношении того, как работает среда исполнения Haskell?threadscope function

Редактирование: Я мало знаю о времени выполнения tbh, но, учитывая ответ dflemstr, мне было интересно узнать, сколько и способы снижения производительности, добавив параметр выполнения мониторинга событий. Я помню, в RWH они упомянули, что rts должен добавить МВЗ, но я не был полностью уверен в том, насколько это дорого стоило.

ответ

1

Прямой ответ заключается в том, что нет, это невозможно. И нет, нет оснований для этого, за исключением того, что до сих пор никто не делал требуемую работу.

Я думаю, что это будет в основном вопрос

  1. Изменение ghc-events поэтому поддерживает чтение журналов событий ломоть-накрест и обеспечивают частичные результаты. Может, портировать его на attoparsec поможет?

  2. Threadscope бы обновить свои внутренние структуры дерева данных в виде новых потоков данных.

Ничто не слишком сложно, но кто-то должен был бы сделать это. Думаю, я слышал, что обсуждение уже добавлено в эту функцию ... Так что это может произойти в конце концов.

Редактировать: И для того, чтобы было ясно, нет никакой реальной причины, по которой это должно было бы ухудшить производительность, превышающую то, что вы получаете с помощью журнала событий или профилирования МВЗ.

1

Если вы хотите контролировать производительность приложения во время его работы, вы можете, например, использовать the ekg package, как описано в this blog post. Это не так подробно, как ThreadScope, но он выполняет работу для веб-сервисов, например.

Чтобы получить информацию о том, что делает среда выполнения, вы можете использовать программу dtrace для захвата динамических событий, размещенных некоторыми пробниками среды GHC. Как это делается, описано в this wiki page. Затем вы можете использовать эту информацию, чтобы собрать более согласованный журнал событий.

+0

прохладный! hmmm, я только начал просматривать источники для потокомера, но в конечном итоге мне было интересно, возможно ли сделать некоторые основные уведомления внутри потолочной камеры, и подумал, что было бы здорово видеть это в реальном времени, хотя это не прерывание сделки, просто интересно, легко ли это сделать. –

+0

Я добавил подробности о том, как действия, выполняемые средой выполнения GHC, можно проследить дальше. Это должно лучше ответить на первую часть вашего вопроса. – dflemstr

Смежные вопросы