Entre les dates de sortie de Windows XP et de Vista, Microsoft a travaillé sur de nombreux projets qui commencent à peine à produire leurs fruits. L’environnement .NET par exemple commence à montrer véritablement sa maturité, tandis que d’autres projets plus lointains font maintenant parler d’eux.
La convergence de différents projets
Parmi ces derniers, on citera par exemple Singularity, un système d’exploitation codé dans sa plus grande partie en code managé et n’utilisant que des processus isolés. D’un autre côté, Microsoft Research a travaillé en collaboration avec l'ETH Zurich System Group sur BarrelFish, un autre système d’exploitation, mais qui considère cette fois que l’ordinateur est un ensemble de nœuds, exactement comme dans un réseau informatique. À la frontière de ces deux projets, on en trouve un autre, qui représente peut-être la finalité de tout ce que l’éditeur entreprend : Helios.
Charon, le créateur du site Ma-Config.com et co-auteur des dossiers sur Vista et Windows 7, a publié une explication intéressante de ce travail très spécial. Le projet Helios fait référence au Soleil, et plus particulièrement au système solaire, l’étoile entourée de ses planètes qui lui gravitent autour. Dans le concept d’Helios, on reprend les bases de BarrelFish. Chaque unité de calcul va se voir attribuer un noyau, ce qui inclut aussi bien les processeurs que les GPU par exemple. C’est le concept du « manycore » : un lot d’unités, toutes considérées globalement sur un pied d’égalité. Et, pour reprendre l’analogie du système solaire, un noyau principal se tient au centre de l’ensemble et joue le rôle de chef d’orchestre.
Un soleil et ses planètes
Le fonctionnement d’Helios est très particulier. Les noyaux qui sont arbitrés ne sont pas amputés : ce sont des micronoyaux qui possèdent chacun leur propre ordonnanceur (scheduler) et leur propre gestion de la mémoire.
Dans Helios, le noyau central coordonne l’ensemble. Il démarre et arrête les noyaux satellitaires et leur distribue les travaux à accomplir, tout en établissant les communications entre eux. Les processus qui sont envoyés à ces noyaux sont de type Singularity, c’est-à-dire scellés : chaque processus est complètement isolé du noyau (SIP, Software Isolated Process) par le langage de développement. De plus, contrairement à Windows où les DLL sont chargées dans la zone mémoire du processus, elles ont sous Singularity leur propre processus. Une application ne signifie ainsi plus un seul processus. Enfin, tous ces processus communiquent entre eux par des canaux spécifiés et typés.
Voici donc comment les choses se passent dans les grandes lignes :
Si l’on regarde du côté de l’architecture actuelle de nos ordinateurs familiaux ou même professionnels, on peut considérer que rien n’est encore compatible. Helios possède actuellement deux types de noyaux satellitaires fonctionnels pour les architectures suivantes :
La question que l’on se pose est : ce système est-il performant ? Selon des tests internes et, bien entendu, préliminaires, il semble bien que ce soit le cas.
Ces graphiques montrent deux tests :
Ceux qui n'ont pas peur des détails techniques en anglais pourront lire le document source de Microsoft Research au sujet d'Helios.
La convergence de différents projets
Parmi ces derniers, on citera par exemple Singularity, un système d’exploitation codé dans sa plus grande partie en code managé et n’utilisant que des processus isolés. D’un autre côté, Microsoft Research a travaillé en collaboration avec l'ETH Zurich System Group sur BarrelFish, un autre système d’exploitation, mais qui considère cette fois que l’ordinateur est un ensemble de nœuds, exactement comme dans un réseau informatique. À la frontière de ces deux projets, on en trouve un autre, qui représente peut-être la finalité de tout ce que l’éditeur entreprend : Helios.
L'architecture de Singularity
Charon, le créateur du site Ma-Config.com et co-auteur des dossiers sur Vista et Windows 7, a publié une explication intéressante de ce travail très spécial. Le projet Helios fait référence au Soleil, et plus particulièrement au système solaire, l’étoile entourée de ses planètes qui lui gravitent autour. Dans le concept d’Helios, on reprend les bases de BarrelFish. Chaque unité de calcul va se voir attribuer un noyau, ce qui inclut aussi bien les processeurs que les GPU par exemple. C’est le concept du « manycore » : un lot d’unités, toutes considérées globalement sur un pied d’égalité. Et, pour reprendre l’analogie du système solaire, un noyau principal se tient au centre de l’ensemble et joue le rôle de chef d’orchestre.
Un soleil et ses planètes
Le fonctionnement d’Helios est très particulier. Les noyaux qui sont arbitrés ne sont pas amputés : ce sont des micronoyaux qui possèdent chacun leur propre ordonnanceur (scheduler) et leur propre gestion de la mémoire.
Dans Helios, le noyau central coordonne l’ensemble. Il démarre et arrête les noyaux satellitaires et leur distribue les travaux à accomplir, tout en établissant les communications entre eux. Les processus qui sont envoyés à ces noyaux sont de type Singularity, c’est-à-dire scellés : chaque processus est complètement isolé du noyau (SIP, Software Isolated Process) par le langage de développement. De plus, contrairement à Windows où les DLL sont chargées dans la zone mémoire du processus, elles ont sous Singularity leur propre processus. Une application ne signifie ainsi plus un seul processus. Enfin, tous ces processus communiquent entre eux par des canaux spécifiés et typés.
Voici donc comment les choses se passent dans les grandes lignes :
- Les processus Singularity sont distribués aux noyaux satellitaires, chaque processus ne pouvant s’exécuter que sur un seul noyau, ce qui inclut l’ensemble des threads qui y sont rattachés.
- Les noyaux communiquent entre eux par les canaux cités plus haut, mais ce système peut en outre être utilisé pour les échanges distants, ce qui inclut par exemple les communications TCP.
- On peut attribuer une affinité pour un noyau satellitaire particulier à une application
- L’interface entre les noyaux et les processus est la même partout, quel que soit le noyau. Cette uniformité est nécessaire pour que le noyau coordinateur puisse distribuer les tâches sans barrières.
Si l’on regarde du côté de l’architecture actuelle de nos ordinateurs familiaux ou même professionnels, on peut considérer que rien n’est encore compatible. Helios possède actuellement deux types de noyaux satellitaires fonctionnels pour les architectures suivantes :
- XScale d’Intel
- NUMA (un noyau par domaine)
La question que l’on se pose est : ce système est-il performant ? Selon des tests internes et, bien entendu, préliminaires, il semble bien que ce soit le cas.
Ces graphiques montrent deux tests :
- Le premier compare, sur une architecture XScale, le temps de résolution d'opérations mathématiques pendant qu'une indexation de fichiers est en cours. La colonne grise représente les performances sur les opérations mathématiques sans noyau satellite, la colonne hachurée, avec un noyau satellite. L’écart de performances est de 28 % en faveur du noyau satellite, celui-ci récupérant le travail sur l'indexation.
- Le second test prend place sur une architecture NUMA et mesure le temps pris par 16 threads pour appeler un million de fois une API responsable du basculement des threads. Via le noyau satellite, le temps nécessaire est plus cours de 68 %.
Ceux qui n'ont pas peur des détails techniques en anglais pourront lire le document source de Microsoft Research au sujet d'Helios.