Rubinius - What Have You Done For Me Lately

120
Tuesday, November 23, 2010

description

Talk given at RubyConf 2010 in New Orleans by Evan Phoenix on Rubinius.

Transcript of Rubinius - What Have You Done For Me Lately

Page 1: Rubinius - What Have You Done For Me Lately

Tuesday, November 23, 2010

Page 2: Rubinius - What Have You Done For Me Lately

RubiniusWhat have you done for me today?

Tuesday, November 23, 2010

Page 3: Rubinius - What Have You Done For Me Lately

Rubinius?

Tuesday, November 23, 2010

Page 4: Rubinius - What Have You Done For Me Lately

Modern Ruby Implementation

Rubinius

Tuesday, November 23, 2010

Page 5: Rubinius - What Have You Done For Me Lately

Philosophy

Rubinius

Tuesday, November 23, 2010

Page 6: Rubinius - What Have You Done For Me Lately

Philosophy

Use Ruby

Rubinius

Tuesday, November 23, 2010

Page 7: Rubinius - What Have You Done For Me Lately

Philosophy

Allow Ruby to extend the system

Rubinius

Tuesday, November 23, 2010

Page 8: Rubinius - What Have You Done For Me Lately

module Enumerable def map if block_given? ary = [] each { |o| ary << yield(o) } ary else to_a end endend

Tuesday, November 23, 2010

Page 9: Rubinius - What Have You Done For Me Lately

Compatibility

1.8.7

Rubinius

Tuesday, November 23, 2010

Page 10: Rubinius - What Have You Done For Me Lately

Compatibility

Rails 2.3 - 3+

Rubinius

Tuesday, November 23, 2010

Page 11: Rubinius - What Have You Done For Me Lately

Compatibility

C extensions

Rubinius

Tuesday, November 23, 2010

Page 12: Rubinius - What Have You Done For Me Lately

Spin Off Projects

Rubinius

Tuesday, November 23, 2010

Page 13: Rubinius - What Have You Done For Me Lately

Spin Off Projects

RubySpec

Rubinius

Tuesday, November 23, 2010

Page 14: Rubinius - What Have You Done For Me Lately

Spin Off Projects

FFI

Rubinius

Tuesday, November 23, 2010

Page 15: Rubinius - What Have You Done For Me Lately

Drop In Compatible

Rubinius

Tuesday, November 23, 2010

Page 16: Rubinius - What Have You Done For Me Lately

Technology

Rubinius

Tuesday, November 23, 2010

Page 17: Rubinius - What Have You Done For Me Lately

Technology

Bring techniques to Ruby

Rubinius

Tuesday, November 23, 2010

Page 18: Rubinius - What Have You Done For Me Lately

Tuesday, November 23, 2010

Page 19: Rubinius - What Have You Done For Me Lately

Optimized to Machine Code

Tuesday, November 23, 2010

Page 20: Rubinius - What Have You Done For Me Lately

Bytecode VM

Optimized to Machine Code

Tuesday, November 23, 2010

Page 21: Rubinius - What Have You Done For Me Lately

Bytecode VM

Soph"ticated Garba# Collection

Optimized to Machine Code

Tuesday, November 23, 2010

Page 22: Rubinius - What Have You Done For Me Lately

Technology

Efficient Memory Layout

Rubinius

Tuesday, November 23, 2010

Page 23: Rubinius - What Have You Done For Me Lately

obj.ivars = { :@name => “Evan”, :@age => 31}

Tuesday, November 23, 2010

Page 24: Rubinius - What Have You Done For Me Lately

obj.class.ivars = { :@name => 0, :@age => 1}

obj.ivars = [ “Evan”, 31]

Tuesday, November 23, 2010

Page 25: Rubinius - What Have You Done For Me Lately

Flags

Class

Extra Ivars

@name

@age

Tuesday, November 23, 2010

Page 26: Rubinius - What Have You Done For Me Lately

Developers!

Tuesday, November 23, 2010

Page 27: Rubinius - What Have You Done For Me Lately

Developers!

Developers!

Tuesday, November 23, 2010

Page 28: Rubinius - What Have You Done For Me Lately

Developers!

Developers!

Developers!

Tuesday, November 23, 2010

Page 29: Rubinius - What Have You Done For Me Lately

Build tools around APIs

API Driven

Tuesday, November 23, 2010

Page 30: Rubinius - What Have You Done For Me Lately

Allow users to build more!

API Driven

Tuesday, November 23, 2010

Page 31: Rubinius - What Have You Done For Me Lately

Example

Bytecode Compiler

API Driven

Tuesday, November 23, 2010

Page 32: Rubinius - What Have You Done For Me Lately

Example

Bytecode and Compiler

API Driven

Tuesday, November 23, 2010

Page 33: Rubinius - What Have You Done For Me Lately

Example

Fancy Language

API Driven

Tuesday, November 23, 2010

Page 34: Rubinius - What Have You Done For Me Lately

Why useRubinius?

Tuesday, November 23, 2010

Page 35: Rubinius - What Have You Done For Me Lately

Focus on Developers

Why?

Tuesday, November 23, 2010

Page 36: Rubinius - What Have You Done For Me Lately

I’m a Ruby developer

Why?

Tuesday, November 23, 2010

Page 37: Rubinius - What Have You Done For Me Lately

Tools born from need

Why?

Tuesday, November 23, 2010

Page 38: Rubinius - What Have You Done For Me Lately

Improve an Algorithm

Problem:

Tuesday, November 23, 2010

Page 39: Rubinius - What Have You Done For Me Lately

Step 1

Improving

Tuesday, November 23, 2010

Page 40: Rubinius - What Have You Done For Me Lately

Step 1

Benchmark

Improving

Tuesday, November 23, 2010

Page 41: Rubinius - What Have You Done For Me Lately

require 'benchmark'cc = CoworkersCode.new

Benchmark.bm do |x| x.report("initial") { cc.calculate_awesome_score }end

Tuesday, November 23, 2010

Page 42: Rubinius - What Have You Done For Me Lately

user system total realinitial 0.071788 0.001601 0.073389 ( 29.998823)

Tuesday, November 23, 2010

Page 43: Rubinius - What Have You Done For Me Lately

29.998823

Tuesday, November 23, 2010

Page 44: Rubinius - What Have You Done For Me Lately

user system total realinitial 0.071788 0.001601 0.073389 ( 29.998823)

Tuesday, November 23, 2010

Page 45: Rubinius - What Have You Done For Me Lately

user: 0.071788system: 0.001601 total: 0.073389 real: 29.998823

Tuesday, November 23, 2010

Page 46: Rubinius - What Have You Done For Me Lately

Time running code

User

Tuesday, November 23, 2010

Page 47: Rubinius - What Have You Done For Me Lately

Time inside the kernel

System

Tuesday, November 23, 2010

Page 48: Rubinius - What Have You Done For Me Lately

Sum of user and system

Total

Tuesday, November 23, 2010

Page 49: Rubinius - What Have You Done For Me Lately

Elapsed wall clock time

Real

Tuesday, November 23, 2010

Page 50: Rubinius - What Have You Done For Me Lately

Time measured by a stop watch

Wall Clock

Tuesday, November 23, 2010

Page 51: Rubinius - What Have You Done For Me Lately

user: 0.071788system: 0.001601 total: 0.073389 real: 29.998823

Tuesday, November 23, 2010

Page 52: Rubinius - What Have You Done For Me Lately

0.073389

29.998823!=

Tuesday, November 23, 2010

Page 53: Rubinius - What Have You Done For Me Lately

0.073389

29.998823!=??

Tuesday, November 23, 2010

Page 54: Rubinius - What Have You Done For Me Lately

Step 2

Profile

Improving

Tuesday, November 23, 2010

Page 55: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile scratch/profile_sample.rb

% cumulative self self total time seconds seconds calls ms/call ms/call name------------------------------------------------------------ 99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout 0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode 0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill 0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat

Tuesday, November 23, 2010

Page 56: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile scratch/profile_sample.rb

% cumulative self self total time seconds seconds calls ms/call ms/call name------------------------------------------------------------ 99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout 0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode 0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill 0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat

Tuesday, November 23, 2010

Page 57: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile scratch/profile_sample.rb

% cumulative self self total time seconds seconds calls ms/call ms/call name------------------------------------------------------------ 99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout 0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode 0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill 0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat

Tuesday, November 23, 2010

Page 58: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile scratch/profile_sample.rb

% cumulative self self total time seconds seconds calls ms/call ms/call name------------------------------------------------------------ 99.69 30.00 30.00 10 3000.10 3000.10 Rubinius::Channel#receive_timeout 0.13 0.04 0.04 2 19.82 19.82 IO.open_with_mode 0.11 0.03 0.03 1 33.05 33.05 IO::Buffer#fill 0.02 0.01 0.01 18 0.30 0.30 FFI::Platform::POSIX.stat

Tuesday, November 23, 2010

Page 59: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

Tuesday, November 23, 2010

Page 60: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

Tuesday, November 23, 2010

Page 61: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

0.00 30.00 10/60 Kernel#sleep [15][16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]

Tuesday, November 23, 2010

Page 62: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

0.00 30.00 10/60 Kernel#sleep [15][16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]

0.00 30.00 10/20 CoworkersCode#superhero_factor [14][15] 99.9 0.00 30.00 10 Kernel#sleep [15] 30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]

Tuesday, November 23, 2010

Page 63: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

0.00 30.00 10/60 Kernel#sleep [15][16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]

0.00 30.00 10/20 CoworkersCode#superhero_factor [14][15] 99.9 0.00 30.00 10 Kernel#sleep [15] 30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]

Tuesday, November 23, 2010

Page 64: Rubinius - What Have You Done For Me Lately

» rbx -Xprofile -Xprofiler.graph scratch/profile_sample.rb

0.00 30.00 10/60 Kernel#sleep [15][16] 99.9 30.00 0.00 10 Rubinius::Channel#receive_timeout [16]

0.00 30.00 10/20 CoworkersCode#superhero_factor [14][15] 99.9 0.00 30.00 10 Kernel#sleep [15] 30.00 0.00 10/10 Rubinius::Channel#receive_timeout [16]

Tuesday, November 23, 2010

Page 65: Rubinius - What Have You Done For Me Lately

def superhero_factor sleep 3 rand(10) end

Tuesday, November 23, 2010

Page 66: Rubinius - What Have You Done For Me Lately

def superhero_factor sleep 3 rand(10) end

Tuesday, November 23, 2010

Page 67: Rubinius - What Have You Done For Me Lately

Step 3

Fix and benchmark

Improving

Tuesday, November 23, 2010

Page 68: Rubinius - What Have You Done For Me Lately

user system total realinitial 0.000102 0.000047 0.000149 ( 0.000139)

Tuesday, November 23, 2010

Page 69: Rubinius - What Have You Done For Me Lately

0.000139

Tuesday, November 23, 2010

Page 70: Rubinius - What Have You Done For Me Lately

0.000139

Tuesday, November 23, 2010

Page 71: Rubinius - What Have You Done For Me Lately

0.073389

29.998823!=

Tuesday, November 23, 2010

Page 72: Rubinius - What Have You Done For Me Lately

Invisible in all but real time

Sleep!

Tuesday, November 23, 2010

Page 73: Rubinius - What Have You Done For Me Lately

Improve an Algorithm

Problem:

Tuesday, November 23, 2010

Page 74: Rubinius - What Have You Done For Me Lately

Improve an Algorithm

Problem:

SOLVED!

Tuesday, November 23, 2010

Page 75: Rubinius - What Have You Done For Me Lately

Slow / hung process

Problem:

Tuesday, November 23, 2010

Page 76: Rubinius - What Have You Done For Me Lately

» bin/rbx scratch/qa_sample.rb 1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 77: Rubinius - What Have You Done For Me Lately

Slow / hung process

Use Query Agent to inspect

Problem:

Tuesday, November 23, 2010

Page 78: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start scratch/qa_sample.rb 1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 79: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start scratch/qa_sample.rb 1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 80: Rubinius - What Have You Done For Me Lately

» bin/rbx consoleVM: bin/rbx -Xagent.start scratch/qa_sample.rbConnecting to VM on port 58273Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0console>

Tuesday, November 23, 2010

Page 81: Rubinius - What Have You Done For Me Lately

» bin/rbx consoleVM: bin/rbx -Xagent.start scratch/qa_sample.rbConnecting to VM on port 58273Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0console> pidPID: 39331

Tuesday, November 23, 2010

Page 82: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start scratch/qa_sample.rb 1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 83: Rubinius - What Have You Done For Me Lately

» bin/rbx consoleVM: bin/rbx -Xagent.start scratch/qa_sample.rbConnecting to VM on port 58273Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0console> pidPID: 39331console> backtrace

Tuesday, November 23, 2010

Page 84: Rubinius - What Have You Done For Me Lately

» bin/rbx consoleVM: bin/rbx -Xagent.start scratch/qa_sample.rbConnecting to VM on port 58273Connected to localhost:58273, host type: x86_64-apple-darwin10.4.0console> pidPID: 39331console> backtraceThread 0:0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-release/scratch/qa_sample.rb:10 (+7)0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/scratch/qa_sample.rb:17 (+91)0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/codeloader.rb:67 (+44)0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/codeloader.rb:91 (+40)0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125)0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)

Tuesday, November 23, 2010

Page 85: Rubinius - What Have You Done For Me Lately

Thread 0:0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-release/scratch/qa_sample.rb:10 (+7)0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/scratch/qa_sample.rb:17 (+91)0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/codeloader.rb:67 (+44)0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/codeloader.rb:91 (+40)0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125)0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)

Tuesday, November 23, 2010

Page 86: Rubinius - What Have You Done For Me Lately

Thread 0:0x7fff5fbfc250: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)0x7fff5fbfc690: IO#read in kernel/common/io.rb:1197 (+125)0x7fff5fbfcaf0: ImportantServer#get_request in /Users/evan/git/rbx-release/scratch/qa_sample.rb:10 (+7)0x7fff5fbfced0: MAIN.__script__ in /Users/evan/git/rbx-release/scratch/qa_sample.rb:17 (+91)0x7fff5fbfd390: Rubinius::CodeLoader#load_script in kernel/delta/codeloader.rb:67 (+44)0x7fff5fbfd790: Rubinius::CodeLoader.load_script in kernel/delta/codeloader.rb:91 (+40)0x7fff5fbfdbb0: Rubinius::Loader#script in kernel/loader.rb:467 (+125)0x7fff5fbfdfc0: Rubinius::Loader#main in kernel/loader.rb:578 (+64)0x7fff5fbfe3e0: Rubinius::Loader.main in kernel/loader.rb:617 (+33)0x7fff5fbfe800: Object#__script__ in kernel/loader.rb:628 (+60)

Tuesday, November 23, 2010

Page 87: Rubinius - What Have You Done For Me Lately

Slow / hung process

Sample process via CLI

Problem:

Tuesday, November 23, 2010

Page 88: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start -Xagent.verbose \ scratch/qa_sample.rb[QA: Bound to port 58407]1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 89: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start -Xagent.verbose \ scratch/qa_sample.rb[QA: Bound to port 58407]1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 90: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start -Xagent.verbose \ scratch/qa_sample.rb[QA: Bound to port 58407]1288125364.684678: Server started, pid 39331

Tuesday, November 23, 2010

Page 91: Rubinius - What Have You Done For Me Lately

» bin/rbx console -p 58431 --btThread 0:0x7fff5fbfc200: IO::Buffer#fill_from in kernel/common/io.rb:67 (+72)0x7fff5fbfc640: IO#read in kernel/common/io.rb:1197 (+125)0x7fff5fbfcaa0: ImportantServer#get_request in /Users/evan/git/rbx-release/scratch/qa_sample.rb:10 (+7)0x7fff5fbfce80: MAIN.__script__ in /Users/evan/git/rbx-release/scratch/qa_sample.rb:17 (+91)0x7fff5fbfd340: Rubinius::CodeLoader#load_script in kernel/delta/codeloader.rb:67 (+44)0x7fff5fbfd740: Rubinius::CodeLoader.load_script in kernel/delta/codeloader.rb:91 (+40)0x7fff5fbfdb60: Rubinius::Loader#script in kernel/loader.rb:467 (+125)0x7fff5fbfdf70: Rubinius::Loader#main in kernel/loader.rb:578 (+64)0x7fff5fbfe390: Rubinius::Loader.main in kernel/loader.rb:617 (+33)0x7fff5fbfe7b0: Object#__script__ in kernel/loader.rb:628 (+60)

Tuesday, November 23, 2010

Page 92: Rubinius - What Have You Done For Me Lately

Slow / hung process

Easy API to build monitoring tools

Problem:

Tuesday, November 23, 2010

Page 93: Rubinius - What Have You Done For Me Lately

require 'socket'require 'rubinius/agent'port = 58431agent = Rubinius::Agent.connect( "localhost", port)kind, bt = agent.get("system.backtrace")

Tuesday, November 23, 2010

Page 94: Rubinius - What Have You Done For Me Lately

Socket based VM API

Query Agent

Tuesday, November 23, 2010

Page 95: Rubinius - What Have You Done For Me Lately

Socket based VM API

Simple get/set variables

Query Agent

Tuesday, November 23, 2010

Page 96: Rubinius - What Have You Done For Me Lately

Slow / hung process

Problem:

Tuesday, November 23, 2010

Page 97: Rubinius - What Have You Done For Me Lately

Slow / hung process

Problem:

SOLVED!

Tuesday, November 23, 2010

Page 98: Rubinius - What Have You Done For Me Lately

Memory Footprint

Problem:

Tuesday, November 23, 2010

Page 99: Rubinius - What Have You Done For Me Lately

Memory Footprint

Suspect some kind of memory leak

Problem:

Tuesday, November 23, 2010

Page 100: Rubinius - What Have You Done For Me Lately

Memory Footprint

Use Heap Dump!

Problem:

Tuesday, November 23, 2010

Page 101: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start scratch/hd_demo.rb Waiting...

Tuesday, November 23, 2010

Page 102: Rubinius - What Have You Done For Me Lately

» bin/rbx consoleVM: bin/rbx -Xagent.start scratch/hd_demo.rbConnecting to VM on port 58710Connected to localhost:58710, host type: x86_64-apple-darwin10.4.0console> set system.memory.dump heap.dump

Tuesday, November 23, 2010

Page 103: Rubinius - What Have You Done For Me Lately

» bin/rbx -Xagent.start scratch/hd_demo.rb Waiting...Heap dumped to heap.dump

Tuesday, November 23, 2010

Page 104: Rubinius - What Have You Done For Me Lately

» rbx -Ilib histo.rb ../rbx-release/heap.dump 19798 Rubinius::Tuple 3487912 4867 Rubinius::MethodTable::Bucket 272552 4218 String 303696 4193 Rubinius::CompiledMethod 805056 4193 Rubinius::InstructionSequence 134176 4110 Rubinius::ByteArray 100199256 1547 Rubinius::LookupTable::Bucket 74256 1053 Rubinius::LookupTable 50544 1010 Rubinius::MethodTable 48480 1000 BigCrazyClass 32000 966 Class 104592 783 Rubinius::StaticScope 37584 704 Rubinius::AccessVariable 56320

Tuesday, November 23, 2010

Page 105: Rubinius - What Have You Done For Me Lately

» rbx -Ilib histo.rb ../rbx-release/heap.dump 19798 Rubinius::Tuple 3487912 4867 Rubinius::MethodTable::Bucket 272552 4218 String 303696 4193 Rubinius::CompiledMethod 805056 4193 Rubinius::InstructionSequence 134176 4110 Rubinius::ByteArray 100199256 1547 Rubinius::LookupTable::Bucket 74256 1053 Rubinius::LookupTable 50544 1010 Rubinius::MethodTable 48480 1000 BigCrazyClass 32000 966 Class 104592 783 Rubinius::StaticScope 37584 704 Rubinius::AccessVariable 56320

Tuesday, November 23, 2010

Page 106: Rubinius - What Have You Done For Me Lately

Complete Heap Layout

Heap Dump

Tuesday, November 23, 2010

Page 107: Rubinius - What Have You Done For Me Lately

Complete Heap Layout

Stable format

Heap Dump

Tuesday, November 23, 2010

Page 108: Rubinius - What Have You Done For Me Lately

Complete Heap Layout

Reference Ruby Reader

Heap Dump

Tuesday, November 23, 2010

Page 109: Rubinius - What Have You Done For Me Lately

Gauge

Heap Dump

Tuesday, November 23, 2010

Page 110: Rubinius - What Have You Done For Me Lately

Gauge

Rails Application Explorer

Heap Dump

Tuesday, November 23, 2010

Page 111: Rubinius - What Have You Done For Me Lately

Future Feature

Tracking allocation sites

Heap Dump

Tuesday, November 23, 2010

Page 112: Rubinius - What Have You Done For Me Lately

Memory Footprint

Problem:

Tuesday, November 23, 2010

Page 113: Rubinius - What Have You Done For Me Lately

Memory Footprint

Problem:

SOLVED!

Tuesday, November 23, 2010

Page 114: Rubinius - What Have You Done For Me Lately

Memory Footprint

Problem:

SOLVED!(mostly)

Tuesday, November 23, 2010

Page 115: Rubinius - What Have You Done For Me Lately

Future

Tuesday, November 23, 2010

Page 116: Rubinius - What Have You Done For Me Lately

1.9

Future

Tuesday, November 23, 2010

Page 117: Rubinius - What Have You Done For Me Lately

Windows

Future

Tuesday, November 23, 2010

Page 118: Rubinius - What Have You Done For Me Lately

Full Concurrency

Future

Tuesday, November 23, 2010

Page 119: Rubinius - What Have You Done For Me Lately

Why Not?

Tuesday, November 23, 2010

Page 120: Rubinius - What Have You Done For Me Lately

Thanks!

Tuesday, November 23, 2010