Developpez.com

Le Club des Développeurs et IT Pro

« Il faut repenser les OS pour les processeurs multi-coeurs »

D'après Microsoft

Le 2010-03-22 14:06:03, par Katleen Erna, Expert éminent sénior
"Il faut repenser les OS pour les processeurs multi-coeurs", d'après Microsoft

Dave Probert est expert du noyau chez Microsoft. Selon lui, l'approche actuelle du multi-coeur n'est pas encore à même d'en exploiter toute la puissance, et est trop "compliquée".

Aussi, propose-t-il une autre organisation. Car, d'après lui, "la solution" ne se situerait pas dans l'amélioration de techniques "comme le parallel programming, mais plutôt dans le refonte des abstractions de base qui constituent le modèle du système d'exploitation".

Il explique qu'on ne tire pas assez parti des performances offertes par les processeurs multicoeurs et qu'aujourd'hui, on ne devrait plus avoir à patienter devant son ordinateur. "Désormais, la réactivité est reine", clame-t-il.

Il suggère que les développeurs "repensent" l'architecture de base des OS actuels pour que les bénéfices apportés par les puces multicoeurs soient pleinement exploités

Un nouveau système basé sur le multicoeur aurait un aspect "très différent" de Windows ou d'Unix. Il fonctionnerait plutôt comme un hyperviseur, d'après Probert, et servirait d'intermédiaire entre la machine virtuelle et le hardware.

Source : Déclarations de Dave Probert lors de l'Urbana-Champaign Parallel Computing keynote

Pensez-vous en effet que les performances offertes par le multicoeur ne sont pas pleinement exploitées aujourd'hui ?

Que pensez-vous de la proposition de Probert ?
  Discussion forum
59 commentaires
  • Nebulix
    Membre expérimenté
    Un expert de Microsoft qui déclare :
    "on ne devrait plus avoir à patienter devant son ordinateur"
    Cette nouvelle serait plus à sa place dans la catégorie HUMOUR (jaune)
  • ManusDei
    Expert confirmé
    Envoyé par Paul TOTH

    Je faisais donc remarquer que plus il y a de couches d'abstractions, plus il est difficile de trouver comment optimiser le résultat final.
    Moi j'estime que l'optimisation du code pour des besoins de rapidité, c'est pas mon travail. C'est devenu le travail du compilateur.

    Donc que déjà quand on parle de langages rapides ou lents, on se trompe de débat. C'est pas le langage qui est performant (ou pas), c'est le compilateur. Sinon pourquoi on compare les performances du code compilé C selon les compilateur ?
  • IDontLikeYou
    Membre actif
    Envoyé par ManusDei
    Moi j'estime que l'optimisation du code pour des besoins de rapidité, c'est pas mon travail. C'est devenu le travail du compilateur.

    Donc que déjà quand on parle de langages rapides ou lent, on se trompe de débat. C'est pas le langage qui est performant (ou pas), c'est le compilateur. Sinon pourquoi on compare les performances du code compilé C selon les compilateur ?
    C'est vrai, à condition que tu ne codes pas comme un pied non plus.
  • termitor
    Futur Membre du Club
    Quand on regarde les architectures de système ou de langage nouveau tel que Lisaac ou Hurd !

    On peut voir un espoir d'améliorations.

    Le C a été crée dans le but de faire un OS de façon plus facile et performante.C'était il y a plus de 30ans. On connait le résultat : "Unix".

    Hurd par exemple veut exploser le noyau en programme indépendant. Que ce soit la pile réseau ou les systèmes de fichiers. Le portage sur L4 (jamais finalisée) devait permettre (en théorie) au programme de gérer eux même leurs swap et thread, mais sans prendre le role de l'OS.
    L'idée est simple, la séparation des mécanisme et des politique. L'OS fournie le mécanisme, le programme choisit sa politique de swap ou de thread, si il n'en fournie pas c'est la politique par défaut.

    Lisaac 0.39 de son côté, a un modèle de gestion du multitâche intéressant, le mieux est d'aller voir sur le site.

    L'union d'un langage évolué comme lisaac avec la séparation des mécanismes et des politiques systèmes comme hurd, serait un bon moyen d'avoir du neuf dans les système d'exploitations, par la facilité et la puissance du langage d'un côté, et la modularité et le découpage fonctionnel, le découpage de l'OS et des applications de l'autre.

    La question essentiel que je me pose : "peut-on changer de façon de concevoir l'outil informatique avec les anciens paradigmes systèmes et de langage ? Ou faut-il une coupure avec l'existant et dépassé ces anciens concepts ?"

    Bien a vous.
  • pseudocode
    Rédacteur
    Envoyé par deadalnix
    Mais oui, tu as bien regardé ce qu'était les projets de recherche type helios ou barrelfish toi.

    Si tu veux faire du massivement multicore, et pas du 8 ou 16 cores comme dans les serveurs actuels, il te faut changer radicalement d'architecture. D'autant plus si, comme on le constate sur des projets comme fusion ou fermi, ou des proco comme le cell, l'architecture d'éxécution devient hétérogène.

    C'est un peu facile de dire que microsoft c'est des méchants fumistes, et ils ont leur lot de trucs qu'on peut leur reprocher. Mais là dessus, ils sont en avance et de beaucoup.
    +1

    La gestion "multicore" de Solaris (ou d'autres OS "serveur" n'est pas vraiment une remise en cause de l'architecture de l'OS. On a toujours du time-sharing pour simuler le multitâche sur chaque core, et un seul kernel qui gère la totalité des ressources hard/soft.

    L'optimisation "multicore" dans es OS consiste généralement à avoir des algorithmes de scheduling optimisés qui permettent de limiter les défauts de cache dus aux commutations de tâches (time-sharing) sur chaque core.
  • Paul TOTH
    Expert éminent sénior
    Il y a encore des gens qui croient au tout assembler
  • Génoce
    Membre éclairé
    Envoyé par Katleen Erna
    "Il faut repenser les OS pour les processeurs multi-coeurs", d'après Microsoft

    Il explique qu'on ne tire pas assez parti des performances offertes par les processeurs multicoeurs et qu'aujourd'hui, on ne devrait plus avoir à patienter devant son ordinateur. "Désormais, la réactivité est reine", clame-t-il.

    Pensez-vous en effet que les performances offertes par le multicoeur ne sont pas pleinement exploitées aujourd'hui ?
    Il me semble que la plupart du temps, quand j'attends durant un chargement, c'est dû au disque(s) dur pas assez rapide non?

    Sinon c'est dans la lignée de ce qui se fait aujourd'hui, toujours plus vite !
    S'ils parviennent à mieux exploiter la puissance les processeurs multicoeurs, tant mieux, étant donné que c'est l'avenir!

    Vivement qu'on exploite pleinement les capacités de notre cerveau aussi
  • kaymak
    Membre émérite
    Envoyé par Katleen Erna

    Un nouveau système basé sur le multicoeur aurait un aspect "très différent" de Windows ou d'Unix. Il fonctionnerait plutôt comme un hyperviseur, d'après Probert, et servirait d'intermédiaire entre la machine virtuelle et le hardware.

    Ce n'est pas déjà le cas ?
    Les threads ne sont pas suffisants pour ordonnancer / superviser les exécutions ?
  • Shaidak
    Membre actif
    -> Pensez-vous en effet que les performances offertes par le multicoeur ne sont pas pleinement exploitées aujourd'hui ?

    Question rhétorique ? Plus sérieusement c'est loin d'être un scoop et il est évident que les proc périphériques passent la majorité de leur temps à roupiller pendant que leur coeur principal bosse et que l'on attend.

    -> Que pensez-vous de la proposition de Probert ?

    Une bonne idée ... reste à voir en pratique ce que cela va donner. Le multi-thread devait être omni-présent avec les processeurs multicoeurs et permettre leur pleine utilisation, or, actuellement c'est loin d'être le cas (sauf pour des applications de rendu vidéo ou audio peut-être).

    Envoyé par kaymak
    Ce n'est pas déjà le cas ?
    Les threads ne sont pas suffisants pour ordonnancer / superviser les exécutions ?
    Si je ne me trompe pas, c'est à l'os d'assigner les thread bien plus qu' au programme lui-même, par conséquent si l'os ne gère pas correctement les différents processeurs, les multicoeurs ne seront pas pleinement exploités.

    PS : N'y avait-il pas eu proposition il y a quelque temps visant à dire que c'était au hardware de gérer cela bien plus qu'au développeur ? Ou alors j'ai simplement rêvé
  • LeSmurf
    Membre expérimenté
    Apple propose aussi une solution déjà implémentée, Grand Central Dispatch, mais ce n'est pas aussi radical que la proposition de MS