Avec Kerrighed 2.0.0, Linux a les deux pieds dans le SMP

Posté par  (site web personnel) . Modéré par Thomas Petazzoni.
Étiquettes :
0
17
avr.
2007
Linux
Kerrighed est une extension au système Linux qui permet de faire du SSI, c'est à dire de voir une grappe de PC comme une unique machine SMP. En pratique, il est implémenté sous forme de modules pour Linux, plus un patch minimal au noyau.

Cette version 2.0.0 de Kerrighed, sortie le 4 avril, est liée au noyau Linux 2.6.11, contrairement aux versions précédentes qui étaient basées sur la version 2.4. Cependant, la prochaine version est déjà en cours d'intégration pour le noyau 2.6.20.

Les deux autres projets ayant un lien direct avec le SSI sont OpenMosix et OpenSSI. La prochaine version d'OpenMosix est pour le moment en /alpha/ et sera liée au noyau 2.6.17. OpenSSI, en version 1.9 bêta, est lui aussi lié au noyau Linux 2.6.11. On remarque que pour ces trois projets, la transition vers le noyau 2.6 de Linux a été longue mais commence à donner des résultats très prometteurs.

Le projet Kerrighed est maintenant développé de manière communautaire mais reste encore lié à ses origines hexagonales, dont l'Université de Rennes et l'incontournable INRIA. Les caractéristiques principal de Kerrighed sont :
  • Un ordonnanceur de tâches au niveau de la grappe. La charge est donc répartie entre tous les noeuds (PC).
  • La mémoire est partagée sur l'ensemble de la grappe comme pour une machine SMP.
  • Les tâches peuvent migrer d'un noeud à un autre, même les tâches liées à des flux (socket, pipe, fifo, périphérique en mode caractère...), sans être pénalisées.
  • Un système de fichier centralisé qui permet de voir l'ensemble des disques de la grappe comme un système RAID partagé et accessible depuis tous les noeuds de la même manière.
  • Un mécanisme de 'checkpoint' pour les tâches permettant de faire des images de celles-ci à des instants fixés et de pouvoir les relancer plus tard depuis ces points. Ce mécanisme de 'checkpoint' est fondamental pour les longs calculs (plusieurs semaines) répartis sur plusieurs noeuds tout simplement pour pouvoir faire face à une panne quelconque ou à un reboot d'un noeud.
  • Une interface pour les 'thread' compatible POSIX au niveau de la grappe.
  • Une interface unifiée pour la gestion des tâches au niveau de la grappe (top, ps, kill...). Le PID d'une tâche est ainsi unique sur la grappe.
  • Le mécanisme SSI, de part sa modularité, peut être activé ou déactivé au niveau de chaque tâche (mémoire partagée, ordonnanceur global...).

Il y a quelques points à améliorer comme l'ajout et surtout la suppression à chaud d'un noeud sur la grappe, c'est sur la feuille de route. Il est remarquable cependant de voir les progrès réalisés dans tous les domaines lié au SMP qui vont nous permette de voir une grappe de PC standard comme une seule et unique machine.

Aller plus loin

  • # Un projet prometteur, mais...

    Posté par  . Évalué à 4.

    ... il ne faut pas confondre les fonctionnalités qui sont dans les objectifs et celles qui sont implémentées à l'heure actuelle.

    Par exemple, le système de fichiers distribué (et non centralisé) n'est pas encore de la partie.

    Bref, il faut bien faire la distinction entre les objectifs et ce qui est déjà implémenté.

    En dehors de ça, de par ses objectifs et les éléments déjà implémentés, kerrighed est de loin le projet le plus prometteur à l'heure actuelle pour la création de clusters de calcules: rien que la gestion au niveau thread plutôt qu'au niveau process représente une grande avancée. Le système de pagination distante de kerrighed est aussi un élément inédit (mais pas encore opérationnel).

    On voudrait presque être en décembre 2008...
    • [^] # Re: Un projet prometteur, mais...

      Posté par  . Évalué à 1.

      > Le système de pagination distante de kerrighed est aussi un élément inédit.

      Il a quoi d'inédit par rapport à un système comme GMS ou tous les autres travaux existants sur la pagination à distance ?
      • [^] # Re: Un projet prometteur, mais...

        Posté par  . Évalué à 2.

        Je comparais ce qui est comparable: les ssi entre eux. La pagination distante n'est certes pas un nouveau sujet, ce qui est plus nouveau avec kerrighed, c'est une intégration de ce type de technologie au sein d'un ssi (ce qui est tout de même intéressant pour faciliter les migrations de threads et leur communication)
    • [^] # Re: Un projet prometteur, mais...

      Posté par  (site web personnel) . Évalué à 1.

      > il ne faut pas confondre les fonctionnalités qui sont dans les
      > objectifs et celles qui sont implémentées à l'heure actuelle.

      Je n'ai pris que ce qui est écrit dans le tarball.

      En effet, comme le site web a été entièrement refait, il manque un peu de contenu. On ne sais donc pas trop ce qui marche de ce qui ne marche pas.

      Enfin, tout cela n'empêche pas de faire de la pub pour le projet, surtout que c'est le premier des trois à sortir une version 'stable' basé sur le noyau 2.6 de Linux.
  • # 2.0.0 : une version de transition

    Posté par  . Évalué à 10.

    L'équipe de développement de Kerrighed n'a pas posté de news "officielle" ici pour la version 2.0.0 car il s'agit d'une version de transition. Le projet Kerrighed a connu des mutations importantes durant les 2 dernières années. Notamment, le projet est sorti du giron de l'INRIA. Il n'est plus développé par l'Université de Rennes, et l'INRIA n'est désormais plus qu'un contributeur comme les autres. Une société (Kerlabs) a vu le jour en Novembre 2006 avec pour objectif (entre autres) de poursuivre le développement communautaire de Kerrighed.

    La version 2.0.0 est une version de transition entre le produit de recherche issus de l'INRIA et un produit communautaire qui a le soutient d'une société et qui vise à pouvoir être utilisé en production. Kerrighed a longtemps été un pur produit de recherche, un "démonstrateur" dont l'objectif était de mettre en avant des possibilités techniques. Beaucoup de fonctionnalités "flashies", mais une stabilité très incertaine.

    La version 2.0.0 marque donc une première étape vers une nouvelle version avec moins de fonctionnalités, mais plus de stabilité. L'objectif est d'obtenir une version avec moins de fonctionnalités, mais plus solide et plus proche des réalités matérielles des clusters modernes (support SMP et 64 bits). Cette version est prévu pour cet été. Les fonctionnalités présentes dans la version "recherche" seront dès lors réintégrés progressivement dans les versions successives de Kerrighed.

    Comme le fait justement remarquer ragoutoutou, les objectifs ne sont pas les fonctionnalités :) Voir la page current status du nouveau site Kerrigned pour avoir un aperçu des réelles fonctionnalités et de la roadmap de réintégration des fonctionnalités de recherche dans la version stable.

    A noter enfin que le travail de portage en 2.6 n'a pas été si complexe que cela. Le très long délais entre la version 2.4 et cette version 2.6 est principalement dû à une réorganisation du développement sur Kerrighed et un énorme travail de refactoring sur le code. Dernière chose : l'accès au code et aux mailing-lists de développement est désormais totalement libre (https://gforge.inria.fr/projects/kerrighed/) et le code sera bientôt déplacé sur une forge communautaire.
    • [^] # Re: 2.0.0 : une version de transition

      Posté par  (site web personnel) . Évalué à 4.

      > L'équipe de développement de Kerrighed n'a pas posté de news
      > "officielle" ici pour la version 2.0.0 car il s'agit d'une version de
      > transition

      Exact, je ne suis pas lié à Kerrighed et j'ai écrit la news hier au soir tout seul.

      Cela fait tellement d'année que j'attends un système SSI qui *marche*, j'y ai cru il y a pas mal d'année avec OpenMosix mais finalement, le déployement n'a jamais été possible... Alors, en voyant la nouvelle dynamique du projet Kerrighed, je n'ai pu m'empêcher d'être heureux et de le faire partager.

      Bonne chance au projet.
    • [^] # Re: 2.0.0 : une version de transition

      Posté par  (site web personnel) . Évalué à 4.

      Vous planifiez l'inclusion petit à petit de fonctionnalité de kerrighed dans le noyau mainstream ?

      En général, les développeurs Linux n'aiment pas l'arrivé de gros morceau de code qui cassent tout.

      Par contre, ils ne sont jamais contre l'inclusion de fonctionnalité sexy (genre les checkpoints qui pourraient servir dans n'importe quel système hautes disponibilités). J'imagine d'ailleurs qu'il doit y avoir du code commun avec les fonctionnalités "suspend" (to RAM, to disk,..)

      "La première sécurité est la liberté"

      • [^] # Re: 2.0.0 : une version de transition

        Posté par  . Évalué à 3.

        L'expérience (Mosix, openMosix, openSSI et Bproc) montre que faire rentrer du code SSI dans le noyau est très difficile. Aucun des projets cité n'a réussit à faire entrer quoi que ce soit dans le main stream.

        Néanmoins, nous allons animer un BOF au prochain Linux Symposium pour discuter de la potentielle inclusion d'une partie de Kerrighed. Il s'agit du mécanisme central de Kerrighed : les KDDM (anciennement connu sous le nom de conteneurs). Ce mécanisme est très peu intrusif, il ne nécessite que 2/3 lignes de patch au noyau, plus le code du mécanisme lui-même.
        • [^] # Re: 2.0.0 : une version de transition

          Posté par  (site web personnel) . Évalué à 3.

          Je pense aussi que vous auriez interet à étudier les fonctionnalités similaires et en profiter pour les améliorer. Je pense aux watchpoints avec le code de suspend. Je pense aussi que le fait qu'un noeud qui tombe corresponderait à de la RAM hotplug.

          Bref, j'ai tendance à penser que donner une fonctionnalité utile à Kerrighed mais aussi à tout le monde aura plus de chance d'être accépté. Il sera encore plus accépté si les autres SSI peuvent le réutiliser.

          Bon, ensuite, c'est des histoires de personnes. Il faudrait tenter de filer les patchs pour le kernel-mm ou autre. Ou encore, il faut peut-être en demander une règle du jeu clair sur la lkml "Qu'est-ce qu'il vous faut pour accépter une fonctionnalité SSI pour Linux?"

          J'imagine qu'ils voudront des garanties pour le support. reseirfs3 a franchement laissé des mauvais souvenirs.

          "La première sécurité est la liberté"

          • [^] # Re: 2.0.0 : une version de transition

            Posté par  . Évalué à 1.

            Le concept de RAM hotplug est plutot axé sur une intervention planifiée (notamment le retrait d'une barrette après avoir demandé au noyau de migrer toutes les données s'y trouvant). C'est très différent d'un noeud qui tombe en panne sans prévenir dans un SSI (les processus et données sont perdues s'il n'y a pas de checkpointing/réplication préalabre), ceci relève plutot de la tolérance aux pannes.
  • # LSM / RMLL en Juillet

    Posté par  . Évalué à 3.

    Il existe un thème "Clustering & Virtualization" sur lequel je travaille, au sein des RMLL d'Amiens de cette année.

    Je suis toujours en quête de contributeurs pour les porjets de clustering, toute bonne volontée est bienvenue.

    De fait, je cherche notamment à trouver quelqu'un qui soit capable de faire une synthèse entre OpenMosix, OpenSII & Kerrighed, et d'expliquer les différences.

    Le même type d'exercice sera fait sur les outils de virtualisation (vServer, OpenMosix & XEN entre autres).

    L'un des lecteur se sent l'âme de faire une conférence en Français &/ou Anglais ?

    --
    Gaétan RYCKEBOER
  • # Performances

    Posté par  (site web personnel) . Évalué à 3.

    J'ai lu une étude qui affirmait que Kerrighed est de loin le plus performant SSI existant. J'aimerais savoir si il serait intéressant, du point de vue des performances et de la fiabilité, d'utiliser un tel système en lieu et place d'une grappe de serveurs "classique" (à savoir plusieurs machines faisant tourner Apache avec un système de load balancing, par exemple).

    Je m'y intéresse car cela me paraît très alléchant, du point de vue de la maintenance et du temps dépensé, d'avoir à administrer un seul système logique au lieu de plusieurs systèmes physiques... qui plus est, on pourrait faire tourner plusieurs daemons (HTTP, SMTP, FTP, etc.) sur un seul système Kerrighed qui équilibrerait de manière automatique et transparente la charge entre les différentes machines.

    Je n'ai jamais administré de cluster donc je propose est peut être une immense connerie, mais je suis curieux de savoir ce que ça donnerait. Je me demande notamment si un tel système serait adapté à des applications où le temps de réponse a une certaine importance : pour pouvoir transférer des pages d'une machine physique à une autre avec très peu de latence, il faut un réseau extrêmement rapide entre les éléments du SSI, non ? (Ethernet 1 Gbps ?)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.