cross-platform browser instrumentation using JavaScript jsprobes ¡ ¡
Brian Burg (@brrian / burg@cs.uw.edu)
jsprobes cross-platform browser instrumentation using - - PowerPoint PPT Presentation
jsprobes cross-platform browser instrumentation using JavaScript Brian Burg (@brrian / burg@cs.uw.edu) Background: browser research template 1 2 3
Brian Burg (@brrian / burg@cs.uw.edu)
images ¡from ¡www.phdcomics.com ¡
images ¡from ¡www.phdcomics.com ¡
Image: ¡Mozilla ¡Test ¡Pilot ¡(www.mozillalabs.com/testpilot/) ¡
Images: ¡dtrace.org, ¡en.wikipedia.org/wiki/SystemTap ¡
images ¡from ¡www.phdcomics.com ¡
(source ¡available ¡at ¡h_ps://bitbucket.org/burg/aboutgc) ¡ ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ Handler ¡registry ¡ ¡ ¡ ¡ ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Register ¡probe ¡ handler ¡with ¡service ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ Probe ¡point ¡reached. ¡
1 ¡
Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Register ¡probe ¡ handler ¡with ¡service ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ Data ¡gathered, ¡ serialized, ¡ and ¡enqueued ¡ Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Probe ¡point ¡reached. ¡
Register ¡probe ¡ handler ¡with ¡service ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ asynchronously ¡ deserialize ¡data ¡ and ¡run ¡handlers ¡ Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Data ¡gathered, ¡ serialized, ¡ and ¡enqueued ¡
Register ¡probe ¡ handler ¡with ¡service ¡
Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Register ¡probe ¡ handler ¡with ¡service ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ asynchronously ¡ deserialize ¡data ¡ and ¡run ¡handlers ¡ Data ¡gathered, ¡ serialized, ¡ and ¡enqueued ¡
Post ¡async ¡messages ¡ back ¡to ¡main ¡thread ¡
Handler ¡registry ¡ ¡ ¡ ¡ ¡
probe handler code probe handler code probe handler code
Register ¡probe ¡ handler ¡with ¡service ¡
Main ¡browser ¡ ¡ thread ¡+ ¡heap ¡ Probe ¡handler ¡ thread ¡+ ¡heap ¡ asynchronously ¡ deserialize ¡data ¡ and ¡run ¡handlers ¡ Data ¡gathered, ¡ serialized, ¡ and ¡enqueued ¡
Post ¡async ¡messages ¡ back ¡to ¡main ¡thread ¡
Dispatch ¡message ¡to ¡callbacks ¡
* ¡Side-‑effects ¡would ¡complicate ¡ reasoning ¡when ¡mul:ple ¡ handlers ¡are ¡registered ¡for ¡the ¡ same ¡probe ¡point ¡ ** ¡Probe ¡data ¡is ¡marshalled ¡using ¡ the ¡HTML ¡5 ¡structured ¡cloning ¡
to ¡support ¡new ¡data ¡types. ¡
Current ¡implementa:on ¡available ¡at ¡h_ps://bitbucket.org/burg/jsprobes-‑patches ¡ ¡
images ¡from ¡www.phdcomics.com ¡
Use ¡jsprobes ¡to ¡ ¡ make ¡an ¡addon ¡ ¡ that ¡measures ¡ ¡ per-‑site ¡heap ¡size ¡ “Do ¡websites ¡have ¡a ¡ typical ¡heap ¡size?” ¡ Implement ¡beLer ¡ ¡ heap ¡size ¡heurisMcs ¡ based ¡on ¡real ¡data ¡
¡Brian ¡Burg ¡– ¡University ¡of ¡Washington ¡ ¡burg@cs.uw.edu ¡ ¡www.brrian.net ¡ ¡ www.twi_er.com/brrian ¡ ¡ ¡h_ps://bitbucket.org/burg/ ¡ h_p://brrian.tumblr.com ¡ ¡