SlideShare a Scribd company logo
1 of 32
Download to read offline
galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Keeping Infinispan In Shape:
                                    Highly-Precise, Scalable
                                                 Data Eviction

                            Galder Zamarreño & Vladimir Blagojevic
                            Senior Engineer, Red Hat
                            7th October 2010, JUDCon - Berlin


                                                          galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Who is Galder?

                            • R&D engineer (Red Hat Inc):
                              • Infinispan developer
                              • JBoss Cache developer
                            • Contributor and committer:
                              • JBoss AS, Hibernate, JGroups, JBoss Portal,...etc
                            • Blog: zamarreno.com
                            • Twitter: @galderz



                                                          galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Agenda

                            • Eviction in:
                              • Java Collections Framework
                              • JBoss Cache
                              • Infinispan 4.0
                            • New in Infinispan 4.1:
                              • LIRS
                              • Batching Updates



                                                         galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Java Collections Framework


                            • Key building block of any Java app
                            • Introduced in Java 1.2
                            • Extended with concurrent collections in Java 1.5
                            • Collection element eviction ??




                                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Collections cannot grow forever




                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
If using a collection as cache


                            • Forces clients to either:
                             • Remove elements proactively
                             • Or run a periodic cleanup process
                            • Which can be a PITA...




                                                          galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Eviction in JBoss Cache days




                                          galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
JBoss Cache eviction issues


                            • Under heavy load, eviction queues could fill up - bottleneck
                             • Possibly a side effect of MVCC’s non-blocking reads
                            • Separating data into regions could alleviate the issue
                             • But it’s really a hack!




                                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Original Infinispan 4.0 eviction

                            • Tried a different approach:
                            • Avoid using queues to hold events
                            • Taking advantage of tree to map change:
                             • Attempt to maintain map ordered as per eviction rules
                             • Could we use ConcurrentSkipListMap ?
                               • No. O(1) desired for all map operations


                                                            galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Doubly Linked
                                          ConcurrentHashMap

                            •   Based on H.Sundell and P.Tsigas paper:

                                •   Lock-Free Deques and Doubly Linked Lists (2008)

                            •   With each cache access or update update links

                            •   Eviction just a matter of walking the linked list one way




                                                                 galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Issues under heavy load


                            • Algorithm always uses same node (the tail) to append stuff
                            • With high concurrency, CAS stress lead to loads of retrying
                            • So much retrying, we’re getting infinite loops
                            • Before 4.0.0.Final, reverted to a more conservative algorithm




                                                            galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
4.0.0.Final eviction




                                      galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
LRU eviction algorithm issues

                            • Weak access locality
                             • One-time accessed keys not evicted timely
                             • In loops, soon to be accessed keys might get evicted first
                             • With distinct access frequencies, frequently accessed keys
                               can unfortunately get evicted
                            • LRU’s working set limited to cache size



                                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Enter the room... LIRS

                            • Eviction algorithm that can cope with weak access locality
                            • Based on S.Jiang and X.Zhang’s 2002 paper:
                             • LIRS: An efficient low inter-reference recency set
                               replacement policy to improve buffer cache performance
                            • LIRS based around two concepts: IRR and Recency




                                                         galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
IRR and Recency
                            • Inter-Reference Recency (IRR):
                             • Number of other unique keys accessed between two
                               consecutive accesses to same key
                            • Recency (R)
                             • Number of other unique keys accessed from last reference
                               until now




                                                         galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
How does LIRS work?


                            • If key has a high IRR, it’s next IRR is likely to be high again
                             • Keys with highest IRR are considered for eviction
                            • Once IRR is out of date, we start relying on Recency
                            • LIRS = Low Inter-reference Recency Set




                                                             galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
How is LIRS implemented?

                            • Low IRR (LIR) area
                             • Holds hot keys!
                            • High IRR (HIR) area
                             • Holds recently accessed keys
                             • Keys here might get promoted to LIR area



                                                         galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Cache Hit - LIR area




                                      galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Cache Hit - LIR area




                                      galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Hit - HIR area and in LIR Q ...




                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Hit - HIR area and in LIR Q




                                         galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Hit - HIR area and not in LIR Q




                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Cache Miss




                                 galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Cache Miss




                                 galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Cache Miss




                                 galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
LIRS implementation hurdles

                            • LIRS requires a lot of key shifting around
                             • It can lead to high contention
                            • Unless you can implement it in scalable way, it’s useless
                            • Low contended way to implement a high precision eviction
                              algorithm? Is it possible?




                                                            galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Batching Eviction Updates
                            • Original idea: X.Ding, S.Jiang and X.Zhang’s 2009 paper:
                             • BP-Wrapper: A System Framework Making Any
                               Replacement Algorithms (Almost) Lock Contention Free
                            • Keeping cache access per thread in a queue
                            • If queue reaches a threshold:
                             • Acquire locks and execute eviction as per algorithm
                            • Batching updates significantly lowers lock contention


                                                              galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Batching Updates in Infinispan

                            • Decided against recording access per thread
                             • 100s threads could be hitting cache; some short lived
                            • Created BoundedConcurrentHashMap
                             • Based on Doug Lea's ConcurrentHashMap
                             • Records accesses in a lock-free queue in each segment
                            • When threshold passed, acquire lock for segment and evict


                                                          galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Precision and Performance

                            • Segment level eviction does not affect overall precision
                            • Community member run some performance tests:
                             • After swapping their own LRU cache with BoundedCHM:
                               • Berlin SPARQL Benchmark performance increased
                                 55-60% for both cold and hot caches




                                                           galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Summary

                            • In JBoss Cache, eviction can become a bottleneck
                            • Infinispan 4.0 uses conservative eviction
                            • Infinispan 4.1 has more precise eviction algorithm (LIRS)
                            • Batching updates, present in 4.1, significantly lowers lock
                              contention
                            • Result = Highly-concurrent, highly-precise implicit eviction



                                                            galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010
Questions?

                            infinispan.org
                            blog.infinispan.org
                            twitter.com/infinispan
                               #infinispan
                               #judcon

                                                     galder@jboss.org | twitter.com/galderz | zamarreno.com
Thursday, October 7, 2010

More Related Content

Viewers also liked

Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Manik Surtani
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLManik Surtani
 
Hacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLHacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLCodemotion
 
Apache Geode - The First Six Months
Apache Geode -  The First Six MonthsApache Geode -  The First Six Months
Apache Geode - The First Six MonthsAnthony Baker
 
Infinispan from POC to Production
Infinispan from POC to ProductionInfinispan from POC to Production
Infinispan from POC to ProductionC2B2 Consulting
 
Redis adaptor for Apache Geode
Redis adaptor for Apache GeodeRedis adaptor for Apache Geode
Redis adaptor for Apache GeodeSwapnil Bawaskar
 
Apache geode
Apache geodeApache geode
Apache geodeYogesh BG
 
Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Anthony Baker
 
Apache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationApache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationPivotalOpenSourceHub
 
인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처Jaehong Cheon
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridJBug Italy
 
Building Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodeBuilding Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodePivotalOpenSourceHub
 
An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)Anthony Baker
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Kris Jeong
 
Apache ignite Datagrid
Apache ignite DatagridApache ignite Datagrid
Apache ignite DatagridSurinder Mehra
 
Pivotal 전략 업데이트 2015 Feb
Pivotal 전략 업데이트 2015 FebPivotal 전략 업데이트 2015 Feb
Pivotal 전략 업데이트 2015 Febseungdon Choi
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache GeodeTomohiro Ichimura
 
Hazelcast 소개
Hazelcast 소개Hazelcast 소개
Hazelcast 소개sangyun han
 
오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. InfinispanHyeonSeok Choi
 

Viewers also liked (20)

Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQL
 
Hacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLHacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQL
 
Apache Geode - The First Six Months
Apache Geode -  The First Six MonthsApache Geode -  The First Six Months
Apache Geode - The First Six Months
 
Infinispan from POC to Production
Infinispan from POC to ProductionInfinispan from POC to Production
Infinispan from POC to Production
 
Redis adaptor for Apache Geode
Redis adaptor for Apache GeodeRedis adaptor for Apache Geode
Redis adaptor for Apache Geode
 
Apache geode
Apache geodeApache geode
Apache geode
 
Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)
 
Apache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationApache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based Replication
 
인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data Grid
 
Building Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodeBuilding Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache Geode
 
Data Grids and Data Caching
Data Grids and Data CachingData Grids and Data Caching
Data Grids and Data Caching
 
An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015
 
Apache ignite Datagrid
Apache ignite DatagridApache ignite Datagrid
Apache ignite Datagrid
 
Pivotal 전략 업데이트 2015 Feb
Pivotal 전략 업데이트 2015 FebPivotal 전략 업데이트 2015 Feb
Pivotal 전략 업데이트 2015 Feb
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache Geode
 
Hazelcast 소개
Hazelcast 소개Hazelcast 소개
Hazelcast 소개
 
오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan
 

Recently uploaded

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 

Recently uploaded (20)

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 

Keeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction

  • 1. galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 2. Keeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction Galder Zamarreño & Vladimir Blagojevic Senior Engineer, Red Hat 7th October 2010, JUDCon - Berlin galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 3. Who is Galder? • R&D engineer (Red Hat Inc): • Infinispan developer • JBoss Cache developer • Contributor and committer: • JBoss AS, Hibernate, JGroups, JBoss Portal,...etc • Blog: zamarreno.com • Twitter: @galderz galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 4. Agenda • Eviction in: • Java Collections Framework • JBoss Cache • Infinispan 4.0 • New in Infinispan 4.1: • LIRS • Batching Updates galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 5. Java Collections Framework • Key building block of any Java app • Introduced in Java 1.2 • Extended with concurrent collections in Java 1.5 • Collection element eviction ?? galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 6. Collections cannot grow forever galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 7. If using a collection as cache • Forces clients to either: • Remove elements proactively • Or run a periodic cleanup process • Which can be a PITA... galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 8. Eviction in JBoss Cache days galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 9. JBoss Cache eviction issues • Under heavy load, eviction queues could fill up - bottleneck • Possibly a side effect of MVCC’s non-blocking reads • Separating data into regions could alleviate the issue • But it’s really a hack! galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 10. Original Infinispan 4.0 eviction • Tried a different approach: • Avoid using queues to hold events • Taking advantage of tree to map change: • Attempt to maintain map ordered as per eviction rules • Could we use ConcurrentSkipListMap ? • No. O(1) desired for all map operations galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 11. Doubly Linked ConcurrentHashMap • Based on H.Sundell and P.Tsigas paper: • Lock-Free Deques and Doubly Linked Lists (2008) • With each cache access or update update links • Eviction just a matter of walking the linked list one way galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 12. Issues under heavy load • Algorithm always uses same node (the tail) to append stuff • With high concurrency, CAS stress lead to loads of retrying • So much retrying, we’re getting infinite loops • Before 4.0.0.Final, reverted to a more conservative algorithm galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 13. 4.0.0.Final eviction galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 14. LRU eviction algorithm issues • Weak access locality • One-time accessed keys not evicted timely • In loops, soon to be accessed keys might get evicted first • With distinct access frequencies, frequently accessed keys can unfortunately get evicted • LRU’s working set limited to cache size galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 15. Enter the room... LIRS • Eviction algorithm that can cope with weak access locality • Based on S.Jiang and X.Zhang’s 2002 paper: • LIRS: An efficient low inter-reference recency set replacement policy to improve buffer cache performance • LIRS based around two concepts: IRR and Recency galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 16. IRR and Recency • Inter-Reference Recency (IRR): • Number of other unique keys accessed between two consecutive accesses to same key • Recency (R) • Number of other unique keys accessed from last reference until now galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 17. How does LIRS work? • If key has a high IRR, it’s next IRR is likely to be high again • Keys with highest IRR are considered for eviction • Once IRR is out of date, we start relying on Recency • LIRS = Low Inter-reference Recency Set galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 18. How is LIRS implemented? • Low IRR (LIR) area • Holds hot keys! • High IRR (HIR) area • Holds recently accessed keys • Keys here might get promoted to LIR area galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 19. Cache Hit - LIR area galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 20. Cache Hit - LIR area galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 21. Hit - HIR area and in LIR Q ... galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 22. Hit - HIR area and in LIR Q galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 23. Hit - HIR area and not in LIR Q galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 24. Cache Miss galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 25. Cache Miss galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 26. Cache Miss galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 27. LIRS implementation hurdles • LIRS requires a lot of key shifting around • It can lead to high contention • Unless you can implement it in scalable way, it’s useless • Low contended way to implement a high precision eviction algorithm? Is it possible? galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 28. Batching Eviction Updates • Original idea: X.Ding, S.Jiang and X.Zhang’s 2009 paper: • BP-Wrapper: A System Framework Making Any Replacement Algorithms (Almost) Lock Contention Free • Keeping cache access per thread in a queue • If queue reaches a threshold: • Acquire locks and execute eviction as per algorithm • Batching updates significantly lowers lock contention galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 29. Batching Updates in Infinispan • Decided against recording access per thread • 100s threads could be hitting cache; some short lived • Created BoundedConcurrentHashMap • Based on Doug Lea's ConcurrentHashMap • Records accesses in a lock-free queue in each segment • When threshold passed, acquire lock for segment and evict galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 30. Precision and Performance • Segment level eviction does not affect overall precision • Community member run some performance tests: • After swapping their own LRU cache with BoundedCHM: • Berlin SPARQL Benchmark performance increased 55-60% for both cold and hot caches galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 31. Summary • In JBoss Cache, eviction can become a bottleneck • Infinispan 4.0 uses conservative eviction • Infinispan 4.1 has more precise eviction algorithm (LIRS) • Batching updates, present in 4.1, significantly lowers lock contention • Result = Highly-concurrent, highly-precise implicit eviction galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010
  • 32. Questions? infinispan.org blog.infinispan.org twitter.com/infinispan #infinispan #judcon galder@jboss.org | twitter.com/galderz | zamarreno.com Thursday, October 7, 2010