¶ Chromium Summer of Code
¶ Proposal
This project will look towards making Chromium on Linux a pleasant experience.
Ensuring the browser starts as fast as possible, doesn't leak memory, stays
asleep when it's not busy, and does it's work as efficiently as possible will
the goals.
I will look to test Chromium on smaller machines, such as netbooks using
Intel's Atom and the Beagleboard using ARM's Cortex-A8, measuring power usage
of the machines to see if the browser effects this as the code evolves.
I will also work on profiling the browser using the tools available on Linux,
such as powertop, Oprofile and Valgrind and presenting these results as hints
for developers.
I am a student at the University of Adelaide studying for my Electrical and
Electronic (Computer Systems) Engineering degree. I was a participant in the
2007 Summer of Code where, among other things, I worked for the OLPC project
on a power measurement system for the XO-1 laptop.
I have a strong interest in a embedded systems such as ARM, as well as
understanding how software interacts with our computers from the scheduling of
tasks by the kernel, down through the usage of cache and dispatch of
instructions to the execution units in the processor.
¶ Project Plan
¶ Tasks
¶ Power measurement
- Build Chromium on ARM
- Ubuntu has an ARM port
- I have it running under QEMU
- TODO: running on beagleboard
Patches for ARM have been comitted to the tree
99337
100352
99337
Building native is the way to go
Cross toolchains I have
crosstool-ng
android
openembedded
TODO: learn how to build Cr for ARM
Chromium on Atom
TODO: Look at -march=atom
svn://gcc.gnu.org/svn/gcc/branches/ix86/atom
Atom pipeline patch
Chromium on XO 1.5
The XO 1.5 will be a Via C7 CPU
It will have the tinderbox similar to gen1
Email from Wad
gen1 power block diagram
gen1.5 power block diagram
TODO: Ask OLPC for a board
Power measurement
Kill-o-watt like device
jaycar.com.au Aussie version
-can't do automatic instrumentation, logging, due to 230V
+simple
Other side of the power pack
+low voltage, can measure using arduino
-have to chop up power cord
¶ Profiling
- Valgrind
- TODO: find "vagrind bot" for chrome
- TODO: ask if there are tasks I could take on to help
traceline
src/tools/traceline
Very cool piece of code
Downside is it's quite windows specific
TODO: port traceline to Linux?
sp-startup-time
Uses LD_PRELOAD hacks to intercept some gtk calls and time gtk startup
Written by Nokia for maemo
http://maemo.org/development/tools/doc/diablo/sp-startup-time/
SpStartupTime for an example of output. This only shows time to start
TODO: get full stats output
oprofile
Shows how much processor time are spent in what functions
Doesn't give a timeline like traceline, can't tell what spawns what, and where time is spent
Some logs taken, highly dependant on what is happening in the browser, eg:
browsing+scrolling gmail showed lots of time spent in skia
running the gravity demo from chromeexperiments.com showed lots of time in v8.
TODO: Work out what meaningful data can be taken from oprofile
Running a few well-chosen tests?
¶ Misc
¶ Timeline
TODO
- Bonding period
- Coding peroid