Parallelizing the Web Browser
Chris Jones, Rose Liu, Leo Meyerovich Krste Asanovic, and Rastislav Bodik ParLab UC Berkeley
TheTransi*ontoHandhelds Powerwall: Previous genera*onsreusedso4ware - - PowerPoint PPT Presentation
ParallelizingtheWebBrowser ChrisJones,RoseLiu,LeoMeyerovich KrsteAsanovic,andRastislavBodik ParLab UCBerkeley TheTransi*ontoHandhelds Powerwall: Previous
Chris Jones, Rose Liu, Leo Meyerovich Krste Asanovic, and Rastislav Bodik ParLab UC Berkeley
Handset Mini
Mainframe PC
WS Laptop Ubiquitous
2
Frontend Layout Scrip1ng
web servers layout render decompress lex parse + build DOM plugin (decode image, …) page? script
web servers layout render decompress lex parse + build DOM plugin (decode image, …) page? script
Σ – {‘<‘} ‘/’ Σ – {‘<‘} Σ – {‘>‘} ‘<’ Σ – {‘/‘} Σ – {‘>‘}
Σ – {‘<‘} ‘/’ Σ – {‘<‘} Σ – {‘>‘} ‘<’ Σ – {‘/‘} Σ – {‘>‘}
Processor 1 Processor 2 …
< b > B e r k e l e y ! < / b >
9
… … … … … … … … … …
Processor 1 Processor 2
… … … … … … … … … … …
web servers layout render decompress lex parse + build DOM plugin (decode image, …) page? script
<body> <p> <p> <img> hello <b> ok ok ok ok world
selectors p img p img proper1es height=83% width=100px float=le4 fontsize=7px
<body> <p> <p> <img> hello <b> ok ok ok ok world
selectors p img p img proper1es height=83% width=100px float=le4 fontsize=7px
selectors p img p img proper1es height=83% width=100px float=le4 fontsize=7px
<body> <p> <p> <img> hello <b> ok ok ok ok world
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Redundancy opt. + *ling(Cilk) Naïve + *ling (Cilk) Redundancy opt. + *ling(seq.) Naïve (Cilk) Naïve (seq)
web servers layout render decompress lex parse + build DOM plugin (decode image, …) page? script
<body> <p> <p> <img> hello <b>
world
w=100, fs=12 w=50, float=le4 w=100, fs=12 x=0, y=0 w=100, fs=6 x=0, y=0 w=40, fs=6 x=0, y=0 h=10 h=10 w=100, fs=12 x=0, y=10 w=50 x=0, y=10 h=20 w=30, fs=12 x=50, y=10 h=10 h=10 w=100, fs=12 x=0, y=10 h=40 h=40 fs=50%
fs, Δ, w fs, Δ, w Δ fs,Δ,w Δ Δ fs, Δ, w fs, Δ, w fs, Δ, w
<body> <p> <p> <img> hello <b>
world
w=200, fs=12 w=50, float=le4 w=100, fs=12 x=0, y=0 w=100, fs=6 x=0, y=0 w=40, fs=6 x=0, y=0 h=10 h=10 w=100, fs=12 x=0, y=10 w=50 x=0, y=10 h=20 w=30, fs=12 x=50, y=10 h=10 h=10 w=100, fs=12 x=0, y=10 h=40 h=40 fs=50%
fs, Δ, w fs, Δ, w Δ fs, Δ,w Δ Δ fs, Δ, w fs, Δ, w fs, Δ, w
w=40, fs=6 x=0, y=0 h=10 w=100, fs=12 x=0, y=10
Δ Δ fs, Δ, w
<body> <p> <p> <img> hello <b>
world
w=200, fs=12 w=50, float=le4 w=100, fs=12 x=0, y=0 w=100, fs=6 x=0, y=0 w=40, fs=6 x=0, y=0 h=10 h=10 w=100, fs=12 x=0, y=10 w=50 x=0, y=10 h=20 w=30, fs=12 x=50, y=10 h=10 h=10 w=100, fs=12 x=0, y=10 h=40 h=40 fs=50%
fs, Δ, w fs, Δ, w Δ fs, Δ,w Δ Δ fs, Δ, w fs, Δ, w fs, Δ, w
w=30, fs=12 x=50, y=10 h=10
fs, Δ, w fs, Δ, w fs, Δ, w
<body> <p> <p> <img> hello <b>
world
w=100, fs=12 float = le4 fs=6 fs=12 fs=12 fs=6 fs=12 fs=12 fs=12 wp=40 wm=40 wp=50 wm=50 wp=30, wm=30 wp=10 wm=10 wp=80 wm=30 wp=80, wm=40 wp=30 wm=30 wp=40 wm=40 fs=12
<body> <p> <p> <img> hello <b>
world
Phase 1: font size, temporary width Phase 2: preferred max & min width Phase 3: solved width Phase 4: height, rela1ve x/y posi1on
fs=50%
Phase 5: absolute x/y posi1on
Modeled Speedup w/Cilk++
Eight socket x 4 core AMD Opteron 2356 Barcelona Sun X4600 Dual socket x 4 core AMD Opteron 2356 Barcelona Sun X2200 Preproduc*on 2 socket x 4 core x 2 thread Intel Xeon Nehalem
Baseline: Cilk++ model on 1 core.
web servers layout render decompress lex parse + build DOM plugin (decode image, …) page? script
script B (Menlo) layout render layout render script A (Alameda) …
<div id="box" style="position:absolute; background: yellow;”> My box </div> <script> document.addEventListener ( 'mousemove', function (e) { var left = e.pageX; var top = e.pageY; setTimeout(function() { document.getElementById("box").style.top = top; document.getElementById("box").style.left = left; } , 500); }, false); </script>
body.column.div
delay 500 delay 500 mouse top left top left
Program structure is clearer when data and control is explicit