catapult-project / catapult

Deprecated Catapult GitHub. Please instead use http://crbug.com "Speed>Benchmarks" component for bugs and https://chromium.googlesource.com/catapult for downloading and editing source code..
https://chromium.googlesource.com/catapult
BSD 3-Clause "New" or "Revised" License
1.93k stars 564 forks source link

Barebone features for CPU profiles #550

Open catapult-bot opened 9 years ago

catapult-bot commented 9 years ago

Issue by natduca Monday Sep 22, 2014 at 20:24 GMT Originally opened as https://github.com/google/trace-viewer/issues/550


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:24 GMT


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

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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:24 GMT


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:24 GMT


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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

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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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?

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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.

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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

Cc: gho...@chromium.org

catapult-bot commented 9 years ago

Comment by natduca Monday Sep 22, 2014 at 20:25 GMT


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