Réduire la pression sur      lallocation mémoireLe prochain pas dans loptimisation des performances                      d...
Abstract• Cache Hors Tas (off-heap)  – Rappel sur la mémoire Java  – Différences de Cache (on-heap vs. off-    heap)• Apac...
Speakers• Olivier Lamy, Architecte@Talend, Apache  Member & Direct Memory Committer  – @olamy• Benoit Perroud, Software  E...
Avant de commencer• Désolés davance pour le fran-glais que  nous allons parler                                            4
Apache Direct MemoryApache Direct Memory is a multi layered cache implementation featuring off-heap memory storage to enab...
Apache Direct Memory• Projet dans lincubateur de lApache  Software Foundation• Arrivé dans lincubateur en automne 2011• 12...
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 lexécution    du processus pour sexécuter  – Rend lexé...
Cache Mémoire• Cache dans la mémoire Java (on-heap)  – Pas de pénalité dutilisation  – Mais occupe de la mémoire Java la  ...
Cache Mémoire (2)• Cache hors de la mémoire Java (off-heap)  – Pénalité de sérialisation      • Protobuf, Avro, Thrift, Ms...
Design et Architecture• ByteBuffer.allocateDirect• ByteBuffers sont alloués en masse, et  découpés à la demande• Développé...
Stratégies dAllocation• Fusion de ByteBuffers  – Pas de perte de mémoire, mais    fragmentation  – A utiliser si ratio lec...
Cache Multi-Niveaux• Idée : une très petite portion dobjets en  cache en mémoire Java (on-heap), le  reste hors de la mémo...
Server de Cache> PUT /dm/cache/bordeaux HTTP/1.1> Content-Type:text/plain{"millesime":"bordeaux","description":"so good so...
Prochaines étapes• JSR 107• Benchmarks• Intégrations dans des composants  (Cassandra, Lucene, Tomcat, ...)• Modification d...
Questions ?Merci pour votre attention !                               16
Prochain SlideShare
Chargement dans…5
×

Direct memory 3_devoxx_fr_2012-2.04.18

2 518 vues

Publié le

Devoxx Paris 2012, 18.04.2012

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 518
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
12
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Direct memory 3_devoxx_fr_2012-2.04.18

  1. 1. Réduire la pression sur lallocation mémoireLe prochain pas dans loptimisation des performances de la JVM by Olivier Lamy et Benoit Perroud 1
  2. 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 dutilisation de la vie réelle – Prochaines étapes• Questions 2
  3. 3. Speakers• Olivier Lamy, Architecte@Talend, Apache Member & Direct Memory Committer – @olamy• Benoit Perroud, Software Engineer@Verisign & Apache Direct Memory Committer – @killerwhile 3
  4. 4. Avant de commencer• Désolés davance pour le fran-glais que nous allons parler 4
  5. 5. Apache Direct MemoryApache 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 dexécution du GC. 5
  6. 6. Apache Direct Memory• Projet dans lincubateur de lApache Software Foundation• Arrivé dans lincubateur en automne 2011• 12 développeurs, 10+ contributeurs• En développement actif – Sujet à changement et à bugs 6
  7. 7. La Mémoire Java• Allocation automatique de la mémoire 7
  8. 8. La Mémoire Java (2)• Ramasse-miette (GC) – Le GC gèle complètement lexécution du processus pour sexécuter – Rend lexécution du programme non déterministe 8
  9. 9. Cache Mémoire• Cache dans la mémoire Java (on-heap) – Pas de pénalité dutilisation – Mais occupe de la mémoire Java la rendant indisponible au fonctionnement de lapplication TODO : Image avec RAM 9
  10. 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. 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. 12. Stratégies dAllocation• 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. 13. Cache Multi-Niveaux• Idée : une très petite portion dobjets 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. 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. 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. 16. Questions ?Merci pour votre attention ! 16

×