SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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)
 

En vedette

Understanding Garbage Collection
Understanding Garbage CollectionUnderstanding Garbage Collection
Understanding Garbage CollectionDoug Hawkins
 
Chomage Partiel 0907
Chomage Partiel 0907Chomage Partiel 0907
Chomage Partiel 0907nicolasbelot
 
Enseñanza del número y sus operaciones.
Enseñanza del número y sus operaciones.Enseñanza del número y sus operaciones.
Enseñanza del número y sus operaciones.Verito Aldana D'Garcia
 
Gazette Du 13 Octobre Au 19 Novembre 2009
Gazette Du 13 Octobre Au 19 Novembre 2009Gazette Du 13 Octobre Au 19 Novembre 2009
Gazette Du 13 Octobre Au 19 Novembre 2009Ciné-Club Atmosphères
 
Masa atómica, 1º, 3er. per. 2014
Masa atómica, 1º, 3er. per. 2014Masa atómica, 1º, 3er. per. 2014
Masa atómica, 1º, 3er. per. 2014linaresmejia
 
Blogs conceptos básicos
Blogs conceptos básicosBlogs conceptos básicos
Blogs conceptos básicosColegio Yapeyú
 
Tutorial de slideshare
Tutorial de slideshareTutorial de slideshare
Tutorial de slideshareivanabangerte
 
Decreto 1002 del 21 de mayo de 2013
Decreto 1002 del 21 de mayo de 2013Decreto 1002 del 21 de mayo de 2013
Decreto 1002 del 21 de mayo de 2013Charli Eduard
 
Fundamento del computador n.3
Fundamento del computador n.3Fundamento del computador n.3
Fundamento del computador n.3vanessa155
 
Wsiteam businesscase-llc-et-associes
Wsiteam businesscase-llc-et-associesWsiteam businesscase-llc-et-associes
Wsiteam businesscase-llc-et-associesWSI France
 
Navegadores de internet
Navegadores de internetNavegadores de internet
Navegadores de internettypolito
 
A la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniqueA la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniquealineisoz.ch
 
Notification obligatoire du VIH/sida et activité de dépistage du VIH
Notification obligatoire du VIH/sida et activité de dépistage du VIHNotification obligatoire du VIH/sida et activité de dépistage du VIH
Notification obligatoire du VIH/sida et activité de dépistage du VIHVih.org
 

En vedette (20)

Understanding Garbage Collection
Understanding Garbage CollectionUnderstanding Garbage Collection
Understanding Garbage Collection
 
Chomage Partiel 0907
Chomage Partiel 0907Chomage Partiel 0907
Chomage Partiel 0907
 
Enseñanza del número y sus operaciones.
Enseñanza del número y sus operaciones.Enseñanza del número y sus operaciones.
Enseñanza del número y sus operaciones.
 
Ada2
Ada2Ada2
Ada2
 
Gazette Du 13 Octobre Au 19 Novembre 2009
Gazette Du 13 Octobre Au 19 Novembre 2009Gazette Du 13 Octobre Au 19 Novembre 2009
Gazette Du 13 Octobre Au 19 Novembre 2009
 
Docencia
DocenciaDocencia
Docencia
 
Bloque 2
Bloque 2Bloque 2
Bloque 2
 
Masa atómica, 1º, 3er. per. 2014
Masa atómica, 1º, 3er. per. 2014Masa atómica, 1º, 3er. per. 2014
Masa atómica, 1º, 3er. per. 2014
 
Blogs conceptos básicos
Blogs conceptos básicosBlogs conceptos básicos
Blogs conceptos básicos
 
Tutorial de slideshare
Tutorial de slideshareTutorial de slideshare
Tutorial de slideshare
 
virus chikungunya
virus chikungunyavirus chikungunya
virus chikungunya
 
Decreto 1002 del 21 de mayo de 2013
Decreto 1002 del 21 de mayo de 2013Decreto 1002 del 21 de mayo de 2013
Decreto 1002 del 21 de mayo de 2013
 
Etapas
EtapasEtapas
Etapas
 
Fundamento del computador n.3
Fundamento del computador n.3Fundamento del computador n.3
Fundamento del computador n.3
 
Wsiteam businesscase-llc-et-associes
Wsiteam businesscase-llc-et-associesWsiteam businesscase-llc-et-associes
Wsiteam businesscase-llc-et-associes
 
Side 2014
Side 2014Side 2014
Side 2014
 
Navegadores de internet
Navegadores de internetNavegadores de internet
Navegadores de internet
 
A la conquête de la Suisse alémanique
A la conquête de la Suisse alémaniqueA la conquête de la Suisse alémanique
A la conquête de la Suisse alémanique
 
Taxi driver
Taxi driver Taxi driver
Taxi driver
 
Notification obligatoire du VIH/sida et activité de dépistage du VIH
Notification obligatoire du VIH/sida et activité de dépistage du VIHNotification obligatoire du VIH/sida et activité de dépistage du VIH
Notification obligatoire du VIH/sida et activité de dépistage du VIH
 

Similaire à Direct memory @ devoxxfr

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
 

Similaire à Direct memory @ devoxxfr (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
 

Plus de Olivier Lamy

Maven university-course
Maven university-courseMaven university-course
Maven university-courseOlivier Lamy
 
The Apache Way olamy
The Apache Way olamyThe Apache Way olamy
The Apache Way olamyOlivier Lamy
 
Heapoff memory wtf
Heapoff memory wtfHeapoff memory wtf
Heapoff memory wtfOlivier Lamy
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talkOlivier Lamy
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven PluginOlivier Lamy
 

Plus de Olivier Lamy (6)

Apache sirona
Apache sironaApache sirona
Apache sirona
 
Maven university-course
Maven university-courseMaven university-course
Maven university-course
 
The Apache Way olamy
The Apache Way olamyThe Apache Way olamy
The Apache Way olamy
 
Heapoff memory wtf
Heapoff memory wtfHeapoff memory wtf
Heapoff memory wtf
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talk
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven Plugin
 

Direct memory @ devoxxfr

  • 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