La dernière fois que j'ai testé une distribution 64bits, c'était il y a plus de deux ans, avec une Suse, et pour un résultat plutôt décevant. Le problème n'était pas en soit lié à l'architecture, ni à Suse d'ailleurs, mais plutôt à la maturité des distributions de l'époque.
Ce n'est donc que bien plus tard que j'ai eu envie de voir où en était Mandriva 2009.0 sur ce plan. Alors je ne vais pas expliquer l'installation avec force détails car il n'y a rien à en dire. Absolument tout a fonctionné du premier coup, elle tourne comme un charme et je n'utilise plus qu'elle sans qu'aucune de mes habitudes n'en soit changée. Le but de ce billet serait plutôt une modeste tentative pour dézinguer un certain nombre d'idées plus ou moins trollesques sur les distributions x86_64 que j'ai pu voir circuler.
Dans l'histoire à la fois courte et longue des microprocesseurs, un doublage de la taille du bus a toujours marqué un tournant important. Ainsi le passage de 8 bits (ex; MOS 6502 ou Zilog Z80 , souvenirs...) à 16 bits ( Intel 8086 , le Intel 8088 étant un 8/16bits) fût une réelle avancée permettant d'adresser directement plus de 64ko de mémoire et aussi d'effectuer des calculs sur de plus grands entiers. Celui de 16 à 32 ( Intel 80386 ) l'a été encore pour l'adressage mais aussi pour les traitements dédiés au secteur multimédia naissant. Cela permet par exemple de manipuler un pixel RGBA (24 bits de couleur + 8 bits de transparence) en une seule opération.
Aujourd'hui avec 4go adressable et des entiers sur 32 bits, le passage à 64bis peut sembler relever d'un intérêt purement marketing à considérer dans le contexte de la gué-guerre AMD vs Intel. En effet 16 exabytes de mémoire ne va pas, du moins dans premier temp, grandement intéresser les foules. Pour ce qui est du calcul, les processeurs récents disposent déjà de jeux d'instructions permettant de travailler sur 64 et 128bits avec la déjà vieille extension MMX, puis plus récemment 3DNow et SSE qui sont dors et déjà utilisées intensivement par de nombreuses applications dans le domaine de l'encodage audio ou vidéo, le tracé de rayons, etc.
Du coup, il est légitime de se poser la question de l'intérêt du passage à 64 bits. Et lorsque l'on commence à gougueuliser un peu sur le sujet, arrive une kyrielle d'assertions du genre le 64bits fait jaunir les dents
. Voyons-en quelques unes.
Déjà c'est faux de manière générale. Les modes 64 bits, qu'ils soient estampillés Intel ou AMD, sont conçus dés l'origine pour permettre l'exécution des applications 32 bits sans aucune modification, de manière totalement transparente, et avec une perte de performance d'1 à 2% (chiffres AMD).
Plus spécifiquement sous Linux, qui rappelons-le, prend en charge les architectures 64 bits depuis plus de 4 ans, vous pouvez exécuter indifféremment du 32 ou 64 bits. La seule contrainte est qu'une application 32 bits sur un kernel 64 nécessitera l'installation de l'ensemble de ses librairies en 32 bits. Du coup dans l'architecture des dossiers nous avons maintenant /usr/lib64 et /usr/lib permettant de séparer les genres. Le reste est géré en toute transparence par Linux.
Pour appréhender sainement cet aspect, il faut distinguer ce qui est libre de ce qui ne l'est pas. Aujourd'hui, à l'exception de wine sur lequelle nous reviendrons, toutes les applications et pilotes libres, du moins à ma connaissance, existent en 64 bits. Après pour le non-libre c'est au cas par cas que cela se joue.
Je n'ai pas vraiment l'expérience de pilotes non-libre mis à part ceux de nVidia et d'ATI. Et dans les deux cas, des versions 64 bits sont disponibles chez les deux constructeurs et fonctionnent sans problèmes.
Pour une raison que j'imagine liée à l'implémentation de l'API Windows, Wine n'est pour l'instant pas disponible en 64 bits, c'est d'ailleurs le seul gros manque que j'ai pu constater. Ceci dit, le projet d'un Wine 64 bit semble aujourd'hui bien avancé.
En attendant, pour bénéficier de Wine, il y a deux solutions. Soit vous ajoutez les dépôts 32 bits de votre distribution et vous installez les paquets. Le moteur de dépendance va ainsi "nourrir" le dossier /usr/lib avec les librairies 32 bits nécessaires. Soit, solution que je préfère, vous créez un dossier chroot 32 bits dans lequel vous installez Wine. L'avantage de la seconde approche est évidement de ne pas "polluer" le système 64 bits avec des binaires en 32 bits.
Dans la série des softs propriétaire vitaux pour moi, j'avais un peu peur pour VmPlayer. Fort heureusement mes craintes n'étaient pas justifiées, une version 64 bits est disponible et fonctionne parfaitement. Rien à rajouter...
Il existe depuis très longtemps une version 64 bits de J2SE téléchargeable sur le site de SUN, ou depuis peu, directement dans les dépôts Mandriva. Mais restait le problème du plugin Java pour Mozilla FireFox. En effet, dans le paquet de SUN, point de Plugin Netscape. La solution jusqu'à maintenant était de simplement passer par le projet OpenJDK qui est à peu prés identique au JDK de SUN à l'exception de certaines implémentation fermées qui ont été remplacées par leurs équivalents libres. Ainsi, en installant le paquet java-1.6.0-openjdk-plugin, un binaire est posé dans le dossier /usr/lib64/mozilla/plugins rendant ainsi possible l'intégration d'appliquettes Java dans FireFox (ou autre).
Maintenant l'actualité du 64 bit semble s'accélérer ces derniers temps, et SUN a enfin mis à disposition un plugin pour les navigateurs 64 bits dans la béta 2 de la 12ième mise à jour du J2SE 6.
A noter enfin que les applications utilisant JavaWebStart marchent en 64 bits, tout aussi bien avec le JDK de SUN qu'OpenJDK via /usr/bin/javaws.
Flash a longtemps été un frein au passage à 64 bits avec comme solution possible l'utilisation de nspluginwrapper dont le rôle est de jouer les passerelles entre le monde 32 bits du plugin fournit par Adobe et celui, natif, du navigateur. Solution pas très performante et en tout cas peu satisfaisante intellectuellement. L'autre possibilité était l'utilisation du prometteur gnash qui n'est aujourd'hui pas d'une stabilité suffisante.
Heureusement, Adobe c'est elle aussi enfin décidée à fournir une version 64 bits qui marche très bien et ce avec d'excellentes performances. Pour en profiter, il suffit juste de décompresser l'archive dans le dossier /usr/lib64/mozilla/plugins, éventuellement supprimer l'ancien wrapper 32 bit (nspluginwrapper -r /usr/lib64/mozilla/plugins/npwrapper.libflashplayer.so) et enfin relancer le navigateur.
Mono, la machine virtuelle pour .Net (CLR) libre, fonctionne parfaitement en environnement 64 bits. Et pour ce qui est du cadre d'applications WEB riches, Silverlight, il existe le plugin joliment nommé "moonlight", qui lui aussi fonctionne en mode natif. Cependant la peinture est encore très fraîche et le résultat n'a pas été très concluant avec surtout de très jolis crash de firefox.
C'est absolument faux, et ce avant tout parce que les binaires linux/i86 n'induisent pas la nécessité d'aligner des instructions sur la taille du bus. Ainsi une application compilée en 64 bits gagne en gros 10% de surcharge pondérale, ce qui ne sont pas très significatifs au regard des espaces disques actuels. La preuve en image :
Là nous sortons un peu du domaine de la légende pour passer à un problème plus réel. Prenons l'exemple d'Epiphany lancé sur chacune des deux architectures. L'outil pmem permet de lister la mémoire utilisée par les deux processus :
Le résultat se passe (presque) de commentaires. Il est ici clair que l'augmentation du taux d'utilisation de la mémoire lors d'un passage en 64 bits est très loin d'être marginal. Pour ce qui est du code résident, l'explication tient avant tout au doublage de la taille des opérandes et des pointeurs. Pour ce qui est des données (ex. taille de la pile), ce sont surtout les pointeurs qui sont responsables. Et comme la taille du code est généralement faible au regard de celle des données qu'il manipule, les applications ne sont pas toutes impactées de la même manière.
Ainsi Epiphany, comme tous les navigateurs WEB, va allouer en mémoire des centaines d'objets se référençant les uns les autres. Du coup la charge sur la mémoire pour cette application est plus forte que par exemple pour GIMP dont l'espace alloué aux données sera peu ou prou le même dans les deux architectures. En effet un bitmap ne prendra pas plus de place en 64 bits qu'en 32 bits.
Dans tous les cas l'occupation mémoire est LE problème majeur des distributions 64 bits qu'il est important de prendre en compte si l'on envisage une migration. Maintenant cette architecture permet de s'affranchir de la barrière de 4go, qui en elle-même représentent déjà un chiffre très honorable. Personnellement j'ai 6Go de RAM sur ma plate-forme, pas de swap, et je n'ai jamais aucun problème malgré une utilisation relativement intensif, soit typiquement une trentaine d'onglets dans FireFox, Evolution, Liferea, Pidgin, deux session eclipse et un windows sous VMWare.
En première approche, il semble logique de penser que l'élargissement des registres induit un gain de vitesse. Grossièrement le processeur est capable en 64 bits de manipuler deux fois plus de données en une seule opération, et donc en un nombre réduit de cycles d'horloge. De manière ultra simplifiée, cela rendrait par exemple plus rapide la recopie d'une zone mémoire mais aussi les opérations arithmétiques sur de grand nombres.
Ce type de besoin se retrouve généralement dans les applications telles que le chiffrement, l'encodage audio ou vidéo, le tracé de rayon ou le calcul scientifique. Le "problème" est que ces dernières n'ont généralement pas attendu les processeurs 64 bits en exploitant les mêmes services offerts cette fois par les processeurs 32bits augmentés d'extensions telles que MMX , 3DNow ou encore SSE . SSE par exemple va même encore plus loin en permettant de combiner plusieurs opérations arithmétiques sur deux entiers de 128 bits en une seule opération. Ainsi un encodage en MP3 avec un outil comme lame, ne gagne absolument rien lors d'un passage en 64 bits. De même pour un chiffrement avec OpenSSL. Ceci dit, certaines applications scientifiques comme Mapple ont été rapportées comme étant prés de deux fois plus rapide sur une architecture 64bits.
Du coup, si l'on s'arrêtait là, il paraîtrait fondé de considérer le 64bits comme un gadget n'apportant rien de plus que SSE mais en utilisant beaucoup plus de mémoire. Et c'est au fond logique car ce n'est pas plus l'architecture 64 bits qui est plus rapide que la distribution 64 bits elle-même.
Pour comprendre, prenons l'exemple de la Mandriva. Lorsque vous utilisez la version étiquetée i586, tous les binaires qu'elle contient sont compatibles avec le vénérable Pentium. En somme tout tournerait sans modification aucune sur une machine vielle de 10 ans. La conséquence en est que toutes les évolutions sur l'architecture des processeurs qui ont eu lieu en 10 ans, et qui se retrouvent concentrées dans la puce qui anime sûrement votre PC, sont purement et simplement ignorées par la majorité des applications, et cela va bien au delà d'une simple histoire de taille de bus.
Sous cet angle, le véritable intérêt d'une distribution 64 bits devient évident. Nous avons là une rupture de la compatibilité ascendante. Le code d'une distribution i86_64 ne tournera QUE sur des processeurs ultra-récente et exploitera donc 100% de leurs caractéristiques. Pour faire simple, c'est une peu comme si vous aviez une Mandriva ou une Debian aussi optimisée sur un intel Core 2 Duo que peut l'être une Gentoo qui aurait été spécifiquement compilée pour ce processeur.
De ceci découle une accélération quasi mécanique des applications qui même si n'atteignant pas le x2 de la légende, reste très intéressante. Sur un chapitre clairement plus subjectif, celui de mon expérience personnelle :
Mais ne s'agissant là que de mon ressenti personnel et portatif, prenons maintenant quelques exemples de la vraie vie qui ne sont en aucun cas un benchmark formel :
| Application | Accélération |
|---|---|
| oggenc | 25% |
| DV->AVI (mencoder/libavcodec) | 23% |
| Gecko/javascript | 12% |
| Gecko/dhtml | 11% |
| gtkperf | 36% |
Là c'est tout de même un peu moins subjectif...
L'argument 64 bits c'est le futur
n'a jamais eu aucun sens, et ce même s'il est clair que plus ce type d'architecture sera utilisée, plus les distributions correspondantes seront rodées.
Maintenant de manière la plus objective possible, il est difficile de contester un gain réel de vitesse pour une migration qui se fait finalement sans douleur. L'installation de Mandriva 2009 i86_64 coule sans le moindre accroc, flash compris, et depuis je l'utilise comme la précédente. Reste donc le seul problème de la mémoire qui peut devenir rédhibitoire pour les applications très gourmandes, notamment celles issues des mondes .Net et Java. Maintenant à chacun de voir si je jeu vaut l'achat d'une nouvelle barrette.
- répondre
chicha , le 17 November, 2008 - 15:52Merci pour cet article !
j'aime beaucoup et ça a répondu à pas mal de mes questions
- répondre
Dab, le 17 November, 2008 - 18:04Très intéressant merci.
Je verrais bien un petit script qui testerait diverses ressources d'une distrib pour se faire une idée des "performances" de celle-ci ...
- répondre
Ulhume, le 17 November, 2008 - 19:53@chicha c'est fait pour ça, mais su je dis des conneries, ça m'intéresse aussi
- répondre
Ulhume, le 17 November, 2008 - 19:56@Dab Yep ça pourrait être intéressant mais d'un autre côté cela ne devrait logiquement pas différer des masses. Sur l'article que j'ai cité en intro il y a un lien vers un bench sur Fedora avec des résultats qui peuvent s'apparenter aux miens.
Maintenant moi ce qui me trouble c'est ce test là : http://www.phoronix.com/scan.php?page=article&item=ubuntu_macosx&num=1
MacOS est en 64 depuis un certains temps déjà, et la comparaison avec Ubuntu (aka debian skinnée) est assez triste à regarder.
En d'autres termes, c'est bien d'optimiser mais j'ai le sentiment que Linux a un problème de fond et je subodore qu'il n'est pas loin de la raison qui a failli faire naître un fork "desktop" dans le kernel.
- répondre
scorpio810 , le 17 November, 2008 - 20:12enfin je suis content de voir que les mentalitées changent !
on passait pour des extraterrestres il y à encore 2 ans en arrières avec nos debian sid 64 bits
des vieux tutos de l'époque des croisades
http://generation-debian.org/scorpio/
sinon tres bon article Ulhume comme d'habitude
- répondre
Dab, le 17 November, 2008 - 23:20Bon oublie ce que j'ai dis à propos du script les leurs sont exactement ce à quoi je pensais:) merci
- répondre
Emmanel , le 18 November, 2008 - 01:00Toujours très bien ces articles, merci. Bien qu'on ne soit toujours pas renseigné exactement sur le jaunissement des dents !
- répondre
Ulhume, le 18 November, 2008 - 01:06@Emmanuel Effectivement c'est un grave manquement mais je n'ai pas réussi à trouver de preuves prouvant le contraire
- répondre
gronono, le 18 November, 2008 - 04:57Bonjour Ulhume,
Merci pour cette excellent article (comme d'habitude).
Est-ce que tu as testé un plugin Java pour Firefox en architecture x86_64 sous GNU/Linux ? Il me semblait que Sun n'en fournissait pas. Mais peut-être que ça changé.
Pour l'instant je reste en 32bits uniquement pour les plugins Flash (plus pour longtemps) et Java de Firefox.
Je crois qu'il y a un problème dans la dernière phrase de l'article : "Maintenant à chacun de voir si je jeu vaut l'achat d'une nouvelle barrette."
- répondre
Ulhume, le 19 November, 2008 - 09:20@gronono
J'ai rajouté un chapitre sur ce sujet. En gros, java tourne très bien en 64 bits via openjdk.
- répondre
Renault , le 19 November, 2008 - 15:16Je suis ravis de voir que mon article ait suscité ce genre de réaction positive.
Je voulais juste dénoter, certes l'argument « c'est le futur » n'a pas réellement de sens pur. Seulement comme le 64 bits ne pose aucun problème pour des configurations actuelles ou dans l'usage, je pense qu'il est ridicule de vouloir rester en 32 bits et contrer l'évolution. Car comme tu l'as souligné, plus vite le 64 bits s'installera, plus vite on peut espérer que les éditeurs propriétaires ou mêmes des logiciels libres se mettent à exploiter les capacités du 64 bits et améliorer plus considérablement les performances.
Je pense qu'il est ridicule de jouer contre une évolution inéluctable sauf si c'est problématique derrière mais ici ça ne l'est pas vraiment. C'est ce sens que je sous entendais dans mon billet et j'espère que cette « argumentation » soit plus valable que celle que j'ai donné rapidement.
- répondre
chicha , le 19 November, 2008 - 15:20Juste un petit commentaire sur le blog : j'essaye de me désinscrire de la notification de réponse à mon commentaire sur ce post, en suivant le lien adéquat qui m'est proposé dans la notification par mail, mais ça ne marche pas.
Un petit bug ?
- répondre
Ulhume, le 19 November, 2008 - 16:07@chicha
Tu peux me forwarder le mail à ?
- répondre
Ulhume, le 19 November, 2008 - 16:17@Chicha peux-tu re-essayer, j'ai corrigé le bug dans le module de notification (et prévenu son auteur). Selon mes tests cela devrait fonctionner (n'oublie pas de me forwarder le mail pour que je vérifie).
- répondre
chicha , le 19 November, 2008 - 16:28Je viens de cliquer sur le lien pour me désabonner (et j'ai décoché la case "je veux suivre cette conversation" en postant ce post
).
Post un coup pour voir si je suis notifié
(chapeau pour ta réactivité ! )
- répondre
Ulhume, le 19 November, 2008 - 16:33Je poste (désolé pour les autres
- répondre
chicha , le 19 November, 2008 - 17:12Nickel, j'ai rien reçu (désolé pour le dérangement) !
Merci beaucoup
A bientôt sur un autre post !
- répondre
Djory , le 17 December, 2008 - 08:36Un peu hors sujet par rapport au post mais tu parles du JDK Sun ainsi que de l'OpenJDK.
Pour avoir cherché récemment, je n'ai pas trouvé beaucoup d'info sur leurs différences (mise à part l'implémentation libre de certaines classes).
Surtout, je n'ai pas réussi à trouver quel sera leurs évolutions (techniques mais aussi légales par rapport aux droits d'utilisations) l'un par rapport à l'autre pour Java7 et plus (fin du JDK Sun? JDK Sun qui deviendra libre d'utilisation? ...)
Si je pose la question, c'est parce que nous (enfin mon entreprise) doit payer Sun car nous vendons un produit en Java et donc nécessitant l'utilisation de la JVM. Cela semble obligatoire et écrit dans le contrat d'utilisation lors de l'installation du JDK (pourquoi pas, je ne suis pas allé vérifier). La question se pose donc pour Java7 : l'utilisation sera-t-elle "payante" ou faudra-t-il migrer vers OpenJDK7 ?
J'espère que j'ai été assez clair...
- répondre
bochecha , le 19 December, 2008 - 14:40Par rapport à Flash, il existe swfdec en libre qui fonctionne bien mieux que gnash, et utilise le moteur gstreamer.
Sinon, tu parles de nspluginwrapper comme d'une "passerelles entre le monde 32 bits du plugin fournit par Adobe et celui, natif, du navigateur."
Le rôle de nspluginwrapper est tout autre. En effet, celui-ci permet de "sortir" le plugin (flash ou autre) du navigateur en le faisant tourner dans un processus séparé (npviewer.bin).
Quel intérêt ?
1. avec un plugin défectueux (flash 9 par exemple
), en cas de crash du plugin, le navigateur reste totalement fonctionnel.
2. un outil tel que SELinux peut être utilisé pour confiner le plugin et donc l'empêcher d'écrire tout et n'importe quoi (particulièrement intéressant pour un plugin dont on ne maitrise pas le code source comme Adobe Flash ou Adobe PDF)
3. enfin, c'est cela qui permet à un navigateur 64 bits de lancer un plugin 32 bits, puisqu'il va en fait lancer un nouvel exécutable (ce n'est donc qu'une conséquence et pas le but originel)
Sinon, je vois difficilement en quoi cela n'est pas satisfaisant. Je l'utilise au contraire depuis 6 mois (avec swfdec 64 bits, donc sans nécessité de la "passerelle"), et je dois dire que je n'ai senti absolument aucune différence par rapport à si je ne l'avais pas eu. Vu ce que ça apporte, je suis pas prêt de le supprimer
- répondre
Ulhume, le 19 December, 2008 - 17:29@bochecha J'avoue ne pas avoir retesté ni swfdec, ni gnash depuis un certain temps et à l'époque je n'avais pas eu que d'heureux résultat. Content de voir que ça évolue dans le bon sens, il faudrait que je reteste, ne serait-ce que pour comparer les perfs sur un CPU Atom ou Flash10 rame pas mal.
Pour ce qui est de nspluginwrapper, je ne savais pas, merci pour l'info
Maintenant j'avoue que je ne dois pas avoir la même sensibilité au sujet des plugins. Ce que je ne trouve pas satisfaisant, c'est d'ajouter une couche alors qu'à priori mon navigateur fonctionne assez bien en s'en passant. C'est juste ce que je voulais dire.
- répondre
bochecha , le 19 December, 2008 - 17:51Pour le coup de la couche, on est d'accord, sapu.
En revanche, séparer le processus du plugin de celui du navigateur est vraiment intéressant.
/me se demande quand Firefox et Epiphany feront ça sans nspluginwrapper...
- répondre
Ulhume, le 19 December, 2008 - 19:24@bochecha
je me posais la même question, cela irait bien dans le sens d'un "sand box" pour les clients riches (javafx, moolight, & co).- répondre
Geek Hippie , le 25 December, 2008 - 20:05Sur mon ancien proco, un Athlon 64 3000+, le passage au 64bit rendait la machine compatible HD 1080
Mais il paraîtrai que l'accélération due au passage au 64bit serait moindre sur un core2duo (je peux pas confirmer, j'ai directement installé mon nouveau pc en amd64)
Poster un nouveau commentaire