SlideShare a Scribd company logo
1 of 73
Download to read offline
It’s Dangerous to GC alone. Take this!
The OMR GC talk
Who are those handsome guys?
Robert Young
rwyoung@ca.ibm.com
@rwy0717
Craig Lehmann
craigl@ca.ibm.com
@CraigLehmann
2
IBM Runtime Technologies
3
4
VisualAge Smalltalk
J9 JVM
1988
?
1993
2016
5
VisualAge Smalltalk
J9 JVM
1988
OMR
1993
2016
An open source toolkit for
language runtime
technologies.
OMR
Execution Environment
7
Language-Agnostic Components
Platform Abstraction Layer
Garbage Collector
Diagnostic Services
Source Code Bytecode/AST
Compiler
Just-In-Time Compiler
InterpreterSource Bytecode
Compiler
Interpreter
Execution Environment
8
Language-Agnostic Components
Platform Abstraction Layer
Garbage Collector
Diagnostic Services
Source Code Bytecode/AST
Compiler
Just-In-Time Compiler
InterpreterSource Bytecode
Compiler
Interpreter
9
A Runtime Toolkit for Many Languages
JVM
OMR
Java App
Python
OMR
Python App
MRI
OMR
Ruby App
In Ruby
OMR
13
Getting started
14
How do we start?
http://thefeedingdoctor.com/wp-content/uploads/2013/10/Kid-Confused.jpg
15
How do we start?
16
Read the source
17
Read the source
18
19
Craig! Robert!
Tue Oct 5th - 1993
• Fantastic worldwide community
• Ruby has changed a lot over 20 years
• MRI is a complex virtual machine with a lot of history behind
it’s design decisions.
20
What we noticed
Objects
22
RVALUE
• Direct object pointers
• Conservative GC
Conservative
collection
23
Dynamic memory
string arrayhash data …
Managed Memory
• Fixed sized objects
• What about variable sized objects
Dynamic memory
string arrayhash data …
Managed Memory
malloc malloc malloc malloc
Malloc Memory
24
Dynamic memory
string arrayhash data …
malloc malloc malloc malloc
25
• No heap fragmentation
• Easy conservative marking
Dynamic memory
string arrayhash data …
malloc malloc malloc malloc
26
• Heavyweight allocation
• Malloc fragmentation
• Poor cache locality
• Expensive sweeping
Ruby has an incremental GC
Mark Sweep
Ruby
27
• GC work is interleaved with execution
• Minimizes mutator pause times
• Single threaded
• Serialized with the mutator
What we did
Goals
 Make allocations faster
 Improve GC Time
 Improve mutator performance
 100% compatibility
29
100% compatibility
 No C-extensions API changes
 Pass all extended tests
 Run Rails - unmodified
30
Let’s make it work
31
32
Starting out with Mark Sweep
static int
gc_start(rb_objspace_t *objspace …)
{
…
OMR_GC_SystemCollect();
...
}
static int
newobj_of(rb_objspace_t *objspace …)
{
...
obj = rb_omr_get_freeobj(th, sizeof(RVALUE));
...
}
33
Starting out with Mark Sweep
Need to support conservative collection
Conservative collection
Object Map (bit map)
• Object map allows us to support
conservative collection
• Bit Map used to keep track of objects
• Results in ~ 1.6% memory overhead
Let’s make it parallel
34
Multithreaded GC (Stop the world)
35
mark sweep
• Introducing Parallel Global GC
• Aggressively parallelized
• New APIs for parallelism
• Support for thread pooling and task
synchronization
Marking in parallel
36
mark sweep
Marking:
• Scan roots in parallel
• Break VM roots into subsets
• Complete marking in parallel
Sweeping in parallel
37
mark sweep
Sweeping:
• Free malloc space in parallel
• Clean up objects in parallel
• Move work out of finalization
Hey… It works!
38
New tools!
39
Garbage Collection Memory Visualizer for Ruby MRI
with zero changes to the tool
40
Health Center for Ruby MRI: Live GC visualization –
No code changes required
41
Health Center for Ruby MRI: Method profiling
42
How can we make CRuby faster?
43
Allocations!
44
Making allocation fast
Thread-local heaps:
• Cache regions of the heap per-thread
• Allocate without locking
• Better locality
45
Thread local heap
Object
TLH
Heap
Next Alloc
47
TLH
Thread local heap
TLH
Object
TLH
Heap
Next Alloc
48
Thread local heap
TLH
Object
TLH
Heap
Next Alloc
49
How can we make it faster?
50
Lets look at off heap memory!
51
How do we replace malloc/free?
• malloc/free callouts are expensive
• Rely on system for memory management concerns
• Still susceptible to fragmentation and concurrency
• Black box implementation
• Replace malloc and free with a new allocator
52
New built-in type!
55
New built-in type OMRBuffers
• Create a new, variable sized object type
• Allocate all buffers on the heap as objects
typedef struct OMRBuffer {
VALUE flags;
long size;
} OMRBuffer;
56
buffer
58
OMRBuffers on the heap!
string arrayhash data …
Managed Memory
buffer buffer buffer buffer
Malloc Memory
59
Shorter sweeping with OMRBuffers
mark sweep
GC Before
GC After
mark
sweep
Getting user defined types on heap
• RDatas are used to create C-extension types.
• Typed RDatas have a new flag:
RDATA_HEAP_ALLOCATED
• Automatically heap allocates the data buffer at allocation
• No free method results in no object finalization
• Allows for heap allocation in extensions
• Extremely easy to use
60
OMRBuffer wins
Improvements:
• Eliminated obj_free()
• Fast allocations
• Better cache locality
Challenges:
• Heap fragmentation
• Conservative collection
• Concurrency
61
Multithreaded allocations
• MRI does some work in backgrounded threads
• Use OMRBuffers in background threads
• Introduce finer grained locking than the GVL
• Allows for:
• multithreaded allocations
• GCing from a background thread
62
Is Ruby Fast Yet?
63
8% better throughput
122.57
112.84
0
20
40
60
80
100
120
140
2.2-omr 2.2.3
Experiments
64
Generational GC in MRI
• Experimenting with non-copying generational GC
• Marking is already fast
• Heap fragmentations issues
• High memory overhead
65
Segregated heap in MRI
• Introduced a segregated heap into ruby
• Heap divided into regions of fixed sized objects
• Bounds maximum heap fragmentation
66
67
Concurrent GC in MRI
• Adding Concurrent GC to Ruby
• Ruby threads incrementally mark
• Background thread scans
• Parallelized sweep (STW)
sweepmark
What’s next
70
OMR GC in Ruby – what’s next
• Ongoing experimentation
• Balanced
• Semispace copying generational collection
• compaction
• Real time garbage collection
71
What’s next for OMR?
• Open source OMR
• Make our Ruby experiments available
• We want to hear from the experts (you)
• Lets make OMR and Ruby the best they can be
72
Ruby+OMR
Tech Preview
Download @
goo.gl/P3yXuy
• Releasing a
preview so you
can start test-
driving
• Send us
feedback!
73
74
75
We want to help
Thank You!
76
John Duimovich
CTO IBM Runtimes
duimovic@ca.ibm.com
@jduimovich
Ask us Anything!
Mark Stoodley
OMR Project Lead
mstoodle@ca.ibm.com
@mstoodle
Robert Young
OMR Developer
rwyoung@ca.ibm.com
@rwy0717
77
Charlie Gracie
OMR GC Architect
crgracie@ca.ibm.com
@crgracie
Craig Lehmann
OMR Developer
craigl@ca.ibm.com
@craiglehmann
The end!
Who were those handsome guys again?
Robert Young
rwyoung@ca.ibm.com
@rwy0717
Craig Lehmann
craigl@ca.ibm.com
@CraigLehmann
82
Trademarks, Copyrights, Disclaimers
88
IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without
notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our
general product direction and it should not be relied on in making a purchasing decision. The information
mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver
any material, code or functionality. Information about potential future products may not be incorporated into
any contract. The development, release, and timing of any future features or functionality described for our
products remains at our sole discretion.
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp.,
registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other
companies. A current list of other IBM trademarks is available on the web at "Copyright and trademark information" at
http://www.ibm.com/legal/copytrade.shtml
Other company, product, or service names may be trademarks or service marks of others.
THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.
WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION
CONTAINED IN THIS PRESENTATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED. IN ADDITION, THIS INFORMATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY,
WHICH ARE SUBJECT TO CHANGE BY IBM WITHOUT NOTICE. IBM SHALL NOT BE RESPONSIBLE FOR ANY
DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER
DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, NOR SHALL HAVE THE
EFFECT OF, CREATING ANY WARRANTIES OR REPRESENTATIONS FROM IBM (OR ITS SUPPLIERS OR
LICENSORS), OR ALTERING THE TERMS AND CONDITIONS OF ANY AGREEMENT OR LICENSE GOVERNING THE
USE OF IBM PRODUCTS OR SOFTWARE.
© Copyright International Business Machines Corporation 2015. All rights reserved.
Additional Important Disclaimers
• THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL
PURPOSES ONLY.
• WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE
INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED.
• ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A
CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE,
SOFTWARE OR INFRASTRUCTURE DIFFERENCES.
• ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.
• IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT
PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.
• IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING
OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER
DOCUMENTATION.
• NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:
• - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS
OR THEIR SUPPLIERS AND/OR LICENSORS
89

More Related Content

What's hot

Debugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauDebugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauSpark Summit
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxClaus Ibsen
 
Fighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with EmbulkFighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with EmbulkSadayuki Furuhashi
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelFuseSource.com
 
Apache Camel K - Fredericia
Apache Camel K - FredericiaApache Camel K - Fredericia
Apache Camel K - FredericiaClaus Ibsen
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.Ryuichi ITO
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGuillaume Laforge
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Claus Ibsen
 
DOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A RideDOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A RideMatthew McCullough
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHiroshi SHIBATA
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play frameworkFelipe
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A RideBruce Snyder
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9Marcus Lagergren
 
Spark stream - Kafka
Spark stream - Kafka Spark stream - Kafka
Spark stream - Kafka Dori Waldman
 
Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Sadayuki Furuhashi
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 

What's hot (20)

Debugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauDebugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden Karau
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the box
 
Fighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with EmbulkFighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with Embulk
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Apache Camel K - Fredericia
Apache Camel K - FredericiaApache Camel K - Fredericia
Apache Camel K - Fredericia
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific Languages
 
Making KVS 10x Scalable
Making KVS 10x ScalableMaking KVS 10x Scalable
Making KVS 10x Scalable
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2
 
DOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A RideDOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A Ride
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby Core
 
Debugging Apache Spark
Debugging Apache SparkDebugging Apache Spark
Debugging Apache Spark
 
Rails Performance
Rails PerformanceRails Performance
Rails Performance
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play framework
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A Ride
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
Spark stream - Kafka
Spark stream - Kafka Spark stream - Kafka
Spark stream - Kafka
 
Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014Presto - Hadoop Conference Japan 2014
Presto - Hadoop Conference Japan 2014
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 

Viewers also liked

GC in Ruby. RubyC, Kiev, 2014.
GC in Ruby. RubyC, Kiev, 2014.GC in Ruby. RubyC, Kiev, 2014.
GC in Ruby. RubyC, Kiev, 2014.Timothy Tsvetkov
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesMark Stoodley
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015Fernando Hamasaki de Amorim
 
Introduction to Meteor & React
Introduction to Meteor & ReactIntroduction to Meteor & React
Introduction to Meteor & ReactMax Li
 
FizzBuzzではじめるテスト
FizzBuzzではじめるテストFizzBuzzではじめるテスト
FizzBuzzではじめるテストMasashi Shinbara
 
Practical Testing of Ruby Core
Practical Testing of Ruby CorePractical Testing of Ruby Core
Practical Testing of Ruby CoreHiroshi SHIBATA
 
Logging for Production Systems in The Container Era
Logging for Production Systems in The Container EraLogging for Production Systems in The Container Era
Logging for Production Systems in The Container EraSadayuki Furuhashi
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsSadayuki Furuhashi
 
Docker環境でetherium開発環境を作る際のはまりどころ
Docker環境でetherium開発環境を作る際のはまりどころDocker環境でetherium開発環境を作る際のはまりどころ
Docker環境でetherium開発環境を作る際のはまりどころ健一 茂木
 
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオンHyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン健一 茂木
 
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul"fireap" - fast task runner on consul
"fireap" - fast task runner on consulIKEDA Kiyoshi
 
grifork - fast propagative task runner -
grifork - fast propagative task runner -grifork - fast propagative task runner -
grifork - fast propagative task runner -IKEDA Kiyoshi
 
DigdagはなぜYAMLなのか?
DigdagはなぜYAMLなのか?DigdagはなぜYAMLなのか?
DigdagはなぜYAMLなのか?Sadayuki Furuhashi
 
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIntroduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIKEDA Kiyoshi
 
TRICK2015 results
TRICK2015 resultsTRICK2015 results
TRICK2015 resultsmametter
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリットIto Kohta
 

Viewers also liked (17)

GC in Ruby. RubyC, Kiev, 2014.
GC in Ruby. RubyC, Kiev, 2014.GC in Ruby. RubyC, Kiev, 2014.
GC in Ruby. RubyC, Kiev, 2014.
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
 
Introduction to Meteor & React
Introduction to Meteor & ReactIntroduction to Meteor & React
Introduction to Meteor & React
 
FizzBuzzではじめるテスト
FizzBuzzではじめるテストFizzBuzzではじめるテスト
FizzBuzzではじめるテスト
 
Practical Testing of Ruby Core
Practical Testing of Ruby CorePractical Testing of Ruby Core
Practical Testing of Ruby Core
 
Logging for Production Systems in The Container Era
Logging for Production Systems in The Container EraLogging for Production Systems in The Container Era
Logging for Production Systems in The Container Era
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
 
Docker環境でetherium開発環境を作る際のはまりどころ
Docker環境でetherium開発環境を作る際のはまりどころDocker環境でetherium開発環境を作る際のはまりどころ
Docker環境でetherium開発環境を作る際のはまりどころ
 
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオンHyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
 
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
 
grifork - fast propagative task runner -
grifork - fast propagative task runner -grifork - fast propagative task runner -
grifork - fast propagative task runner -
 
DigdagはなぜYAMLなのか?
DigdagはなぜYAMLなのか?DigdagはなぜYAMLなのか?
DigdagはなぜYAMLなのか?
 
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIntroduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
 
TRICK2015 results
TRICK2015 resultsTRICK2015 results
TRICK2015 results
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 

Similar to The OMR GC talk - Ruby Kaigi 2015

FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRCharlie Gracie
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...0xdaryl
 
VMM2016-Eclipse OMR JITBuilder for better performance
VMM2016-Eclipse OMR JITBuilder for better performanceVMM2016-Eclipse OMR JITBuilder for better performance
VMM2016-Eclipse OMR JITBuilder for better performanceCharlie Gracie
 
Ingesting Data at Blazing Speed Using Apache Orc
Ingesting Data at Blazing Speed Using Apache OrcIngesting Data at Blazing Speed Using Apache Orc
Ingesting Data at Blazing Speed Using Apache OrcDataWorks Summit
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll buildMark Stoodley
 
Turbo2018 workshop JIT as a Service
Turbo2018 workshop   JIT as a ServiceTurbo2018 workshop   JIT as a Service
Turbo2018 workshop JIT as a ServiceMark Stoodley
 
Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...DataWorks Summit
 
Accelerating Machine Learning Applications on Spark Using GPUs
Accelerating Machine Learning Applications on Spark Using GPUsAccelerating Machine Learning Applications on Spark Using GPUs
Accelerating Machine Learning Applications on Spark Using GPUsIBM
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMCharlie Gracie
 
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...mfrancis
 
Java and the GPU - Everything You Need To Know
Java and the GPU - Everything You Need To KnowJava and the GPU - Everything You Need To Know
Java and the GPU - Everything You Need To KnowAdam Roberts
 
Service Testing & Virtualization in an Enterprise Environments
Service Testing & Virtualization in an Enterprise EnvironmentsService Testing & Virtualization in an Enterprise Environments
Service Testing & Virtualization in an Enterprise EnvironmentsDevOps for Enterprise Systems
 
Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...Indrajit Poddar
 
Academic Discussion Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...
Academic Discussion  Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...Academic Discussion  Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...
Academic Discussion Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...Ganesan Narayanasamy
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsChris Bailey
 
Real-Time Voice Actuation
Real-Time Voice ActuationReal-Time Voice Actuation
Real-Time Voice ActuationPragya Agrawal
 

Similar to The OMR GC talk - Ruby Kaigi 2015 (20)

FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMR
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
VMM2016-Eclipse OMR JITBuilder for better performance
VMM2016-Eclipse OMR JITBuilder for better performanceVMM2016-Eclipse OMR JITBuilder for better performance
VMM2016-Eclipse OMR JITBuilder for better performance
 
Java one2016
Java one2016Java one2016
Java one2016
 
Ingesting Data at Blazing Speed Using Apache Orc
Ingesting Data at Blazing Speed Using Apache OrcIngesting Data at Blazing Speed Using Apache Orc
Ingesting Data at Blazing Speed Using Apache Orc
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll build
 
Turbo2018 workshop JIT as a Service
Turbo2018 workshop   JIT as a ServiceTurbo2018 workshop   JIT as a Service
Turbo2018 workshop JIT as a Service
 
Open j9 jdk on RISC-V
Open j9 jdk on RISC-VOpen j9 jdk on RISC-V
Open j9 jdk on RISC-V
 
Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...
 
Accelerating Machine Learning Applications on Spark Using GPUs
Accelerating Machine Learning Applications on Spark Using GPUsAccelerating Machine Learning Applications on Spark Using GPUs
Accelerating Machine Learning Applications on Spark Using GPUs
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VM
 
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...
 
Death to Manual Deployments
Death to Manual DeploymentsDeath to Manual Deployments
Death to Manual Deployments
 
Java and the GPU - Everything You Need To Know
Java and the GPU - Everything You Need To KnowJava and the GPU - Everything You Need To Know
Java and the GPU - Everything You Need To Know
 
Service Testing & Virtualization in an Enterprise Environments
Service Testing & Virtualization in an Enterprise EnvironmentsService Testing & Virtualization in an Enterprise Environments
Service Testing & Virtualization in an Enterprise Environments
 
Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...Enabling a hardware accelerated deep learning data science experience for Apa...
Enabling a hardware accelerated deep learning data science experience for Apa...
 
Academic Discussion Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...
Academic Discussion  Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...Academic Discussion  Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...
Academic Discussion Group Workshop 2018 November 10 st 2018 Nimbix CAPI SNAP...
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic Tools
 
Real-Time Voice Actuation
Real-Time Voice ActuationReal-Time Voice Actuation
Real-Time Voice Actuation
 

Recently uploaded

Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncssuser2ae721
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptNarmatha D
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdfCaalaaAbdulkerim
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating SystemRashmi Bhat
 
Industrial Safety Unit-I SAFETY TERMINOLOGIES
Industrial Safety Unit-I SAFETY TERMINOLOGIESIndustrial Safety Unit-I SAFETY TERMINOLOGIES
Industrial Safety Unit-I SAFETY TERMINOLOGIESNarmatha D
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Vishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsVishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsSachinPawar510423
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
The SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsThe SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsDILIPKUMARMONDAL6
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxk795866
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgsaravananr517913
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 

Recently uploaded (20)

Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.ppt
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdf
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating System
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Industrial Safety Unit-I SAFETY TERMINOLOGIES
Industrial Safety Unit-I SAFETY TERMINOLOGIESIndustrial Safety Unit-I SAFETY TERMINOLOGIES
Industrial Safety Unit-I SAFETY TERMINOLOGIES
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Vishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsVishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documents
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
The SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsThe SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teams
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptx
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 

The OMR GC talk - Ruby Kaigi 2015

  • 1. It’s Dangerous to GC alone. Take this! The OMR GC talk
  • 2. Who are those handsome guys? Robert Young rwyoung@ca.ibm.com @rwy0717 Craig Lehmann craigl@ca.ibm.com @CraigLehmann 2
  • 6. An open source toolkit for language runtime technologies. OMR
  • 7. Execution Environment 7 Language-Agnostic Components Platform Abstraction Layer Garbage Collector Diagnostic Services Source Code Bytecode/AST Compiler Just-In-Time Compiler InterpreterSource Bytecode Compiler Interpreter
  • 8. Execution Environment 8 Language-Agnostic Components Platform Abstraction Layer Garbage Collector Diagnostic Services Source Code Bytecode/AST Compiler Just-In-Time Compiler InterpreterSource Bytecode Compiler Interpreter
  • 9. 9 A Runtime Toolkit for Many Languages JVM OMR Java App Python OMR Python App MRI OMR Ruby App
  • 12. 14 How do we start? http://thefeedingdoctor.com/wp-content/uploads/2013/10/Kid-Confused.jpg
  • 13. 15 How do we start?
  • 14. 16
  • 18. • Fantastic worldwide community • Ruby has changed a lot over 20 years • MRI is a complex virtual machine with a lot of history behind it’s design decisions. 20
  • 20. Objects 22 RVALUE • Direct object pointers • Conservative GC Conservative collection
  • 21. 23 Dynamic memory string arrayhash data … Managed Memory • Fixed sized objects • What about variable sized objects
  • 22. Dynamic memory string arrayhash data … Managed Memory malloc malloc malloc malloc Malloc Memory 24
  • 23. Dynamic memory string arrayhash data … malloc malloc malloc malloc 25 • No heap fragmentation • Easy conservative marking
  • 24. Dynamic memory string arrayhash data … malloc malloc malloc malloc 26 • Heavyweight allocation • Malloc fragmentation • Poor cache locality • Expensive sweeping
  • 25. Ruby has an incremental GC Mark Sweep Ruby 27 • GC work is interleaved with execution • Minimizes mutator pause times • Single threaded • Serialized with the mutator
  • 27. Goals  Make allocations faster  Improve GC Time  Improve mutator performance  100% compatibility 29
  • 28. 100% compatibility  No C-extensions API changes  Pass all extended tests  Run Rails - unmodified 30
  • 29. Let’s make it work 31
  • 30. 32 Starting out with Mark Sweep static int gc_start(rb_objspace_t *objspace …) { … OMR_GC_SystemCollect(); ... } static int newobj_of(rb_objspace_t *objspace …) { ... obj = rb_omr_get_freeobj(th, sizeof(RVALUE)); ... }
  • 31. 33 Starting out with Mark Sweep Need to support conservative collection Conservative collection Object Map (bit map) • Object map allows us to support conservative collection • Bit Map used to keep track of objects • Results in ~ 1.6% memory overhead
  • 32. Let’s make it parallel 34
  • 33. Multithreaded GC (Stop the world) 35 mark sweep • Introducing Parallel Global GC • Aggressively parallelized • New APIs for parallelism • Support for thread pooling and task synchronization
  • 34. Marking in parallel 36 mark sweep Marking: • Scan roots in parallel • Break VM roots into subsets • Complete marking in parallel
  • 35. Sweeping in parallel 37 mark sweep Sweeping: • Free malloc space in parallel • Clean up objects in parallel • Move work out of finalization
  • 38. Garbage Collection Memory Visualizer for Ruby MRI with zero changes to the tool 40
  • 39. Health Center for Ruby MRI: Live GC visualization – No code changes required 41
  • 40. Health Center for Ruby MRI: Method profiling 42
  • 41. How can we make CRuby faster? 43
  • 43. Making allocation fast Thread-local heaps: • Cache regions of the heap per-thread • Allocate without locking • Better locality 45
  • 47. How can we make it faster? 50
  • 48. Lets look at off heap memory! 51
  • 49. How do we replace malloc/free? • malloc/free callouts are expensive • Rely on system for memory management concerns • Still susceptible to fragmentation and concurrency • Black box implementation • Replace malloc and free with a new allocator 52
  • 51. New built-in type OMRBuffers • Create a new, variable sized object type • Allocate all buffers on the heap as objects typedef struct OMRBuffer { VALUE flags; long size; } OMRBuffer; 56 buffer
  • 52. 58 OMRBuffers on the heap! string arrayhash data … Managed Memory buffer buffer buffer buffer Malloc Memory
  • 53. 59 Shorter sweeping with OMRBuffers mark sweep GC Before GC After mark sweep
  • 54. Getting user defined types on heap • RDatas are used to create C-extension types. • Typed RDatas have a new flag: RDATA_HEAP_ALLOCATED • Automatically heap allocates the data buffer at allocation • No free method results in no object finalization • Allows for heap allocation in extensions • Extremely easy to use 60
  • 55. OMRBuffer wins Improvements: • Eliminated obj_free() • Fast allocations • Better cache locality Challenges: • Heap fragmentation • Conservative collection • Concurrency 61
  • 56. Multithreaded allocations • MRI does some work in backgrounded threads • Use OMRBuffers in background threads • Introduce finer grained locking than the GVL • Allows for: • multithreaded allocations • GCing from a background thread 62
  • 57. Is Ruby Fast Yet? 63 8% better throughput 122.57 112.84 0 20 40 60 80 100 120 140 2.2-omr 2.2.3
  • 59. Generational GC in MRI • Experimenting with non-copying generational GC • Marking is already fast • Heap fragmentations issues • High memory overhead 65
  • 60. Segregated heap in MRI • Introduced a segregated heap into ruby • Heap divided into regions of fixed sized objects • Bounds maximum heap fragmentation 66
  • 61. 67 Concurrent GC in MRI • Adding Concurrent GC to Ruby • Ruby threads incrementally mark • Background thread scans • Parallelized sweep (STW) sweepmark
  • 63. OMR GC in Ruby – what’s next • Ongoing experimentation • Balanced • Semispace copying generational collection • compaction • Real time garbage collection 71
  • 64. What’s next for OMR? • Open source OMR • Make our Ruby experiments available • We want to hear from the experts (you) • Lets make OMR and Ruby the best they can be 72
  • 65. Ruby+OMR Tech Preview Download @ goo.gl/P3yXuy • Releasing a preview so you can start test- driving • Send us feedback! 73
  • 66. 74
  • 69. John Duimovich CTO IBM Runtimes duimovic@ca.ibm.com @jduimovich Ask us Anything! Mark Stoodley OMR Project Lead mstoodle@ca.ibm.com @mstoodle Robert Young OMR Developer rwyoung@ca.ibm.com @rwy0717 77 Charlie Gracie OMR GC Architect crgracie@ca.ibm.com @crgracie Craig Lehmann OMR Developer craigl@ca.ibm.com @craiglehmann
  • 71. Who were those handsome guys again? Robert Young rwyoung@ca.ibm.com @rwy0717 Craig Lehmann craigl@ca.ibm.com @CraigLehmann 82
  • 72. Trademarks, Copyrights, Disclaimers 88 IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of other IBM trademarks is available on the web at "Copyright and trademark information" at http://www.ibm.com/legal/copytrade.shtml Other company, product, or service names may be trademarks or service marks of others. THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN ADDITION, THIS INFORMATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM WITHOUT NOTICE. IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, NOR SHALL HAVE THE EFFECT OF, CREATING ANY WARRANTIES OR REPRESENTATIONS FROM IBM (OR ITS SUPPLIERS OR LICENSORS), OR ALTERING THE TERMS AND CONDITIONS OF ANY AGREEMENT OR LICENSE GOVERNING THE USE OF IBM PRODUCTS OR SOFTWARE. © Copyright International Business Machines Corporation 2015. All rights reserved.
  • 73. Additional Important Disclaimers • THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. • WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. • ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. • ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. • IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. • IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. • NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: • - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 89