Профилирование Haskell в течение фиксированного количества времени

В настоящее время я пытаюсь профилировать сервер Haskell. Сервер работает вечно, поэтому я просто хочу получить отчет о профилировании в течение определенного периода времени. Я пробовал только запустить программу в течение 3 минут, а затем вежливо попросил ее закончить, но каким-то образом профилировщик haskell не подчиняется терминальному сигналу и генерирует неполные данные.

Моя первая попытка:

timeout --signal SIGTERM 3m ./actionsDemo +RTC -hc -RTS -p -K100M

Кто-нибудь знает, как аккуратно профилировать этот сервер?

Ответ 1

Методы получения профиля кучи работающей программы хорошо документированы здесь, раздел 5.5.3. Короче говоря, вам просто нужно удалить последний "неполный" образец, а затем продолжить, как обычно.

Также существует соответствующий trac ticket, чтобы hp2ps справился с этим самостоятельно, но он пока не готов.

Для профилирования времени/распределения у меня нет ответа.