Jeudi 14 décembre 2017
NASDAQ : 0.0 0   nasdaq0 %
RECHERCHE
OK
 
NEWSLETTER
newsletter
Abonnez-vous gratuitement
à notre newsletter
hebdomadaire - Cliquez ICI
Indexel
  • DOSSIERS
  • PRATIQUE
pub Publicité
 

INFRASTRUCTURE

Processeurs multicœurs pour serveurs : le logiciel suivra-t-il ?

Imprimer Envoyer à un ami Contacter la rédaction
Par Thierry Lévy-Abégnoli le 03/06/2009 - indexel.net
 
Jeu.de.cartes.illustrant.les.processuers.multicoeurs

Aujourd'hui quatre à huit cœurs par processeur, bientôt seize et davantage : les logiciels serveurs sont-il capables d'exploiter ces architectures ? Ils auraient plusieurs années de retard sur le matériel.

 

Depuis 2005, année qui a marqué la fin de la course aux GHz, les constructeurs prétendent fournir plus de puissance en augmentant le nombre de cœurs de leurs processeurs. Intel s'en tient aujourd'hui aux quadricœurs avec la famille Xeon 5500 (alias Nehalem) mais on attend un octocœurs pour fin 2009. AMD lance pour sa part un Opteron à six cœurs et évoque des versions 12 et 16 cœurs pour 2011. Avec ses processeurs Power 6, IBM est pour l'instant resté à deux cœurs mais en 2010, Power 7 atteindra 8 cœurs. La palme revient toutefois à Sun, dont l'UltraSparc T2 intègre depuis longtemps 8 cœurs et une version à 16 cœurs sera disponible dès l'automne.

Tout semble donc aller pour le mieux. Sauf qu'une récente étude du cabinet Gartner a mis le doigt sur un sujet presque tabou, montrant que la multiplication des cœurs, si elle permet aux constructeurs d'afficher des performances brutes en hausse constante, aboutit à une sous-utilisation de plus en plus importante de la puissance réellement disponible. La principale exception concerne le calcul haute performance, domaine dans lequel les algorithmes se prêtent à une parallélisation massive.

Des systèmes d'exploitation a priori pourtant bien armés

Petite précision : le système d'exploitation ne voit ni des cœurs ni des processeurs mais des "threads", c'est-à-dire des flux d'instructions. Ce sont ces flux qui sont répartis sur des processeurs et des cœurs. Grâce au mode "hyperthreading", on peut même confier deux threads à chaque cœur. En somme, sur un serveur équipé de deux processeurs quadricœurs, il sera possible d'exécuter simultanément 16 threads. Les threads peuvent par exemple correspondre à des applications différentes.

Les systèmes d'exploitation ne gèrent toutefois pas un nombre illimité de threads. Par exemple, Windows Server 2008, lancé il y a peine quelques mois, est limité à 64 threads. Il ne peut donc pleinement exploiter qu'une configuration à huit processeurs quadricoeurs fonctionnant en hyperthreading, ou quatre futurs processeurs octocoeurs. Si les processeurs ne font pas d'hyperthreading, Windows Server 2008 sera capable de tirer pleinement parti d'une machine à 16 processeurs quadricoeurs. "Windows Server 2008 R2 relève cette limite à 256 threads", affirme Franck Sidi, architecte SQL Server chez Microsoft.

Des applications souvent incapables de répartir leur charge

"Au-delà du système d'exploitation, la plupart des applications ne sont généralement pas parallélisées, c'est-à-dire capables de répartir leur charge sur plusieurs threads. Or, la majorité des serveurs physiques restent mono-application, si bien qu'un seul cœur d'un seul processeur tourne à plein régime. En final, mesures à l'appui, on constate que les serveurs de nos clients sont utilisés à 10 ou 15 % de leur capacité", explique Régis Davesne (photo), manager de la BU systèmes et stockage chez SCC. Cela n'est certes pas vrai pour les moteurs de bases de données, capables de paralléliser aussi bien un flux de requêtes que chaque requête. "Mais seules les grosses bases de données sont concernées, or, elles ne représentent qu'une petite partie des serveurs", précise Régis Davesne.

La virtualisation à la rescousse

La virtualisation apparaît comme un moyen d'exploiter les architectures multicœurs. L'hyperviseur pourra par exemple allouer un cœur par machine virtuelle. Cela a de l'intérêt dans un contexte de consolidation de serveurs existants mais aussi pour paralléliser "indirectement" certaines applications, en faisant tourner plusieurs instances dans autant de machines virtuelles. "On constate ainsi qu'il est efficace de dupliquer un serveur Exchange sur plusieurs VM dont chacune gère une partie des boites aux lettres", affirme Sylvain Siou (photo), directeur technique chez VMware.

Mais la solution n'est guère élégante. Et encore faut-il que l'hyperviseur, à l'instar du système d'exploitation, soit capable d'exploiter plusieurs cœurs. Là encore, les éditeurs ont récemment fait des efforts pour suivre la fuite en avant des constructeurs. En l'occurrence, "Hyper-V était jusque-là limité à 24 cœurs et passe aujourd'hui à 64 cœurs avec Windows Server 2008 R2 dont il fait partie intégrante, tandis que le nombre maximum de cœurs par machine virtuelle sera porté à 4", affirme-t-on chez Microsoft. De son côté, VMware passe de 32 cœurs à 64 cœurs, avec vSphere (qui succède à VMware 3). Quant au nombre de cœurs par machine virtuelle, il passe de 4 à 8.

Des environnements de développement qui restent à inventer

Pour que la plupart des logiciels puissent exploiter un nombre important de cœurs, il faudrait réduire la difficulté, pour le développeur, à paralléliser l'exécution de son code. La question a fait l'objet de nombreuses tentatives dont aucune n'est restée dans les mémoires. Celle que Microsoft vient de lancer sera peut-être la bonne. Elle se nomme Axum, qui est un framework de développement basé sur un langage spécifique mais utilisable sous Visual Studio 2008. Selon l'éditeur, Axum paralléliserait automatiquement les traitements. Bien que disponible en téléchargement, il reste au stade expérimental.

LIRE AUSSI
 
 
pub Publicité

CloudStack by IkoulaCloudStack by Ikoula

Cloud Computing : Atouts et freins, acteurs du marché, conseils et témoignages