SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Réduire la pression sur
      l'allocation mémoire
Le prochain pas dans l'optimisation des performances
                      de la JVM


        by Olivier Lamy et Benoit Perroud




                                                       1
Abstract
• Cache Hors Tas (off-heap)
  – Rappel sur la mémoire Java
  – Différences de Cache (on-heap vs. off-
    heap)
• Apache Direct Memory
  – Principes et Architecture
  – Cas d'utilisation de la vie réelle
  – Prochaines étapes
• Questions
                                             2
Speakers
• Olivier Lamy, Architecte@Talend, Apache
  Member & Direct Memory Committer
  – @olamy
• Benoit Perroud, Software
  Engineer@Verisign & Apache Direct
  Memory Committer
  – @killerwhile



                                            3
Avant de commencer

• Désolés d'avance pour le fran-glais que
  nous allons parler




                                            4
Apache Direct Memory
Apache Direct Memory is a multi layered cache
 implementation featuring off-heap memory storage
 to enable caching of java objects without degrading
 jvm performance.

Le but recherché par le projet est de
 décharger la JVM de la mémoire
 consommée par les objets mis en cache
 afin de réduire le temps d'exécution du GC.



                                                       5
Apache Direct Memory
• Projet dans l'incubateur de l'Apache
  Software Foundation
• Arrivé dans l'incubateur en automne 2011
• 12 développeurs, 10+ contributeurs
• En développement actif
  – Sujet à changement et à bugs



                                             6
La Mémoire Java

• Allocation automatique de la mémoire




                                         7
La Mémoire Java (2)
• Ramasse-miette (GC)
  – Le GC gèle complètement l'exécution
    du processus pour s'exécuter
  – Rend l'exécution du programme non
    déterministe




                                          8
Cache Mémoire
• Cache dans la mémoire Java (on-heap)
  – Pas de pénalité d'utilisation
  – Mais occupe de la mémoire Java la
    rendant indisponible au
    fonctionnement de l'application


                     TODO : Image avec RAM




                                             9
Cache Mémoire (2)
• Cache hors de la mémoire Java (off-heap)
  – Pénalité de sérialisation
      • Protobuf, Avro, Thrift, MsgPack, ...
  – Réduit la taille de la mémoire gérée
    par la JVM




                                               10
Design et Architecture
• ByteBuffer.allocateDirect
• ByteBuffers sont alloués en masse, et
  découpés à la demande
• Développé en couche
  – Pour une meilleure séparation des
    responsabilités




                                          11
Stratégies d'Allocation
• Fusion de ByteBuffers
  – Pas de perte de mémoire, mais
    fragmentation
  – A utiliser si ratio lecture / écriture haut
• Taille fixe des ByteBuffers
  – Perte de mémoire, mais pas de
    fragmentation (*)
  – A utiliser si objets de taille similaire

                                                  12
Cache Multi-Niveaux
• Idée : une très petite portion d'objets en
  cache en mémoire Java (on-heap), le
  reste hors de la mémoire Java (off-heap)
   – Mmmh, ça ressemble à Terracotta
     BigMemory tout ça
   – Apache Direct Memory peut être
     injecté dans Ehcache. Ouuups ;)



                                               13
Server de Cache
> PUT /dm/cache/bordeaux HTTP/1.1
> Content-Type:text/plain
{"millesime":"bordeaux","description":"so good so good"}
< HTTP/1.1 200 OK
< X-DirectMemory-SerializeSize: 58
< Content-Length: 0

> GET /dm/cache/bordeaux HTTP/1.1
> Accept:text/plain
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Content-Length: 51
{"millesime":"2003","description":"so good so good"}
> DELETE /dm/cache/foo HTTP/1.1




                                                           14
Prochaines étapes
• JSR 107
• Benchmarks
• Intégrations dans des composants
  (Cassandra, Lucene, Tomcat, ...)
• Modification dynamique de la taille du
  cache
• Fonctionnalités de Monitoring et
  Management
• ...
• https://issues.apache.org/jira/browse/DIRECTMEMORY


                                                       15
Questions ?


Merci pour votre attention !




                               16

Weitere ähnliche Inhalte

Was ist angesagt?

Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesPascal Armand
 
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderne
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderneNouveautés Veeam 2014 - Protection avancée pour le Datacenter moderne
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderneSCALA
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMehdi Mehni
 
Optimisation LAMP
Optimisation LAMPOptimisation LAMP
Optimisation LAMPcyruss666
 
Memcached: Comprendre pour mieux utiliser
Memcached: Comprendre pour mieux utiliserMemcached: Comprendre pour mieux utiliser
Memcached: Comprendre pour mieux utiliserNimeOps
 
Amélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineAmélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineaYaline
 
Veeam - Les meilleurs outils de gestion d'infrastructure VMware
Veeam - Les meilleurs outils de gestion d'infrastructure VMwareVeeam - Les meilleurs outils de gestion d'infrastructure VMware
Veeam - Les meilleurs outils de gestion d'infrastructure VMwareArnaud_Quenum
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Guss webcasts Tempdb Internals - june 2013
Guss webcasts   Tempdb Internals - june 2013Guss webcasts   Tempdb Internals - june 2013
Guss webcasts Tempdb Internals - june 2013David BAFFALEUF
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Jonathan Le Guellec
 

Was ist angesagt? (20)

Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performances
 
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderne
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderneNouveautés Veeam 2014 - Protection avancée pour le Datacenter moderne
Nouveautés Veeam 2014 - Protection avancée pour le Datacenter moderne
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellence
 
Optimisation LAMP
Optimisation LAMPOptimisation LAMP
Optimisation LAMP
 
Sysadmin Day #5
Sysadmin Day #5Sysadmin Day #5
Sysadmin Day #5
 
Memcached: Comprendre pour mieux utiliser
Memcached: Comprendre pour mieux utiliserMemcached: Comprendre pour mieux utiliser
Memcached: Comprendre pour mieux utiliser
 
Veeam presentation v7
Veeam   presentation v7Veeam   presentation v7
Veeam presentation v7
 
Amélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineAmélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYaline
 
#9 Deploiement Complexe
#9 Deploiement Complexe#9 Deploiement Complexe
#9 Deploiement Complexe
 
Veeam - Les meilleurs outils de gestion d'infrastructure VMware
Veeam - Les meilleurs outils de gestion d'infrastructure VMwareVeeam - Les meilleurs outils de gestion d'infrastructure VMware
Veeam - Les meilleurs outils de gestion d'infrastructure VMware
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Php dans le cloud
Php dans le cloudPhp dans le cloud
Php dans le cloud
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Guss webcasts Tempdb Internals - june 2013
Guss webcasts   Tempdb Internals - june 2013Guss webcasts   Tempdb Internals - june 2013
Guss webcasts Tempdb Internals - june 2013
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Le flash, est-ce pour moi ?
Le flash, est-ce pour moi ? Le flash, est-ce pour moi ?
Le flash, est-ce pour moi ?
 
OpenMQ François Ostyn
OpenMQ François OstynOpenMQ François Ostyn
OpenMQ François Ostyn
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)
 

Andere mochten auch

Kaufpfade von eShoppern
Kaufpfade von eShoppernKaufpfade von eShoppern
Kaufpfade von eShoppernStefan Wolk
 
Web 2.0 en bibliothèque - éléments de réflexion
Web 2.0 en bibliothèque - éléments de réflexionWeb 2.0 en bibliothèque - éléments de réflexion
Web 2.0 en bibliothèque - éléments de réflexionSylvain Machefert
 
Analyse f commerce de la boutique bulgari
Analyse f commerce de la boutique bulgariAnalyse f commerce de la boutique bulgari
Analyse f commerce de la boutique bulgariBianchijess
 
Ost 1 41550 74
Ost 1 41550 74Ost 1 41550 74
Ost 1 41550 74usign787
 
Enquete entreprises Pole Numerique - octobre 2012
Enquete entreprises Pole Numerique - octobre 2012Enquete entreprises Pole Numerique - octobre 2012
Enquete entreprises Pole Numerique - octobre 2012Le Moulin Digital
 
Nach den Sternen greifen... mit Meteor
Nach den Sternen greifen... mit MeteorNach den Sternen greifen... mit Meteor
Nach den Sternen greifen... mit MeteorPhilipp Müns
 
Pas pour les_enfants
Pas pour les_enfantsPas pour les_enfants
Pas pour les_enfantsAlbert Antebi
 
FidLy 2013 pour un renouveau du marketing client
FidLy 2013   pour un renouveau du marketing clientFidLy 2013   pour un renouveau du marketing client
FidLy 2013 pour un renouveau du marketing clientJean-Pierre Conduché
 
8251 Zweifel an göttlichen Offenbarungen ....
8251   Zweifel an göttlichen Offenbarungen ....8251   Zweifel an göttlichen Offenbarungen ....
8251 Zweifel an göttlichen Offenbarungen ....Marianne Zipf
 
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)WhitePaperGeldGenererenmetStrategischeAanpakHR (2)
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)Robert de Lange
 
Manifesto du Marketing Musical - Edition 2011
Manifesto du Marketing Musical - Edition 2011Manifesto du Marketing Musical - Edition 2011
Manifesto du Marketing Musical - Edition 2011Happy Web Enterprises
 

Andere mochten auch (17)

Jp (1)
Jp (1)Jp (1)
Jp (1)
 
Kaufpfade von eShoppern
Kaufpfade von eShoppernKaufpfade von eShoppern
Kaufpfade von eShoppern
 
Web 2.0 en bibliothèque - éléments de réflexion
Web 2.0 en bibliothèque - éléments de réflexionWeb 2.0 en bibliothèque - éléments de réflexion
Web 2.0 en bibliothèque - éléments de réflexion
 
Analyse f commerce de la boutique bulgari
Analyse f commerce de la boutique bulgariAnalyse f commerce de la boutique bulgari
Analyse f commerce de la boutique bulgari
 
Ost 1 41550 74
Ost 1 41550 74Ost 1 41550 74
Ost 1 41550 74
 
Enquete entreprises Pole Numerique - octobre 2012
Enquete entreprises Pole Numerique - octobre 2012Enquete entreprises Pole Numerique - octobre 2012
Enquete entreprises Pole Numerique - octobre 2012
 
Prix InnoKick 2012
Prix InnoKick 2012Prix InnoKick 2012
Prix InnoKick 2012
 
Menu noël
Menu noëlMenu noël
Menu noël
 
Nach den Sternen greifen... mit Meteor
Nach den Sternen greifen... mit MeteorNach den Sternen greifen... mit Meteor
Nach den Sternen greifen... mit Meteor
 
Services for Realtors
Services for RealtorsServices for Realtors
Services for Realtors
 
Pas pour les_enfants
Pas pour les_enfantsPas pour les_enfants
Pas pour les_enfants
 
FidLy 2013 pour un renouveau du marketing client
FidLy 2013   pour un renouveau du marketing clientFidLy 2013   pour un renouveau du marketing client
FidLy 2013 pour un renouveau du marketing client
 
sishen machines
sishen machinessishen machines
sishen machines
 
8251 Zweifel an göttlichen Offenbarungen ....
8251   Zweifel an göttlichen Offenbarungen ....8251   Zweifel an göttlichen Offenbarungen ....
8251 Zweifel an göttlichen Offenbarungen ....
 
2 SALON
2 SALON2 SALON
2 SALON
 
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)WhitePaperGeldGenererenmetStrategischeAanpakHR (2)
WhitePaperGeldGenererenmetStrategischeAanpakHR (2)
 
Manifesto du Marketing Musical - Edition 2011
Manifesto du Marketing Musical - Edition 2011Manifesto du Marketing Musical - Edition 2011
Manifesto du Marketing Musical - Edition 2011
 

Ähnlich wie Direct memory 3_devoxx_fr_2012-2.04.18

Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cacheMichael Nokhamzon
 
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5Microsoft
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoipkernevez
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniOlivier DASINI
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs rubypinguin666
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra
 

Ähnlich wie Direct memory 3_devoxx_fr_2012-2.04.18 (20)

Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cache
 
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft Hyperconvergence
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Ch memoires
Ch memoiresCh memoires
Ch memoires
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier DasiniMHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Présentation1
Présentation1Présentation1
Présentation1
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and Ceph
 
Cache
CacheCache
Cache
 

Mehr von Benoit Perroud

Soft-Shake 2013 : Enabling Realtime Queries to End Users
Soft-Shake 2013 : Enabling Realtime Queries to End UsersSoft-Shake 2013 : Enabling Realtime Queries to End Users
Soft-Shake 2013 : Enabling Realtime Queries to End UsersBenoit Perroud
 
Apache Cassandra @Geneva JUG 2013.02.26
Apache Cassandra @Geneva JUG 2013.02.26Apache Cassandra @Geneva JUG 2013.02.26
Apache Cassandra @Geneva JUG 2013.02.26Benoit Perroud
 
Hadoop Successes and Failures to Drive Deployment Evolution
Hadoop Successes and Failures to Drive Deployment EvolutionHadoop Successes and Failures to Drive Deployment Evolution
Hadoop Successes and Failures to Drive Deployment EvolutionBenoit Perroud
 
Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Benoit Perroud
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Benoit Perroud
 
NoSQL overview implementation free
NoSQL overview implementation freeNoSQL overview implementation free
NoSQL overview implementation freeBenoit Perroud
 

Mehr von Benoit Perroud (6)

Soft-Shake 2013 : Enabling Realtime Queries to End Users
Soft-Shake 2013 : Enabling Realtime Queries to End UsersSoft-Shake 2013 : Enabling Realtime Queries to End Users
Soft-Shake 2013 : Enabling Realtime Queries to End Users
 
Apache Cassandra @Geneva JUG 2013.02.26
Apache Cassandra @Geneva JUG 2013.02.26Apache Cassandra @Geneva JUG 2013.02.26
Apache Cassandra @Geneva JUG 2013.02.26
 
Hadoop Successes and Failures to Drive Deployment Evolution
Hadoop Successes and Failures to Drive Deployment EvolutionHadoop Successes and Failures to Drive Deployment Evolution
Hadoop Successes and Failures to Drive Deployment Evolution
 
Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08
 
NoSQL overview implementation free
NoSQL overview implementation freeNoSQL overview implementation free
NoSQL overview implementation free
 

Direct memory 3_devoxx_fr_2012-2.04.18

  • 1. Réduire la pression sur l'allocation mémoire Le prochain pas dans l'optimisation des performances de la JVM by Olivier Lamy et Benoit Perroud 1
  • 2. Abstract • Cache Hors Tas (off-heap) – Rappel sur la mémoire Java – Différences de Cache (on-heap vs. off- heap) • Apache Direct Memory – Principes et Architecture – Cas d'utilisation de la vie réelle – Prochaines étapes • Questions 2
  • 3. Speakers • Olivier Lamy, Architecte@Talend, Apache Member & Direct Memory Committer – @olamy • Benoit Perroud, Software Engineer@Verisign & Apache Direct Memory Committer – @killerwhile 3
  • 4. Avant de commencer • Désolés d'avance pour le fran-glais que nous allons parler 4
  • 5. Apache Direct Memory Apache Direct Memory is a multi layered cache implementation featuring off-heap memory storage to enable caching of java objects without degrading jvm performance. Le but recherché par le projet est de décharger la JVM de la mémoire consommée par les objets mis en cache afin de réduire le temps d'exécution du GC. 5
  • 6. Apache Direct Memory • Projet dans l'incubateur de l'Apache Software Foundation • Arrivé dans l'incubateur en automne 2011 • 12 développeurs, 10+ contributeurs • En développement actif – Sujet à changement et à bugs 6
  • 7. La Mémoire Java • Allocation automatique de la mémoire 7
  • 8. La Mémoire Java (2) • Ramasse-miette (GC) – Le GC gèle complètement l'exécution du processus pour s'exécuter – Rend l'exécution du programme non déterministe 8
  • 9. Cache Mémoire • Cache dans la mémoire Java (on-heap) – Pas de pénalité d'utilisation – Mais occupe de la mémoire Java la rendant indisponible au fonctionnement de l'application TODO : Image avec RAM 9
  • 10. Cache Mémoire (2) • Cache hors de la mémoire Java (off-heap) – Pénalité de sérialisation • Protobuf, Avro, Thrift, MsgPack, ... – Réduit la taille de la mémoire gérée par la JVM 10
  • 11. Design et Architecture • ByteBuffer.allocateDirect • ByteBuffers sont alloués en masse, et découpés à la demande • Développé en couche – Pour une meilleure séparation des responsabilités 11
  • 12. Stratégies d'Allocation • Fusion de ByteBuffers – Pas de perte de mémoire, mais fragmentation – A utiliser si ratio lecture / écriture haut • Taille fixe des ByteBuffers – Perte de mémoire, mais pas de fragmentation (*) – A utiliser si objets de taille similaire 12
  • 13. Cache Multi-Niveaux • Idée : une très petite portion d'objets en cache en mémoire Java (on-heap), le reste hors de la mémoire Java (off-heap) – Mmmh, ça ressemble à Terracotta BigMemory tout ça – Apache Direct Memory peut être injecté dans Ehcache. Ouuups ;) 13
  • 14. Server de Cache > PUT /dm/cache/bordeaux HTTP/1.1 > Content-Type:text/plain {"millesime":"bordeaux","description":"so good so good"} < HTTP/1.1 200 OK < X-DirectMemory-SerializeSize: 58 < Content-Length: 0 > GET /dm/cache/bordeaux HTTP/1.1 > Accept:text/plain < HTTP/1.1 200 OK < Content-Type: text/plain < Content-Length: 51 {"millesime":"2003","description":"so good so good"} > DELETE /dm/cache/foo HTTP/1.1 14
  • 15. Prochaines étapes • JSR 107 • Benchmarks • Intégrations dans des composants (Cassandra, Lucene, Tomcat, ...) • Modification dynamique de la taille du cache • Fonctionnalités de Monitoring et Management • ... • https://issues.apache.org/jira/browse/DIRECTMEMORY 15
  • 16. Questions ? Merci pour votre attention ! 16