google / trace-viewer

https://github.com/catapult-project/catapult/tree/master/tracing#readme
487 stars 84 forks source link

Barebone features for CPU profiles #550

Closed natduca closed 9 years ago

natduca commented 10 years ago

From o...@chromium.org on April 04, 2014 18:12:48

https://codereview.chromium.org/226933002/ adds a way to view CPU profiles from perf in the trace viewer.

Some features that would be nice for CPU profiles:

  1. Focus subtree
  2. Invert call stack
  3. The bottom panel should be sized so it clips long lines instead of pushing the actual numbers offscreen. This works as long as the tooltip shows the whole thing.
  4. There seems to be a bug with selftime when you select a block of traces. Or maybe the chromium patch is generating the trace JSON incorrectly. But the selftimes are way too big.
  5. A pprof like graph UI that combines stacks (e.g. collapses mutually recursive calls).
  6. When you select a block of traces, add a column that shows percentages for each line of the total block selected.

Original issue: http://code.google.com/p/trace-viewer/issues/detail?id=545

natduca commented 10 years ago

From dsinclair@chromium.org on April 07, 2014 19:13:11

Cc: nd...@chromium.org dsinclair@chromium.org
Labels: -Type-Bug Type-Feature

natduca commented 10 years ago

From nd...@chromium.org on April 08, 2014 00:57:47

Victor and I have been talking about this. We'd like to make samples a first class concept in tracing, where the stack stitching & grouping is done with custom features instead of it being a preprocessing step that produces B/E slices. We were thinking every model would effectively have a big array of samples that can be queried by cpu or by thread, and then we'd build custom sample analysis code both as a sidebar and down in the selection area.

I am still wrapping my head around this, but I do think slices vs samples are pretty different and thus are worthy of some new views...

Cc: vmi...@chromium.org

natduca commented 10 years ago

From fmea...@chromium.org on April 08, 2014 09:56:42

I was thinking of integrating CPU Profiles into tracing as a disabled category, any thoughts?

Cc: fmea...@chromium.org

natduca commented 10 years ago

From nd...@chromium.org on April 08, 2014 09:58:45

@fmeawad: CPU profiles as in sampling-based data?

natduca commented 10 years ago

From o...@chromium.org on April 08, 2014 12:02:50

Here's some file sizes from a relatively short sample: 2303052 perf.data <-- the raw data spit out by perf 31390516 raw_perf_script <-- the data spit out by 'perf script' 2137269 raw.trace <-- the trace file from https://codereview.chromium.org/226933002/ 6232164 collapsedonly.trace <-- the json file from https://codereview.chromium.org/226933002/ if you only print out the collapsed_lines data structure

The collapsed_lines data structure is the one that takes all samples for each stack and collapses them into one entry in the json with the stack being a semi-colon separated string.

Do we care about file size here? I expect we do as we want it to be easy for people to share these and post them to bugs, which implies a 10mb limit. So, we'd need to either use the B/E trace data (or something like it) or the perf.data file directly.

I'm a bit loathe to do the latter. Beyond requiring figuring out the perf.data file format, it makes it harder to integrate CPU profiling information from other profilers (e.g. Instruments). Maybe not. Maybe you're point is that all this code should just be JS in traceviewer instead of a python preprocessing step.

I was thinking that traceviewer should be able to easily reconstruct the collapsed sample data from the B/E slices and then use that for whatever features it needed. But I don't know anything about how trace viewer uses B/E slices. Does it not convert them into some other data model first?

natduca commented 10 years ago

From dsinclair@chromium.org on April 08, 2014 12:16:50

Do they compress well? Trace-viewer understands both zip and gz. You can load a compressed file and it should do the right thing.

natduca commented 10 years ago

From o...@chromium.org on April 08, 2014 12:31:39

Here are the gzipped numbers.

166216 perf.data.gz 153441 raw.trace.gz 218154 collapsedonly.trace.gz 1062411 rawperfscriptoutput.gz

natduca commented 10 years ago

From nd...@chromium.org on April 08, 2014 12:37:22

There's a lot of really interesting pieces swirling here. I'm going to self-assign briefly to get some basic infra landed UI side....

Summary: Add features for CPU profiles (was: add features for CPU profiles)
Status: Started
Owner: nd...@chromium.org

natduca commented 10 years ago

From nd...@chromium.org on April 23, 2014 15:59:28

Filed blockers. Core stuff is done. Just waiting on UI, then we can mark this fixed, at least to a v0.1 point.

Summary: Barebone features for CPU profiles (was: Add features for CPU profiles)
Blockedon: trace-viewer:551 trace-viewer:552

natduca commented 10 years ago

From fmea...@chromium.org on June 30, 2014 14:17:42

Cc: gho...@chromium.org

natduca commented 10 years ago

From nd...@chromium.org on July 07, 2014 11:39:29

Sami, can you make sure this bug gets closed since you've been taking point on the outer project?

Owner: skyos...@chromium.org

catapult-bot commented 9 years ago

Migrated to https://github.com/catapult-project/catapult/issues/550