Master 2013 2014
Stages de la spécialité SAR
Vers un cache distribué collaboratif dans le noyau Linux.


Site :LIP6 Regal
Lieu :LIP6 - Laboratoire d'informatique de Paris VI, 4, place Jussieu 75005 Paris Regal (INRIA/UPMC) - RAP (INRIA)
Encadrant : Sopena Julien, Monnet Sébastien
Dates :01/04/2014 - 1/09/2014
Rémunération :Gratification standard
Mots-clés : Parcours SAR autre qu’ATIAM, rech./prof.


Description

Vers un cache distribué collaboratif dans le noyau Linux.

Pitch

Concevoir et implémenter au sein du noyau Linux un mécanisme permettant de déterminer quelle quantité de mémoire "inutilisée" peut être offerte à d’autre machines virtuelles. Un tel mécanisme trouverai une application très large puisqu’il répondrait à un problème aujourd’hui ouvert : "Comment paramétrer les solutions de partage de mémoire (Xhive, Satori, Ballooning, RAMSter, ...) développées pour résoudre le problème de la fragmentation dans les clouds."

Contexte

La virtualisation est aujourd’hui omniprésente dans les systèmes distribués à grande échelle. À la base du "cloud computing", on la retrouve aussi dans nombre de clusters privés. L’utilisation de Machines Virtuelles (VM) permet en effet d’introduire : dynamicité (déploiement à la volée, migration, ...) et sécurité (isolation des applications, sauvegarde du contexte, ...). Cependant cette flexibilité se fait au prix d’une importante fragmentation de la mémoire. Or le bon dimensionnement des VMs reste une tâche ardue et les administrateurs surdimensionnent souvent la mémoire allouée à chaque VM, générant ainsi un énorme gâchis de ressources.

Contrer cette fragmentation de la mémoire est aujourd’hui un enjeu majeur des systèmes distribués et l’on trouve aujourd’hui dans la littérature de multiples propositions en ce sens : Xhive[1], Satori[4], Ballooning[5], RAMSter[3], ... Si elles se basent sur des mécanismes différents (re-mapping de la mémoire, cache-distant, ...) et interviennent à plusieurs niveaux (hyperviseur, et/ou systèmes d’exploitation invités), elles reposent toutes sur l’hypothèse de mémoire "inutilisée" clairement identifiée. Or la réalité est beaucoup plus complexe. En effet, les systèmes d’exploitation utilisent l’espace mémoire libre (non utilisé par les processus) pour mettre en place des mécanismes de caches. La mémoire prise à une VM pour l’offrir à une autre diminue d’autant la place qu’elle consacre à ses caches. La difficulté est donc de déterminer quelle proportion de la mémoire peut être récupérée sans trop dégrader les performances de la VM.

Objectifs du stage

Le but de ce stage est de proposer un mécanisme permettant de dimensionner l’espace mémoire mutualisable. Le stagiaire devra proposer et developer un mécanisme permettant d’identifier et de mesurer cet espace au sein du noyau Linux. L’une des difficultés sera alors de limiter au maximum l’impact de ce mécanisme sur le fonctionnement du noyau. Le stagiaire s’appuiera sur un module noyau de partage de mémoire[2] développé au sein de l’équipe Regal dans le cadre du projet Nuage.

Dans un deuxième temps, le stagiaire pourra modéliser le partage de la mémoire entre les caches, mais aussi étudier les comportements des applications cibles vis à vis du cache.

Ce stage est particulièrement novateur, tant d’un point de vu système qu’algorithmique. En effet, si les compositions pyramidales de cache ont largement été étudiées, peu de travaux portent sur la collaboration "horizontale" (à un même niveau) de caches. De plus, des résultats trouveraient immédiatement leur application dans les nombreux mécanismes de partage de mémoire inter-VM.

Ce stage ambitieux peut tout à fait déboucher sur une poursuite en thèse.

Bibliographie

[1] Hwanju Kim, Heeseung Jo, and Joonwon Lee. Xhive : Efficient cooperative caching for virtual machines. Computers, IEEE Transactions on, 60(1) :106–119, 2011.

[2] Maxime Lorrillere, Julien Sopena, Sébastien Monnet, and Pierre Sens. Vers un cacher ́eparti adapt ́e au cloud computing. In 9ème Conf ́erence Française sur les Systèmes d’Exploitation (CFSE’13), Chapitre français de l’ACM-SIGOPS, GDR ARP, January 2013.

[3] Dan Magenheimer. Zcache and ramster overview and some benchmarking. In Linux Storage Filesystem and Memory Management Summit. Oracle Corp, 2011.

[4] Grzegorz Milos, Derek G Murray, Steven Hand, and Michael A Fetterman. Satori : Enlightened page sharing. In Proceedings of the 2009 conference on USENIX Annual technical conference, pages 1–1. USENIX Association, 2009.

[5] Joel H Schopp, Keir Fraser, and Martine J Silbermann. Resizing memory with balloons and hotplug. In Proceedings of the Linux Symposium, volume 2, pages 313–319, 2006.