[webkit-dev] WebKit memory instrumentation

Zoltan Horvath zoltan at webkit.org
Mon Jul 23 09:07:50 PDT 2012


Hi there,

On Mon, 23 Jul 2012 17:09:19 +0200, Yury Semikhatsky <yurys at chromium.org>  
wrote:

> *Hi WebKit,
>
> Almost all developers would like to know why the render process takes so
> much memory. We are trying to address this problem by providing an
> information on how much memory is consumed by some high-level WebKit
> parts(DOM, CSS, JavaScript etc) . Currently there is  a real-time chart  
> in
> Web Inspector that shows the render process memory broken down into  
> several
> components:
>
>
> To achieve that we instrumented several classes in
> WebCore<http://code.google.com/searchframe#search/&q=reportMemoryUsage%20package:chromium&type=cs>to
> report an estimation of their memory footprint. The main problem with
> that approach is that it can be easily broken by changes to the
> instrumented clasess. We need a way to guard from such changes that would
> automatically validate the instrumentation and make sure it matches  
> current
> class structure.

The goals are cool! Have you talked about how much code would be  
introduced/changed by this approach?

> We see several ways of doing that.
>
> First option we consider is to define a class with the same set of fields
> as the instrumented one, then have a compile time assert that size of the
> reference class equals to the size of the instrumented one. See
> https://bugs.webkit.org/attachment.cgi?id=153479&action=review for more
> details.
>
> Pros: compile time error whenever size of an instrumented class changes
> with the appropriate modifications to the instrumentation function.
> Cons: it will require each committer to adjust the reference class and  
> the
> instrumentation on any modification that affects size of the instrumented
> class. Changes that don't affect size of the class will go unnoticed.

I think we can't demand this from the committers. Although it seems a  
trivial task to do the modification, it's too much effort to take care of  
these individually. Can't we just automatize it somehow (or support the  
modifications) with a clever script?

> The second option is to write a tool/script/llvm-plugin and use it on a
> build-bot to monitor the relevance of instrumentation and update it on  
> when
> a new field is added to an already instrumented class. However, a  
> question
> remains who and how often would do this.
> Pros: a committer may not need to update the instrumentation immediately.
> Cons: the instrumentation may be behind the actual memory usage. An
> addifitional effort required to create the tooling.

This sounds a bit better for me, I think the effort that we put on tooling  
will save time later. Since we can tell that when the change and its  
instrumentation were introduced, the delay shouldn't be a big trouble.

> We would like to know what you think about it and will greatly appreciate
> any ideas and suggestions.

Done. :)

> Regards,
> Yury, Alexei, Ilya
> *

Cheers,
<Zoltan>


More information about the webkit-dev mailing list