Puma : Un distant pour mutualiser la mémoire inutilisée des machines virtuelles Maxime Lorrillere, Julien Sopena, Sébastien Monnet and Pierre Sens 24 avril 2014 Maxime Lorrillere ComPAS 2014 24 avril 2014 1 / 20
Introduction Contexte Problème : fragmentation de la mémoire Hôte 1 Hôte 2 Applications Pages anonymes Mémoire Disque Page InfiniBand Maxime Lorrillere ComPAS 2014 24 avril 2014 2 / 20
Introduction Contexte Problème : fragmentation de la mémoire Applications Hôte 1 MV3 Hôte 2 MV4 virtio virtio InfiniBand La virtualisation apporte flexibilité et isolation Maxime Lorrillere ComPAS 2014 24 avril 2014 2 / 20
Introduction Contexte Problème : fragmentation de la mémoire Applications Hôte 1 MV3 Hôte 2 MV4 Swap virtio virtio InfiniBand La virtualisation apporte flexibilité et isolation Problème : fragmentation de la mémoire disponible Partager des ressources comme le temps CPU est facile Ajuster la quantité de mémoire d une MV prend du temps et peut générer du swap Maxime Lorrillere ComPAS 2014 24 avril 2014 2 / 20
Introduction Positionnement Solution : réallouer dynamiquement la mémoire Memory Ballooning [OSDI 02] Applications Hôte 1 MV3 Hôte 2 MV4 Swap Ballon virtio virtio InfiniBand Le ballon est gonflé pour rendre de la mémoire à l hôte Le ballon est dégonflé pour reprendre de la mémoire L ensemble est coordonné par l hôte Maxime Lorrillere ComPAS 2014 24 avril 2014 3 / 20
Introduction Positionnement Solution : réallouer dynamiquement la mémoire Memory Ballooning [OSDI 02] Applications Hôte 1 MV3 Hôte 2 MV4 Ballon virtio virtio InfiniBand Le ballon est gonflé pour rendre de la mémoire à l hôte Le ballon est dégonflé pour reprendre de la mémoire L ensemble est coordonné par l hôte Maxime Lorrillere ComPAS 2014 24 avril 2014 3 / 20
Introduction Positionnement Solution : réallouer dynamiquement la mémoire Memory Ballooning [OSDI 02] Applications Hôte 1 MV3 Hôte 2 MV4 I/O Ballon virtio virtio InfiniBand Le ballon est gonflé pour rendre de la mémoire à l hôte Le ballon est dégonflé pour reprendre de la mémoire L ensemble est coordonné par l hôte Problème : l hôte ne sait pas à quoi sert la mémoire Entraîne une fragmentation du page Maxime Lorrillere ComPAS 2014 24 avril 2014 3 / 20
Introduction Positionnement Solution : coopératif virtualisé XHive [IEEE TOC 11] Applications Hôte 1 MV3 Hôte 2 MV4 XHive driver XHive driver Cache manager virtio InfiniBand Cache coopératif entre les machines virtuelles : Repose sur un périphérique bloc virtuel spécifique Les I/O peuvent être servies depuis la mémoire des autres MV Un gestionnaire de est implanté dans l hyperviseur (Xen) Maxime Lorrillere ComPAS 2014 24 avril 2014 4 / 20
Introduction Positionnement Solution : coopératif virtualisé XHive [IEEE TOC 11] Applications Hôte 1 MV3 Hôte 2 MV4 XHive driver XHive driver Cache manager virtio InfiniBand Cache coopératif entre les machines virtuelles : Repose sur un périphérique bloc virtuel spécifique Les I/O peuvent être servies depuis la mémoire des autres MV Un gestionnaire de est implanté dans l hyperviseur (Xen) Problèmes : incompatibilité avec les DFS, co-localisation des MV, modifications de l hyperviseur Maxime Lorrillere ComPAS 2014 24 avril 2014 4 / 20
Introduction Positionnement Solution : monitorer l activité du page Geiger [ASPLOS 06] Applications Hôte 1 MV3 Hôte 2 MV4 Moniteur Moniteur Geiger virtio InfiniBand Objectif : détecter les manipulations du page sans modifier la MV Monitore les I/O et accès mémoire de la MV Geiger peut être utilisé pour créer un de second niveau Maxime Lorrillere ComPAS 2014 24 avril 2014 5 / 20
Introduction Positionnement Solution : monitorer l activité du page Geiger [ASPLOS 06] Applications Hôte 1 MV3 Hôte 2 MV4 Moniteur Moniteur Geiger virtio InfiniBand Objectif : détecter les manipulations du page sans modifier la MV Monitore les I/O et accès mémoire de la MV Geiger peut être utilisé pour créer un de second niveau Problèmes : incompatibilité avec les DFS, modifications de l hyperviseur Maxime Lorrillere ComPAS 2014 24 avril 2014 5 / 20
Introduction Positionnement Solution : confier la gestion du à l hyperviseur Mortar [VEE 14] Applications Hôte 1 MV3 Hôte 2 MV4 FUSE Mortar bridge Mortar bridge FUSE Cache manager Pool virtio InfiniBand Framework pour réutiliser la mémoire inactive : Fourni des indictions à l hôte sur la mémoire récupérable. L hôte gère un pool de mémoire. API Key/value store compatible memd. MortarLoad utilise cette API pour fournir un disque. Maxime Lorrillere ComPAS 2014 24 avril 2014 6 / 20
Introduction Positionnement Solution : confier la gestion du à l hyperviseur Mortar [VEE 14] Applications Hôte 1 MV3 Hôte 2 MV4 FUSE Mortar bridge Mortar bridge FUSE Cache manager Pool virtio InfiniBand Framework pour réutiliser la mémoire inactive : Fourni des indictions à l hôte sur la mémoire récupérable. L hôte gère un pool de mémoire. API Key/value store compatible memd. MortarLoad utilise cette API pour fournir un disque. Problème : co-localisation des MV, modifications hyperviseur/mv Maxime Lorrillere ComPAS 2014 24 avril 2014 6 / 20
Introduction Positionnement Notre solution : s intégrer directement dans le page Applications Hôte 1 MV3 Hôte 2 MV4 Page Puma Puma Puma ~10ms distant TCP (~100µs) virtio virtio IP over InfiniBand (~500µs) InfiniBand L approche de Puma : Ne pas toucher à l hyperviseur Intégration au noyau de la MV Ne dépend pas des périphériques blocs Supporte les DFS Approche similaire aux coopératifs Maxime Lorrillere ComPAS 2014 24 avril 2014 7 / 20
Implémentation de Puma Architecture Architecture de Puma Défaut de page opération get 1 get(p24) MISS P24 P24 24 Métadonnées Intégration dans le page pour détecter les miss Un miss entraîne une opération get (synchrone) Méta-données locales pour éviter un miss distant Maxime Lorrillere ComPAS 2014 24 avril 2014 8 / 20
Implémentation de Puma Architecture Architecture de Puma Défaut de page opération get 1 get(p24) MISS P24 P24 2 HIT 24 Métadonnées Intégration dans le page pour détecter les miss Un miss entraîne une opération get (synchrone) Méta-données locales pour éviter un miss distant Maxime Lorrillere ComPAS 2014 24 avril 2014 8 / 20
Implémentation de Puma Architecture Architecture de Puma Défaut de page opération get 1 get(p24) P24 MISS 2 HIT 24 req(p24) 3 Métadonnées P24 Intégration dans le page pour détecter les miss Un miss entraîne une opération get (synchrone) Méta-données locales pour éviter un miss distant Maxime Lorrillere ComPAS 2014 24 avril 2014 8 / 20
Implémentation de Puma Architecture Architecture de Puma Défaut de page opération get 1 get(p24) P24 MISS 2 HIT 24 req(p24) 3 4 Recherche P24 Métadonnées Intégration dans le page pour détecter les miss Un miss entraîne une opération get (synchrone) Méta-données locales pour éviter un miss distant Maxime Lorrillere ComPAS 2014 24 avril 2014 8 / 20
Implémentation de Puma Architecture Architecture de Puma Défaut de page opération get 1 get(p24) P24 MISS 5 2 HIT 24 P24 req(p24) 3 P24 4 Recherche P24 Métadonnées Intégration dans le page pour détecter les miss Un miss entraîne une opération get (synchrone) Méta-données locales pour éviter un miss distant Maxime Lorrillere ComPAS 2014 24 avril 2014 8 / 20
Implémentation de Puma Architecture Architecture de Puma Éviction d une page opération put 1 alloc() P31 P31 31 Métadonnées Généralement déclenchée par une allocation de mémoire Intégration dans le pour détecter les évictions Traitement asynchrone pour éviter les ralentissements Maxime Lorrillere ComPAS 2014 24 avril 2014 9 / 20
Implémentation de Puma Architecture Architecture de Puma Éviction d une page opération put 1 alloc() 2 Reclaim P31 P31 31 Métadonnées Généralement déclenchée par une allocation de mémoire Intégration dans le pour détecter les évictions Traitement asynchrone pour éviter les ralentissements Maxime Lorrillere ComPAS 2014 24 avril 2014 9 / 20
Implémentation de Puma Architecture Architecture de Puma Éviction d une page opération put 1 alloc() 2 Reclaim P31 P31 3 put(p31) 31 Métadonnées Généralement déclenchée par une allocation de mémoire Intégration dans le pour détecter les évictions Traitement asynchrone pour éviter les ralentissements Maxime Lorrillere ComPAS 2014 24 avril 2014 9 / 20
Implémentation de Puma Architecture Architecture de Puma Éviction d une page opération put 4 P31 1 alloc() 2 3 put(p31) Reclaim P31 31 4 Métadonnées Généralement déclenchée par une allocation de mémoire Intégration dans le pour détecter les évictions Traitement asynchrone pour éviter les ralentissements Maxime Lorrillere ComPAS 2014 24 avril 2014 9 / 20
Implémentation de Puma Architecture Architecture de Puma Éviction d une page opération put 4 1 alloc() 2 Reclaim P31 3 put(p31) P31 31 4 Métadonnées P31 5 Stocker la page Généralement déclenchée par une allocation de mémoire Intégration dans le pour détecter les évictions Traitement asynchrone pour éviter les ralentissements Les pages sont stockées en mémoire dans une LRU Stratégies de Exclusive et inclusive Maxime Lorrillere ComPAS 2014 24 avril 2014 9 / 20
Implémentation de Puma Détails et optimisations Détails et optimisations Empreinte mémoire Méta-données : 60 o/page, soit 16 Mo/Go de Maxime Lorrillere ComPAS 2014 24 avril 2014 10 / 20
Implémentation de Puma Détails et optimisations Détails et optimisations Empreinte mémoire Méta-données : 60 o/page, soit 16 Mo/Go de Gestion de la mémoire : éviter les interblocages Évite des recopies dans la couche réseau Allocations de mémoire limitées et atomiques 1 alloc() 4 2 Reclaim P31 4 P31 Pools de mémoire pré-allouée 3 31 P31 put(p31) Maxime Lorrillere ComPAS 2014 24 avril 2014 10 / 20
Implémentation de Puma Détails et optimisations Détails et optimisations Empreinte mémoire Méta-données : 60 o/page, soit 16 Mo/Go de Gestion de la mémoire : éviter les interblocages 1 alloc() Évite des recopies dans la couche réseau 4 2 Reclaim alloc() Allocations de mémoire limitées et atomiques Pools de mémoire pré-allouée P31 P31 4 P31 3 31 put(p31) Maxime Lorrillere ComPAS 2014 24 avril 2014 10 / 20
Implémentation de Puma Détails et optimisations Détails et optimisations Empreinte mémoire Méta-données : 60 o/page, soit 16 Mo/Go de Gestion de la mémoire : éviter les interblocages 1 alloc() Évite des recopies dans la couche réseau 4 2 Reclaim alloc() Allocations de mémoire limitées et atomiques Pools de mémoire pré-allouée P31 P31 4 P31 3 31 put(p31) Gestion de la cohérence Les pages «sales» sont d abord écrites sur disque Une page modifiée localement est invalidée (stratégie inclusive) Maxime Lorrillere ComPAS 2014 24 avril 2014 10 / 20
Implémentation de Puma Détails et optimisations État actuel Prototype fonctionnel Indépendent des périphérique blocs et des systèmes de fichiers Essentiellement sous forme de module noyau (6000 lignes) Quelques modifications au cœur du noyau (± 300 lignes) Évolution facile vers les noyaux récents (3.11.6) Maxime Lorrillere ComPAS 2014 24 avril 2014 11 / 20
Évaluation Plateforme expérimentale Plateforme expérimentale Plateforme virtualisée (KVM) Serveur de : 2 vcpu, fourni de 512 Mo à 5 Go de Client : 2vCPU, 1 Go Point de référence : une MV avec 1 Go de mémoire Quantité totale de : client + serveur (1.5 Go à 6 Go) Types d expérimentations 1 Avec des MV co-localisées et un réseau paravirtualisé (virtio) 2 Avec des MV distantes et un réseau InfiniBand (IPoIB) 3 Comparaison avec les performances d un SSD Maxime Lorrillere ComPAS 2014 24 avril 2014 12 / 20
Évaluation Microbenchmarks en lecture seule Microbenchmarks en lecture seule Accélération (log) 256 128 64 32 16 8 4 Idéal Exclusif Inclusif 2 1 1.5 2 3 4 5 6 Mémoire étendue (Go) Lecture de blocs de 4 Ko dans un fichier de 4 Go : Gain de performances de +15% avec 1.5 Go de x40 lorsque l ensemble des données tiennent dans le La stratégie exclusive est plus efficace jusqu à ce que l ensemble des données tiennent dans le Maxime Lorrillere ComPAS 2014 24 avril 2014 13 / 20
Évaluation Microbenchmarks en lecture seule Microbenchmarks en lecture seule Stratégies de 2.5 2.5 2 2 # get/io 1.5 1 # put/io 1.5 1 0.5 0 Exclusif Inclusif 1.5 2 3 4 5 6 Mémoire étendue (Go) 0.5 0 1.5 2 3 4 5 6 Mémoire étendue (Go) Startégie exclusive Fourni plus de que le inclusif Taux de hit plus élevé Stratégie inclusive Conserve les pages dans le Permet d éviter de les renvoyer au serveur Maxime Lorrillere ComPAS 2014 24 avril 2014 14 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs Postmark Performances 2 1.8 Idéal Exclusif Inclusif Accélération 1.6 1.4 1.2 1 1.5 2 3 4 5 6 Mémoire étendue (Go) Configuration défavorable : 80% d écritures, 20% de lectures Au minimum, une amélioration des performances de +10% Gain de +70% lorsque l essentiel des données tiennent dans le Maxime Lorrillere ComPAS 2014 24 avril 2014 15 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs Postmark E/S lectures/transaction 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 Idéal Exclusif Inclusif 1.5 2 3 4 5 6 Mémoire étendue (Go) écritures/transaction 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 1.5 2 3 4 5 6 Mémoire étendue (Go) Toutes les lectures finissent dans le (local ou distant) L ajout de pour les pages «propres» laisse plus de place pour les écritures différées Maxime Lorrillere ComPAS 2014 24 avril 2014 15 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs Blast 4 Accélération 3.5 3 2.5 2 Idéal Exclusif Inclusif 1.5 1 1.5 2 3 4 5 6 Mémoire étendue (Go) Base de données de séquences de 3 Go : Accès séquentiels : baisse de performances (2%) Peut être résolu via une politique de remplacement mieux adaptée côté serveur x2 lorsque la base de données tient dans le Maxime Lorrillere ComPAS 2014 24 avril 2014 16 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs TPC-H 64 32 Idéal Exclusif Inclusif Accélération (log) 16 8 4 2 1 1.5 2 3 4 5 6 Mémoire étendue (Go) Répartition favorable des écritures (90%/10%) Au minimum, 25% à 40% d amélioration de performances x9 lorsque la base de données tient en mémoire Maxime Lorrillere ComPAS 2014 24 avril 2014 17 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs TPC-H sur InfiniBand Cluster Graphene de Grid 5000 Les VM sont sur des nœuds dédiés Les nœuds sont interconnectés via InfiniBand (20 GB/s) Accélération 32 16 8 4 2 1 Idéal Exclusif Inclusif 0.5 1.5G 2G 3G 4G 5G 6G Mémoire étendue (Go) Légère dégradation de performances (5%) avec peu de 20% de gain à partir de 2 Go de mémoire Le inclusif est plus efficace Maxime Lorrillere ComPAS 2014 24 avril 2014 18 / 20
Évaluation Benchmarks applicatifs Benchmarks applicatifs Cache SSD avec dm- Cache sur SSD : 1 VM co-localisées 2 SSD Samsung 840 Pro avec le module noyau dm- RR (IO/s) Pm (T/s) BLAST (s) TPC-H (s) Référence (1 Go) 166 64.7 42.3 7299.0 Idéal (6 Go) 40400 219.2 11.5 233.5 Puma (exclusive) 5885 104.6 21.2 910.0 Puma (inclusive) 6310 100.5 17 861.8 dm- 3250 695.2 21.3 1148.1 Maxime Lorrillere ComPAS 2014 24 avril 2014 19 / 20
Conclusion Conclusion Puma apporte une solution au problème de fragmentation du Prototype fonctionnel et non-intrusif Évaluation intensive : Une amélioration allant jusqu à x40 dans les microbenchmarks Jusqu à x9 dans des applications de type base de données Perspectives Détection de l (in)activité côté serveur Gestion d écritures synchrones dans le Maxime Lorrillere ComPAS 2014 24 avril 2014 20 / 20