Lorsque nous mettons en place un partenariat, comme dans le cas
d'Intel, ce
n'est pas pour être un simple revendeur, mais bien pour innover
ensemble, et apporter le meilleur des 2 sociétés à nos clients.
A ce titre, je vous ai déjà parlé de l'ingénierie optimisée de nos
systèmes x86/x64, mais notre collaboration va bien au-delà...
Solaris (et OpenSolaris) est une des raisons majeures de l'accord de
partenariat qui nous lie avec Intel. De part sa stabilité et sa
capacité à exploiter des systèmes multiprocesseurs et multi-coeurs,
Solaris dispose de fonctions avancées... Fonctions qu'Intel intègre à
sa nouvelle architecture multi-coeur,
Nehalem pour :
| |
|
(note: ce n'est pas moi sur la vidéo, mais David Stewart, Software Engineering Manager d'Intel)
Toutes ces intégrations sont disponibles dans les distributions
OpenSolaris2008.11 et Solaris 10 Update 6.
A cela s'ajoute également l'optimisation des couches logicielles pour
les architectures mutli-coeurs.
Sun fournit des logiciels opensource recompilés pour ces architectures,
au travers des distributions CoolStack.
Ces logiciels sont disponibles sur architectures x86/x64, mais
également SPARC.
Car il ne faut pas l'oublier, Sun a toujours une avance importante sur
les technologies mutli-coeurs. Nous avons lancé dès 2005 un processeur
SPARC CMT (CMT pour Chip Multi-Threading) 8 coeurs, avec 4 threads par
coeur, soit 32 threads matériels d'exécution. Ceci a posé un certain
nombre d'enjeux au niveau du système d'exploitation. Enjeux qui
permettent aujourd'hui à Solaris d'exceller sur ce type
d'architectures. Nous sommes aujourd'hui à la 3ième génération de ce
processeur (eh oui, une par an, pas mal pour le monde des processeurs),
qui supporte 8 coeurs, 8 threads par coeur et des systèmes jusqu'à 4
processeurs (256 threads d'exécutions matériels !).
Maintenant, la question que nous avons souvent : quand utiliser x86/x64
et quand utiliser le processeur SPARC CMT massivement
multi-coeurs/multi-threads ?
De façon synthétique, l'architecture x86/x64 est aujourd'hui plus généraliste, et est à privilégier dans les cas où l'application n'est pas mullti-thread, et où la performance d'un thread ainsi que le temps de réponse associé est le facteur important, en bref, clé pour le HPC.
A contrario, le SPARC CMT est vraiment spécialisé pour :
- les applications fortement multi-threads (Java en fait partie
bien sûr, ce qui rend éligible un nombre important d'applications)
- la prédictibilité du comportement (même sur très fortes charges
transactionnelles) : pas de surprise !
- la consommation électrique optimisée (fréquence moins élevée = moins de dissipation calorifique)
- le MTBF élevé, de part une intégration importante de fonctions au
niveau du processeur (gestionnaire mémoire, I/O, réseau et de
cryptographie !)
Il faut penser différemment et parfois même revoir son paramétrage applicatif à l'inverse des habitudes. Tuning JVM pour mutli-cores : GC ! , pool thread java...!
Donc si vous souhaitez tirer partie au mieux des nouvelles architectures multi-coeurs :
- sélectionnez le matériel par rapport à vos besoins : x86/x64 ou
SPARC CMT
- utilisez le bon OS : Solaris ou OpenSolaris
- utilisez la bonne stack logiciel
- utilisez les bons paramètres
- et obtenez le meilleur meilleur ratio prix/performance/watt/m²
Note : je n'ai pas évoqué ici les systèmes "high-end", SPARC64, car dans une autre classe de serveurs que ceux de type x86/x64 et SPARC CMT. Toutefois, ces systèmes ont un rôle à jouer dans des environnements nécessitant des besoins de croissance applicative verticale (SMP, pour Symetric Multi-Processing), beaucoup d'entrées/sorties et avec un niveau de criticité élevé (car ils disposent notamment de fonctions d'intervention à chaud).