SlideShare a Scribd company logo
Experiments in utilizing OMR technologies in MRI
Charlie Gracie
January 31, 2016
Ruby and OMR
Who am I?
Charlie Gracie
charlie_gracie@ca.ibm.com
@crgracie
2
• Garbage Collection Architect
for IBM J9 JVM
• Current focus on developing
technologies for the OMR
project
An open source toolkit for
language runtime
technologies.
OMR
Open Source Toolkit for Building Runtimes
• Eclipse OMR project proposal
• https://goo.gl/ZTBoeu
• Will be open sourced under EPL
• Derived from the source code of IBM’s
production runtimes
4
Open Source Toolkit for Building Runtimes
• Implements language-agnostic parts of a
managed runtime
• Bootstraps development of new runtimes
5
Open Source Toolkit for Building Runtimes
• Allows incremental enablement of advanced
functionality
• Consume new features when available
• New platforms
• GPU
• FPGA
6
Open Source Toolkit for Building Runtimes
• Ships as part of IBM SDK for Java 8
• Development of IBM SDK for Java 9
consuming OMR daily
• Proof-of-concept integration with Ruby MRI,
CPython, SOM++
7
Execution Environment
Language-Agnostic Components
Platform Abstraction Layer
Garbage Collector
Diagnostic Services
Source Code Bytecode/AST
Compiler
8
Just-In-Time Compiler
InterpreterSource Bytecode
Compiler
Interpreter
Execution Environment
Language-Agnostic Components
Platform Abstraction Layer
Garbage Collector
Diagnostic Services
Source Code Bytecode/AST
Compiler
9
Just-In-Time Compiler
InterpreterSource Bytecode
Compiler
Interpreter
Gluing it Together
Interpreter
10
Bytecode
/AST
Compiler
Garbage
Collector
GC Glue
Just-In-Time
Compiler
JIT Glue
Diagnostic
Services
D.
Glue
Ruby + OMR Preview
Ruby + OMR Preview
12
• 2 Presentations at Ruby Kaigi 2015
• The OMR GC Talk
• http://goo.gl/mA4IUG
• IBM’s Ruby JIT Talk
• http://goo.gl/K5ZHY0
Ruby + OMR Preview
13
• GitHub location for the preview
• https://goo.gl/P3yXuy
• Available as Docker images
• Ruby git clone + OMR changes included
• /home/rubyomr/ruby
• No OMR or GLUE source
Ruby + OMR Preview
14
• Currently available on 3 platforms
• Linux on x86
• Linux on Z
• Linux on OpenPOWER
Ruby + OMR Preview
15
• Based on Ruby 2.2.3
• Working to merge with the master branch
• Successfully passes “make test”
• Runs rails apps
Ruby + OMR Preview
16
• Integrated OMR components include
• Garbage Collection
• Just In Time Compilation
• Diagnostic Tooling
Garbage Collection
Our
Strategy:
• Be 100% compatible
18
Our
Strategy:
• Be 100% compatible
• Decrease pause times
19
Our
Strategy:
• Be 100% compatible
• Decrease pause times
• Increase allocation speed
20
Our
Strategy:
• Be 100% compatible
• Decrease pause times
• Increase allocation speed
• Improve object locality
21
100% Compatible
22
• Do not break C extensions
• Pass all tests that ship with MRI
• Test 3rd party applications
Decrease Pause Times
23
• Use helper threads to:
• Mark roots in parallel
• Use OMR work stack to complete scanning
in parallel
• Perform object finalization in parallel
• Perform sweep operations in parallel
Increase Allocation Speed
24
• Use TLH mechanism from OMR
• Threads reserve blocks of heap memory
for exclusive allocation
• Threads bump allocate out of these blocks
alloc(rbthread_t thread, int size)
if (thread->tlhAlloc < thread->tlhTop - size)
object = thread->tlhAlloc
thread->tlhAlloc = object + size
else
object = OMR_GC_Allocate(thread, size);
Improve Object Locality
25
• Create new OMRBuffer object type
• Allocate OMRBuffers on heap
• Data is regularly adjacent to object in heap
• OMRBuffers are automatically reclaimed
during collection
Decrease Pause Times
26
• OMRBuffers do not require calls to obj_free
• Significant reduction in pause times
Future Work
27
• Improve heap fragmentation
• Add support for concurrent marking
Just In Time Compilation
Our
Strategy:
• Mimic interpreter
for maximum
compatibility.
• Implement
simple opcodes
directly in IL
29
IL
Our
Strategy:
• Build callbacks to
VM for complex
opcodes.
• Automatically
generate
callbacks from
the instruction
definition file.
30
IL
callback
Our
Strategy:
• Fast-path
particular
patterns
• e.g trace
31
IL
callback
IL
IL
callback
Our
Strategy:
• Don’t try to
handle
everything – let
interpreter
handle hard
cases!
32
IL
callback
IL
IL
callback
Current Status
• Supports almost all opcodes
• Compile iseq after they are executed N times
• Dispatch to JIT code if the iseq has been
compiled
Future Work
34
• Speculative optimizations powered by
decompilation and code-patching
• Class Hierarchy Based Optimization
• Guarded inlining
• Type Specialization
• Recompilation
• Interpreter and JIT Profiling
• Asynchronous Compilation
• More optimization!
• OMR’s Ruby JIT uses only 10 / 100+ optimizations.
Diagnostic Tooling
Garbage Collection and Memory Visualizer
36
• Provides a graphical details on GC events
post mortem from verbose:gc logs
• Works with IBM JDK, IBM Node.js and Ruby
OMR Preview
• https://goo.gl/YwNrmI
Garbage Collection and Memory Visualizer
37
Health Center
38
• Provides a live view of runtime details
• Works with IBM JDK, IBM Node.js and Ruby
OMR Preview
• http://goo.gl/u3VITI
Health Center – GC Statistics
39
Health Center – Ruby Method Profiling
40
Performance Results
42
112.84
122.57
0
20
40
60
80
100
120
140
Ruby 2.2.2 Ruby 2.2.2 + OMR
Is Ruby Fast Yet?
43
SpeedupRelativetoInterpreter
Micro Benchmarks
3x
2x
1x
27.8
16.6
5.3
0
5
10
15
20
25
30
Ruby 2.2.2 Ruby 2.2.2 + OMR Ruby 2.2.2 + OMR +JIT
pow(2,n)
Future?!?!
Future
• More feedback from the community
• Is this work interesting?
• We would like to get more involved with the
Ruby community now that this work is public.
• If there are parts of OMR that the Ruby
community believes would be beneficial we
would like to be part of the Ruby 3x3 plan
Possible Ideas For Improvements
• Work on removing the GIL
• Improved scaling
• But how much code would be broken?
• Improved C extension API
• Allow object movement?
• Improve JITs ability to apply optimizations
• Again how much code would be broken?
• Implement key class libraries in Ruby
• Significant JIT improvements
• How much would this hurt short running
applications?
Thank you!
John Duimovich
CTO IBM Runtimes
duimovic@ca.ibm.com
@jduimovich
Contact Info
Mark Stoodley
OMR Project Lead
mstoodle@ca.ibm.com
@mstoodle
49
Charlie Gracie
OMR GC Architect
crgracie@ca.ibm.com
@crgracie
Trademarks, Copyrights, Disclaimers
50
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
51
Ad

More Related Content

What's hot (20)

Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
Thomas Wuerthinger
 
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Rei Odaira
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
Koichi Sakata
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Thomas Wuerthinger
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
Vladimir Ivanov
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
Thomas Wuerthinger
 
PyPy
PyPyPyPy
PyPy
ESUG
 
a quick Introduction to PyPy
a quick Introduction to PyPya quick Introduction to PyPy
a quick Introduction to PyPy
Kai Aras
 
An Introduction to PyPy
An Introduction to PyPyAn Introduction to PyPy
An Introduction to PyPy
Michael Hudson-Doyle
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
Vladimir Ivanov
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
ZeroTurnaround
 
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
 
Micro-Benchmarking Considered Harmful
Micro-Benchmarking Considered HarmfulMicro-Benchmarking Considered Harmful
Micro-Benchmarking Considered Harmful
Thomas Wuerthinger
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
Charlie Gracie
 
IL2CPP: Debugging and Profiling
IL2CPP: Debugging and ProfilingIL2CPP: Debugging and Profiling
IL2CPP: Debugging and Profiling
joncham
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
Chun-Yu Wang
 
How the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java CodeHow the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java Code
Jim Gough
 
Jax keynote
Jax keynoteJax keynote
Jax keynote
Marcus Lagergren
 
Scala & Spark(1.6) in Performance Aspect for Scala Taiwan
Scala & Spark(1.6) in Performance Aspect for Scala TaiwanScala & Spark(1.6) in Performance Aspect for Scala Taiwan
Scala & Spark(1.6) in Performance Aspect for Scala Taiwan
Jimin Hsieh
 
Cross platform computer vision optimization
Cross platform computer vision optimizationCross platform computer vision optimization
Cross platform computer vision optimization
Yoss Cohen
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
Thomas Wuerthinger
 
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Eliminating Giant VM Lock in Ruby through Hardware Transactional Memory (Ruby...
Rei Odaira
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
Koichi Sakata
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Thomas Wuerthinger
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
Vladimir Ivanov
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
Thomas Wuerthinger
 
PyPy
PyPyPyPy
PyPy
ESUG
 
a quick Introduction to PyPy
a quick Introduction to PyPya quick Introduction to PyPy
a quick Introduction to PyPy
Kai Aras
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
Vladimir Ivanov
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
ZeroTurnaround
 
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
 
Micro-Benchmarking Considered Harmful
Micro-Benchmarking Considered HarmfulMicro-Benchmarking Considered Harmful
Micro-Benchmarking Considered Harmful
Thomas Wuerthinger
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
Charlie Gracie
 
IL2CPP: Debugging and Profiling
IL2CPP: Debugging and ProfilingIL2CPP: Debugging and Profiling
IL2CPP: Debugging and Profiling
joncham
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
Chun-Yu Wang
 
How the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java CodeHow the HotSpot and Graal JVMs execute Java Code
How the HotSpot and Graal JVMs execute Java Code
Jim Gough
 
Scala & Spark(1.6) in Performance Aspect for Scala Taiwan
Scala & Spark(1.6) in Performance Aspect for Scala TaiwanScala & Spark(1.6) in Performance Aspect for Scala Taiwan
Scala & Spark(1.6) in Performance Aspect for Scala Taiwan
Jimin Hsieh
 
Cross platform computer vision optimization
Cross platform computer vision optimizationCross platform computer vision optimization
Cross platform computer vision optimization
Yoss Cohen
 

Similar to FOSDEM2016 - Ruby and OMR (20)

The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015
craig lehmann
 
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
Charlie Gracie
 
Java one2016
Java one2016Java one2016
Java one2016
Toby Corbin
 
SHARE2016: DevOps - IIB Administration for Continuous Delivery and DevOps
SHARE2016:  DevOps - IIB Administration for Continuous Delivery and DevOpsSHARE2016:  DevOps - IIB Administration for Continuous Delivery and DevOps
SHARE2016: DevOps - IIB Administration for Continuous Delivery and DevOps
Rob Convery
 
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
Reedy Feggins Jr
 
Become an IBM Cloud Architect in 40 Minutes
Become an IBM Cloud Architect in 40 MinutesBecome an IBM Cloud Architect in 40 Minutes
Become an IBM Cloud Architect in 40 Minutes
Andrew Ferrier
 
Best practices for cloud hosted api management
Best practices for cloud hosted api managementBest practices for cloud hosted api management
Best practices for cloud hosted api management
sflynn073
 
Creating your own cloud hosted APIM platform
Creating your own cloud hosted APIM platformCreating your own cloud hosted APIM platform
Creating your own cloud hosted APIM platform
sflynn073
 
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
DataWorks Summit
 
Dev ops for z
Dev ops for z Dev ops for z
Dev ops for z
bamadhu
 
IBM Z for the Digital Enterprise - DevOps for Z
IBM Z for the Digital Enterprise - DevOps for Z IBM Z for the Digital Enterprise - DevOps for Z
IBM Z for the Digital Enterprise - DevOps for Z
DevOps for Enterprise Systems
 
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
Karen Broughton-Mabbitt
 
2829 liberty
2829 liberty2829 liberty
2829 liberty
nick_garrod
 
2449 rapid prototyping of innovative io t solutions
2449   rapid prototyping of innovative io t solutions2449   rapid prototyping of innovative io t solutions
2449 rapid prototyping of innovative io t solutions
Eric Cattoir
 
Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!
Arthur De Magalhaes
 
Concierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesConcierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded Devices
Jan S. Rellermeyer
 
Docking DevOps 2015-03-01
Docking DevOps 2015-03-01Docking DevOps 2015-03-01
Docking DevOps 2015-03-01
Robbie Minshall
 
Docking DevOps 2015-03-01
Docking DevOps 2015-03-01Docking DevOps 2015-03-01
Docking DevOps 2015-03-01
Robbie Minshall
 
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Arthur De Magalhaes
 
Cascon intro
Cascon introCascon intro
Cascon intro
Michael Dawson
 
The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015
craig lehmann
 
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
Charlie Gracie
 
SHARE2016: DevOps - IIB Administration for Continuous Delivery and DevOps
SHARE2016:  DevOps - IIB Administration for Continuous Delivery and DevOpsSHARE2016:  DevOps - IIB Administration for Continuous Delivery and DevOps
SHARE2016: DevOps - IIB Administration for Continuous Delivery and DevOps
Rob Convery
 
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
#IBMInterConnect - DCB-3094 Scaling Agile - Launching an Agile Release Train ...
Reedy Feggins Jr
 
Become an IBM Cloud Architect in 40 Minutes
Become an IBM Cloud Architect in 40 MinutesBecome an IBM Cloud Architect in 40 Minutes
Become an IBM Cloud Architect in 40 Minutes
Andrew Ferrier
 
Best practices for cloud hosted api management
Best practices for cloud hosted api managementBest practices for cloud hosted api management
Best practices for cloud hosted api management
sflynn073
 
Creating your own cloud hosted APIM platform
Creating your own cloud hosted APIM platformCreating your own cloud hosted APIM platform
Creating your own cloud hosted APIM platform
sflynn073
 
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
DataWorks Summit
 
Dev ops for z
Dev ops for z Dev ops for z
Dev ops for z
bamadhu
 
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
HIA 1015 Speed the Development of Robust Integrations with IBM Integration Bu...
Karen Broughton-Mabbitt
 
2449 rapid prototyping of innovative io t solutions
2449   rapid prototyping of innovative io t solutions2449   rapid prototyping of innovative io t solutions
2449 rapid prototyping of innovative io t solutions
Eric Cattoir
 
Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!
Arthur De Magalhaes
 
Concierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesConcierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded Devices
Jan S. Rellermeyer
 
Docking DevOps 2015-03-01
Docking DevOps 2015-03-01Docking DevOps 2015-03-01
Docking DevOps 2015-03-01
Robbie Minshall
 
Docking DevOps 2015-03-01
Docking DevOps 2015-03-01Docking DevOps 2015-03-01
Docking DevOps 2015-03-01
Robbie Minshall
 
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Design, Auto-Generate and Expose RESTful Microservices Using Open Source and ...
Arthur De Magalhaes
 
Ad

Recently uploaded (20)

Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Ad

FOSDEM2016 - Ruby and OMR

  • 1. Experiments in utilizing OMR technologies in MRI Charlie Gracie January 31, 2016 Ruby and OMR
  • 2. Who am I? Charlie Gracie [email protected] @crgracie 2 • Garbage Collection Architect for IBM J9 JVM • Current focus on developing technologies for the OMR project
  • 3. An open source toolkit for language runtime technologies. OMR
  • 4. Open Source Toolkit for Building Runtimes • Eclipse OMR project proposal • https://goo.gl/ZTBoeu • Will be open sourced under EPL • Derived from the source code of IBM’s production runtimes 4
  • 5. Open Source Toolkit for Building Runtimes • Implements language-agnostic parts of a managed runtime • Bootstraps development of new runtimes 5
  • 6. Open Source Toolkit for Building Runtimes • Allows incremental enablement of advanced functionality • Consume new features when available • New platforms • GPU • FPGA 6
  • 7. Open Source Toolkit for Building Runtimes • Ships as part of IBM SDK for Java 8 • Development of IBM SDK for Java 9 consuming OMR daily • Proof-of-concept integration with Ruby MRI, CPython, SOM++ 7
  • 8. Execution Environment Language-Agnostic Components Platform Abstraction Layer Garbage Collector Diagnostic Services Source Code Bytecode/AST Compiler 8 Just-In-Time Compiler InterpreterSource Bytecode Compiler Interpreter
  • 9. Execution Environment Language-Agnostic Components Platform Abstraction Layer Garbage Collector Diagnostic Services Source Code Bytecode/AST Compiler 9 Just-In-Time Compiler InterpreterSource Bytecode Compiler Interpreter
  • 10. Gluing it Together Interpreter 10 Bytecode /AST Compiler Garbage Collector GC Glue Just-In-Time Compiler JIT Glue Diagnostic Services D. Glue
  • 11. Ruby + OMR Preview
  • 12. Ruby + OMR Preview 12 • 2 Presentations at Ruby Kaigi 2015 • The OMR GC Talk • http://goo.gl/mA4IUG • IBM’s Ruby JIT Talk • http://goo.gl/K5ZHY0
  • 13. Ruby + OMR Preview 13 • GitHub location for the preview • https://goo.gl/P3yXuy • Available as Docker images • Ruby git clone + OMR changes included • /home/rubyomr/ruby • No OMR or GLUE source
  • 14. Ruby + OMR Preview 14 • Currently available on 3 platforms • Linux on x86 • Linux on Z • Linux on OpenPOWER
  • 15. Ruby + OMR Preview 15 • Based on Ruby 2.2.3 • Working to merge with the master branch • Successfully passes “make test” • Runs rails apps
  • 16. Ruby + OMR Preview 16 • Integrated OMR components include • Garbage Collection • Just In Time Compilation • Diagnostic Tooling
  • 18. Our Strategy: • Be 100% compatible 18
  • 19. Our Strategy: • Be 100% compatible • Decrease pause times 19
  • 20. Our Strategy: • Be 100% compatible • Decrease pause times • Increase allocation speed 20
  • 21. Our Strategy: • Be 100% compatible • Decrease pause times • Increase allocation speed • Improve object locality 21
  • 22. 100% Compatible 22 • Do not break C extensions • Pass all tests that ship with MRI • Test 3rd party applications
  • 23. Decrease Pause Times 23 • Use helper threads to: • Mark roots in parallel • Use OMR work stack to complete scanning in parallel • Perform object finalization in parallel • Perform sweep operations in parallel
  • 24. Increase Allocation Speed 24 • Use TLH mechanism from OMR • Threads reserve blocks of heap memory for exclusive allocation • Threads bump allocate out of these blocks alloc(rbthread_t thread, int size) if (thread->tlhAlloc < thread->tlhTop - size) object = thread->tlhAlloc thread->tlhAlloc = object + size else object = OMR_GC_Allocate(thread, size);
  • 25. Improve Object Locality 25 • Create new OMRBuffer object type • Allocate OMRBuffers on heap • Data is regularly adjacent to object in heap • OMRBuffers are automatically reclaimed during collection
  • 26. Decrease Pause Times 26 • OMRBuffers do not require calls to obj_free • Significant reduction in pause times
  • 27. Future Work 27 • Improve heap fragmentation • Add support for concurrent marking
  • 28. Just In Time Compilation
  • 29. Our Strategy: • Mimic interpreter for maximum compatibility. • Implement simple opcodes directly in IL 29 IL
  • 30. Our Strategy: • Build callbacks to VM for complex opcodes. • Automatically generate callbacks from the instruction definition file. 30 IL callback
  • 31. Our Strategy: • Fast-path particular patterns • e.g trace 31 IL callback IL IL callback
  • 32. Our Strategy: • Don’t try to handle everything – let interpreter handle hard cases! 32 IL callback IL IL callback
  • 33. Current Status • Supports almost all opcodes • Compile iseq after they are executed N times • Dispatch to JIT code if the iseq has been compiled
  • 34. Future Work 34 • Speculative optimizations powered by decompilation and code-patching • Class Hierarchy Based Optimization • Guarded inlining • Type Specialization • Recompilation • Interpreter and JIT Profiling • Asynchronous Compilation • More optimization! • OMR’s Ruby JIT uses only 10 / 100+ optimizations.
  • 36. Garbage Collection and Memory Visualizer 36 • Provides a graphical details on GC events post mortem from verbose:gc logs • Works with IBM JDK, IBM Node.js and Ruby OMR Preview • https://goo.gl/YwNrmI
  • 37. Garbage Collection and Memory Visualizer 37
  • 38. Health Center 38 • Provides a live view of runtime details • Works with IBM JDK, IBM Node.js and Ruby OMR Preview • http://goo.gl/u3VITI
  • 39. Health Center – GC Statistics 39
  • 40. Health Center – Ruby Method Profiling 40
  • 44. 27.8 16.6 5.3 0 5 10 15 20 25 30 Ruby 2.2.2 Ruby 2.2.2 + OMR Ruby 2.2.2 + OMR +JIT pow(2,n)
  • 46. Future • More feedback from the community • Is this work interesting? • We would like to get more involved with the Ruby community now that this work is public. • If there are parts of OMR that the Ruby community believes would be beneficial we would like to be part of the Ruby 3x3 plan
  • 47. Possible Ideas For Improvements • Work on removing the GIL • Improved scaling • But how much code would be broken? • Improved C extension API • Allow object movement? • Improve JITs ability to apply optimizations • Again how much code would be broken? • Implement key class libraries in Ruby • Significant JIT improvements • How much would this hurt short running applications?
  • 49. John Duimovich CTO IBM Runtimes [email protected] @jduimovich Contact Info Mark Stoodley OMR Project Lead [email protected] @mstoodle 49 Charlie Gracie OMR GC Architect [email protected] @crgracie
  • 50. Trademarks, Copyrights, Disclaimers 50 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.
  • 51. 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 51