On Oct 11, 2013, at 2:55 PM, Brian Anderson <bander...@mozilla.com> wrote:
> On 10/11/2013 06:38 AM, Lars Bergstrom wrote:
> Unless there is a serious bug in the runtime (always possible), it's true 
> that only the compositor task should be executing on the main thread, and 
> every other task will be executing on other threads. There are message 
> passing patterns that can cause the scheduler to not utilize available 
> threads correctly, so you could simply be hitting a bad case for the 
> scheduler. I'd love to have those test cases.
> 
> I'm curious if servo is exhibiting actual parallelism at all right now, or if 
> this is a preexisting problem.


We certainly have parallelism, at least between separate pipelines. I tried two 
examples:

- Script. Rendering a page with four of the matrix multiplication tasks uses 
well over 500% of CPU on my machine, with four pegged doing multiplications and 
another CPU's worth of what appears to be message coordination and the 
compositor waking up occasionally.

- Layout. I took Patrick's cruel layout test 
(https://gist.github.com/pcwalton/6695691 ) and put a couple of them into 
iframes on a page. That one runs up over 220% of CPU as well.

That said, while we have explicit communication between the tasks and design 
for lots of places to add parallelism there isn't a ton of work that I'm aware 
of that is yet done in parallel within a given pipeline. So I'm looking forward 
to seeing the example as well to see if there's some place where we're blocking 
in a recv() or if there's something strange going on with scheduling.
- Lars
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to