This page records the work in Chromium project.

Learning resources

Chromium overall resources

Multi-thread and Multi-process chromium





Multi-threaded rasterisation project status

Project introduction

Briefly, Chromium Scheduler architecture is:

  • Scheduler provides N task queues
  • Policies determine which task queues are prioritised
  • System behaviour determines policies

So far, the Scheduler just prioritizes task according to task type. For example, Compositor tasks more important but Resource loading less important.

What is the target of this project

Make Scheduler fully uses of multi-core. Key point is how to dynamic creating threads according to workload? An Initial discussions of blink-dev@: https://groups.google.com/a/chromium.org/forum/#!topic/graphics-dev/_Xfu5PyLAMo

What is current status

  • My side: I'm still learning the rasterization implementation in render part of chromium. And I have not quite understood it.
  • Upstream side: as listed in "upstream patch or doc tracking" section, upstream already have done some work. They seems have a bigger plan than our target (as said in issue issue 1192633003). I'm not sure I have fully understood their target though.

What is the current problem

  • It needs time to understand chromium rasterization to proceed and fully understand what upstream is doing.
  • It may also require the understanding of energy aware scheduler in big.little platform.
  • Upstream may not be interesting work with us due to our short plan in this project.

Upstream patch or doc tracking

  • Issue 493432: this issue shows upstream has already done multi-threading raster based on cpu core number on Android (the patch is merged in 2015-5-28).

  • Issue 493861: this issue reports some problem in multi-threading rasterisation. There is a patch that attempt to fix this, but has not merged. I'm not sure why yet.

  • content: Rename raster threads to worker threads.: reveman's patch is part of the target that " allow us to better control the number of threads we use and make it easier to implement more advanced control such as dynamically adjusting the number of worker threads based on if a process is doing background work or has visible widgets." Which is also our current goal.

  • Expose a SequencedTaskRunner that runs tasks on raster threads.: This is the first step to make the raster worker threads reusable within the render.

  • project Monocle: This is a related project to multi-thread raster.

Chromium (last modified 2015-07-15 06:55:56)