haskell / ThreadScope

A graphical tool for profiling parallel Haskell programs
http://www.haskell.org/haskellwiki/ThreadScope
Other
153 stars 36 forks source link

Enhance handling of large eventlogs #29

Open ghc-mirror opened 10 years ago

ghc-mirror commented 10 years ago

Original reporter: jan.stolarek@

When I enable detailed spark logging via -lf flag I end up with huge eventlog files (130MB). Attempting to load these into ThreadScope practically kills my OS - memory runs out, swapping begins and I am forced to kill TS (which takes some time before the OS actually responds and kills the process). This makes -lf flag useless for my program and I think this might not be uncommon situation. It would be good if TS supported some sort of lazy loading of big eventlogs, so users could at least view parts of the log.

ghost commented 8 years ago

Even with -l flag I get 500 MB eventlog and threadscope eats 16 GB of RAM. Please provide either some sort of granularity control before loading the file or live streaming.

osa1 commented 6 years ago

This is still a problem. Loading a 1G eventlog file is impossible even with 32G RAM. I think we need two things:

One idea comes to mind is to use something like SQLite which makes these operations almost trivial.

One thing that may be a problem is when scrolling the "Raw events" tab because of querying filesystem-backed event database (SQLite or not), so we may have to implement lazy rendering of "Raw events" (as far as I can see it doesn't support this currently, drawEvents blocks the thread until all events in the range are drawn).

Any other ideas?

osa1 commented 6 years ago

I started working on a fix. I currently have an external sort library and another library for filesystem-backed, cached arrays. I'll report in a few days probably.

osa1 commented 6 years ago

Currently blocked on https://github.com/haskell/ghc-events/issues/42.

maoe commented 6 years ago

We may need to fix haskell/ghc-events#14 as well since it causes ghc-events to crash when reading back serialized events for eventlogs that contain deprecated events.