This page records the work in Chromium project.
Chromium overall resources
Udacity Course: Website Performance Optimization You will learn how to optimize any website for speed by diving into the details of how mobile and desktop browsers render pages.
Udacity Course: Browser Rendering Optimization You'll explore the browser's rendering pipeline in this course
How Browsers Work: Behind the scenes of modern web browsers This is comprehensive primer on the internal operations of WebKit and Gecko.
A book about browser performance: High Performance Browser Networking. This book focuses on networking but also includes a general overview about browser. Here is a good summary: Chatper one of The Performance of Open Source Applications
Multi-thread and Multi-process chromium
Threading:if you want to understand the chromium's thread code, this is a good start.
Anatomy of Chromium MessageLoop: a must read document for understanding chromium's multi-thread code.
Multi-threaded rasterisation project status
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).
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)