OCTO - 2013 - Devoxx - la mort du gc
Upcoming SlideShare
Loading in...5
×
 

OCTO - 2013 - Devoxx - la mort du gc

on

  • 711 views

 

Statistics

Views

Total Views
711
Views on SlideShare
711
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

OCTO - 2013 - Devoxx - la mort du gc OCTO - 2013 - Devoxx - la mort du gc Presentation Transcript

  • La mort du GC ?21h - 22h - Salle E. Fitzgerald & L. Armstrong
  • La mort prochaine du GC ? Philippe PRADOS OCTO - Consultant @pprados – www.prados.fr 27 au 29 mars 2013
  • Philippe PRADOS Conférences • Java User Group • Paris Android User Group • DevFest (vidéo) • Solution Linux • SSTIC Plus de 100 articles dans • Linux Mag • Programmez • 01 • MISC • … Philippe PRADOS Deux livres @pprados
  • Petit rappel – Le GC c’est quoi ? • Algorithme qui supprime les objets inutiles. • Nécessite une période d’arrêt-du-monde
  • Ma conviction Le ramasse-miettes ne sera plus LA solution
  • La mort prochaine du GC ? Intuitions Preuves et constat Nouvelles stratégies Solutions alternatives Prospectives Polémiquons !
  • Intuitions 27 au 29 mars 2013
  • G1 nécessaire Le nouvel algo de GC (G1) est voir jHiccup de Azul nécessaire… …mais limité
  • 64 bits moins rapide • 15% moins rapide que les 32 bits voir jHiccup de Azul • Un artifice : le mode pseudo-64 bits
  • Mémoire hors heap – déjà ? -XX:MaxDirectMemorySize=2G
  • Les DB in memory utilisent hors heap > 8 Go problématique http://goo.gl/zsrXC
  • Loi de Moore aux limites Fin en 2018 ? http://goo.gl/MHYn8
  • @deprecated GC Objective-C Automatic Counting Reference
  • Est-ce un problème ?
  • Preuves et constat 27 au 29 mars 2013
  • Puissance / Volume s’inverse bientôt Puissance processeur Volume à traiter
  • Il faut dépasser les limites • Limites I/O • Augmentation de mémoire
  • Avant 1981: 16 bits d’adresse • 2 octets par adresse 65.536 cases mémoire tout compris • Processeurs 8 bits 8 bits 8 bits • Processeurs lents • Impossible d’utiliser un GC 16 bits • Mémoire à la main
  • Avant 1986 : 24 bits d’adresse • 2 x 16 bits = 4 octets par 16 Mo adresse • Processeurs 16 bits 24 bits • Processeurs lents • Impossible d’utiliser un GC • Mémoire à la main
  • Avant 2001 : 32 bits d’adresse – Cool • 4 octets 4 Go théorique • Processeurs très rapides 32 bits • Super ! On peut utiliser un GC • La mémoire est gérée automatiquement
  • Maintenant: 64 bits d’adresse • Maintenant, nous avons 256 tébioctets - 240 un problème • 8 octets • Processeurs aux limites 64 bits Pour le moment, la mémoire de base permet de tenir
  • Coût des mémoires en baisse Historical cost of computer memory and storage • All in memory possible • 1980 : 5000$/MB Évite l’ajout d’un nœud 2010 : 100$/MB
  • Problèmes avec « All in memory » et GC Objectif: • Un accès direct aux objets persistants • Algorithmes non orientés « secteur » En réalité: • Objets hors-heap • Accès via sérialisation/désérialisation • Accès orientés « zone mémoire » Heap avec GC Hors-Heap sans GC
  • All-in-memory contre DB sur SSD ? • Mort des disques magnétiques dans 5 ans • Swapfile sur SSD • Indexations orienté objet en mémoire. • files systèmes avec allocateur « mémoire »
  • Chiffre 2008 : avec 3,5 Terabyte,l’arrêt-du-monde dure 30 secondes
  • Absurdité économique ? • Un cœur pour le GC = un étage sur quatre ! Économie en développement •pas toujours compensée
  • Comment retarder l’échéance ?
  • Nouvelle stratégies?
  • Le GC victime de malédiction Plus on augmente la mémoire, plus on dégrade les performances
  • Segmenter, segmenter, segmenter la mémoire Réduire le volume traité par le GC
  • Application interactives : moins de mémoire • Plusieurs JVM par nœud • Plusieurs VM par nœud • Abandon des threads • « share nothing » • GC par thread dans la JVM ? • Agents • GC par Classloader ?
  • Application « memory based » : hors heap• Utiliser du hors-heap• Langage sans ramasse-miettes (C/C++, Objectif-C, etc.)
  • Plus radical : faute de page • GC sans arrêt du monde (Azul) • Patch/module kernel (que sur *nix !) • Pendant le GC: • Pages invalide • Capture des faute de pages • Patch l’adresse dans l’appelant et relance • Page déclarée valide
  • Solutions alternatives 27 au 29 mars 2013
  • Augmenter la sémantique pour les pointeurs Immuable Un pointeur est : • Une relation ou une agrégation 1 vers un objet immuable Agrégation • simple Une agrégation simple • Une agrégation partagée 1 • Immuable Une relation • Forte ? • Faible ? 1 Immuable
  • Et les autres langages ? • C++11 : shared_ptr, weak_ptr, unique_ptr et les rvalue_references. • « Automatic Counteur Reference » (Objective-C). • Acteur (ER-Lang, Go, Scala) • Isolation totale (Javascript ou Dart) • Programmation fonctionnelle (Hashkell, Closure, Scala, etc.)
  • Prospectives 27 au 29 mars 2013
  • Où allons nous ? Puissances DEFINITIVEMENT à saturation : • ++Volume avec puissance égale Big-memory : • Sémantique forete des pointeurs • Libération déterministe. Multiplication des CPU : • Agents distribués. • Objets immuables. Réseau : • Peer-to-peer
  • Où allons nous ? La mémoire de masse • Sera statique • Avec de gros volumes Montage de la mémoire statique en RAM • Plusieurs téra-octets en ligne et persistant !
  • Et pour nos JVM ? • Java 9 ou 10 saura découper la mémoire en tranche pour aider le GC ? • Hors-heap sera la seule disponible ? • @deprecated GC comme pour Objectif-C ? • OS pour GC ? • Changer de langage? • Langages fonctionnels et à agents ?
  • Qu’en penser ? Deux solutions : • « Il est fort probable que cela arrivera » • « Ce type est fou, il n’y a pas problème » Rendez-vous dans 5 ans (ou avant)
  • Rappel des signaux faibles• Intel prédit la fin de l’augmentation • > 8 Go => Dégradation de puissance des processeurs pour 2018 • @deprecated GC Objective-C !• JVM 64 bits plus lent• G1 est NECESSAIRE• -XX:MaxDirectMemorySize=2G
  • Polémiquez !!!