Summit2008/Sessions/Proposals/Platform/WebPerformanceTools/SpeakingNotes

From MozillaWiki
Jump to: navigation, search

Intro

  1. Where we are, and where we should be
    1. I'll start
    2. your ideas
  2. how to implement

Performance and memory tools are about blame

  • A program:
    • Why is my laptop hot?
    • Why is my machine swapping?
  • A piece of code or a certain data structure:
    • Why do we use a lot of CPU on this page / testcase?
    • Why do we use a lot of memory? (What objects?)

Developers / Users

Developers tend to care more about the problem of the particular piece of code or data structure.

Users and testers care about which program.

Platform

As the Web becomes the platform, we need both the tools for users and testers to identify problems to:

  • report them (to the right place, be it the browser or the Web page)
  • make informed choices about what software to use

We also need the tools for developers to fix these problems.

Matrix

 (users / devs) x (memory / performance)

we have one box partly filled (JS only)

Developer performance tools

  • JS and Network in firebug
  • nothing for layout / content
    • reflow perf
    • flushing
    • selector matching
    • handling of dynamic changes
  • time spent in JS, vs. layout, vs. content, etc.
  • thrashing due to flushes, etc. ... integrate with firebug?
  • assign blame to code for being away from event queue for a long time

User performance tools

  • need to assign blame for firefox using the CPU
    • sometimes not obvious (e.g., Ctrl-TAB)
  • we need to pay the instrumentation cost
  • assign blame for being away from the event queue for a long time

Implementing user performance tools

  • need to be able to assign events and other sub-pieces to specific pages
  • we need to be willing to accept a *small* instrumentation overhead

Developer memory tools

what objects are taking up all the memory?

  • content vs. images vs. script objects vs frames vs etc.
  • which specific objects (and how to describe)?

User memory tools

  • which pages (and which UI) are using a lot of memory?
    • in firefox process
    • resources on video card
    • other system resources

Implementing memory tools?

  • trace object graph using internal APIs?
  • trace object graph externally? (with some knowledge?)
  • instrument allocators?

Moving forward

Which areas are higher priority?

Who's interested in working on this stuff?