Hi Peter,

On Sep 30, 2008, at 8:42 PM, Peter Kasting wrote:

2008/9/30 Mike Belshe <[EMAIL PROTECTED]>
As for keeping the fan off - if we could keep the CPU idle a 3ms minimum timeout loop does that resolve your concern?

Followup to my earlier post, based on this.

I realize that one reason why we (Chromium folks) have not been as concerned about CPU usage is that in a multi-process world, excessive CPU is an annoyance, but doesn't completely break the app. This wouldn't necessarily be the case in a single-process consumer of WebKit, e.g. Safari, where a page in a tight JS loop could make the whole browser less responsive. This seems like a legitimate reason to be concerned about excessive CPU usage. Mike's suggestion that we can find a minimum timeout value (e.g. 3 ms) where the CPU doesn't get pegged seems reasonable if this is the main issue.

And a few more thoughts on app compat. Using more CPU is not an app compat concern. The CG GIF decoder that Safari uses burns 10x the CPU that Gecko's does, such that on various animated GIFs I can hit 60% of one of my (very fast!) cores just animating a single image in Safari. But no one has ever presented this as a "web app compat" issue, even though tons of web pages use animated GIFs; it's just a bug/optimization opportunity. Chromium uses extra CPU due to having plugins out of process. Gecko uses more CPU to relayout than WebKit. None of these are compatibility issues. The comments on bug 6998 imply to me that the 10ms cap was put in because Safari was eating more CPU than other browsers, not because there were animations running at the wrong speed or stylesheet loads not being sensed soon enough.

I think if we can agree that not pegging the CPU, rather than precisely matching other browsers (which is impossible due to their 60% variance from each other), is the chief objection to uncapped timers, it will be easier to move forward.

The problem is not only confined to single processor systems. As others have mentioned the bigger problem is the waste of resources. The length of the timeout is not the full piece of the puzzle. There's also problems with what the application does at the end of each timeout. This often needless processor use ends up draining batteries, increasing heat and wasting energy (even with a multiprocessor system).

2008/9/30 Alexey Proskuryakov <[EMAIL PROTECTED]>
Sep 30, 2008, в 9:12 PM, Mike Belshe написал(а):
> As for keeping the fan off - if we could keep the CPU idle a 3ms
> minimum timeout loop does that resolve your concern?

Maybe, partially. As mentioned in bug 6998, even 10 ms timers incur
non-trivial processor usage.

Your comment in that bug was that it was 3.7% of CPU on your machine. 3.7% for "as fast as possible" doesn't seem like a huge burden. That suggests authors could write tight loops at 3ms delays and still only burn 10% of the CPU. I think that's a reasonable proposal.

Again, the length of the timeout is not the only thing determining CPU usage. The response to the timeout also influences CPU usage. If the timeout is clamped at 3ms instead of 12ms, then it is using the processor 4X as much (assuming that it doesn't also introduce synchronization problems the author didn't anticipate). That is quite significant. Given the growing importance in mobile processing it seems rather irresponsible to promote this waste of processor resources.

Take care,
Rob
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to