OVH Cloud OVH Cloud

De l'utilité du 64 bit sous Linux

204 réponses
Avatar
Nanar Duff
Bonjour,


j'aimerais avoir des avis (plus ou moins) objectifs concernant Linux et
les machines 64 bits, et, d'une manière général, sur les machines 64 bits.


Tout d'abord, si j'ai bien compris l'avantage du 64 bit, c'est de faire
passer les registres du prcesseur de 32 à 64 bits. Ca peut sembler être
une Lapalissade, mais c'est bon de le préciser. Donc, le (seul ?)
avantage du 64 bits pour les application ne demandant pas de calculs
avec des chiffres (relativement) enorme, c'est l'augmentation de
l'espace d'addressage ? Le terme "64 bits" ne serait donc qu'une astuce
marketing ?


De plus, il faut en toute logique que les applications soit compilées
par un gcc en "mode 64bits" (?): ce mode "est il au point" ? Ne
change-t-il vraiment rien d'autre que quelques broutilles concernant
l'addressage ?

Si le prémice du paragraphe précédent est correct, existe-t-il beaucoup
d'applications Linux compatible 64bits ? Une liste existe-t-elle ?
Enfin, est-il possible d'émuler des applications 32 bits sur un kernel
"compilé en mode 64 bits", et cela ralentit-il l'application ? Notez que
je préferrerais utiliser Debian (ma station de travail actuelle en 32
bits), mais qu'en est-il de l'avancement des distributions Linux par
rapport "au 64 bit" ?


Vous l'aurez compris,si je post ici et maintenant ce message, c'est pour
me décider à l'achat d'un futur et hypothètique ordinateur portable. Je
pensais me porter vers un Intel Core 2 Duo. Quelques remarques par
rapport à ce type de processeur ?

Pour finir, je tiens à préciser que je n'ai trouvé que des sujets (pas
tellement réjouissant) datant de 2004/2005/2006 sur internet, très peu
de (fin) 2007.


Nanar Duff.

10 réponses

Avatar
talon
JKB wrote:

Non, je dis simplement qu'on traîne un truc idiot pour raison de
compatibilité et qu'on paie cette compatibilité. Et qu'en cela le
fait de dire que le code obtenu n'est pas deux fois plus gros est
une argutie.


Compacter le code au maximum, à la x86, a au moins l'utilité de fourrer un
maximum de code dans le cache, même si aprés il va être décodé,
transformé en instructions RISC, pipeliné je ne sais pas comment dans le
processeur. Or tout le monde peut constater que les effets de cache sont
très importants sur la vitesse de calcul. Dès qu'on dépasse la taille du
cache on a un ralentissement important et très visible.


Mon énoncé était très clair. Sur une machine de calcul faisant
tourner de quatre à six threads _simultanément_, une SS20 avec 2
SM71 est bien plus lente qu'une U1E/140, machines qui sont de
puissance de calcul par ailleurs égales. Et cette comparaison n'a
d'objet que lorsqu'on fait tourner plus de threads que de
processeurs. Cela permet de voir l'overhead rajouté par la gestion
multipro (contre l'overhead rajouté par le multitâche).



L'overhead spécifiquement multiproc, il est
-dans le scheduler, mais je croyais que Linux avait des queues de
processus runnables par processeur, ce qui devrait rendre le coût assez
négligeable. Evidemment si on fait des changements de contexte incessants,
ça peut coûter.
-et au niveau matériel, avec les invalidations de cache multiprocs. Là
aussi je cryais que les processeurs modernes avaient du "cache snooping"
pour diminuer ce coût.

Toujours est-il que sur des programmes que j'ai fait j'ai vu des
performances multipliées sensiblement par 2 sur un biproc en utilisant
des threads tournant en parallèle. Evidemment chacun d'entre eux fait un
boulot conséquent et je ne m'amuse pas à découper un petit calcul en
deux, style vectorisation automatique, parceque ça, ça coute
effectivement la peau des fesses.

Si tu veux voir un exemple publié de performances multithreadés sur un
octoprocesseur, avec mysql:
http://people.freebsd.org/~kris/scaling/scaling.png
on voit bien que l'optimum est obtenu avec 8 threads sur 8 processeurs
et n'est pas si différent de 8 fois la performance à un thread. Au delà
on tombe sur les inefficacités de trop de threads, coûts de scheduler,
coûts de locks, etc.
J'ai vu un truc similaire avec Bind.


JKB



--

Michel TALON

Avatar
Nicolas George
JKB , dans le message , a
écrit :
Mais oui (en supposant que j'ai réussi à comprendre ta phrase)...
Tes connaissances de machines séquentielles me font sourire.


Mais oui.

Ah bon ? De quoi parles-tu dans ce cas ?


Du x86_64 en mode 64 bits et en mode 32 bits. Il y a compatibilité
ascendante en mode 32 bits, mais pas en mode 64 bits. Rien n'imposait de
garder les mêmes schémas d'opcodes en mode 64 bits.

Au niveau processeur, si. Les caches sont _séparés_.


Mais dans ce cas, le cache d'instructions est en général nettement plus
petit.

Reste dans ton monde. C'est toi qui dit "pour certains calculs", pas
moi.


Bon, on va s'y prendre autrement : tu as sorti cet exemple dont je conteste
la pertinence pour prouver, ou au moins illustrer, un propos. Saurais-tu
énoncer précisément l'affirmation que l'exemple est censé illustrer ?

Avatar
remy
ah bien merde alors et au faite l'on parle de quoi ?
d'alu ,de registre ,de timer ,de pipe-line, de quoi


On parle de vrais programmes qui font des choses. Si un jour tu sais manier
poll() et gettimeofday(), peut-être que tu comprendras.
bingo



http://www710.univ-lyon1.fr/~jciehl/Public/MAN/man2/gettimeofday.2.html


Dans ce cas, on suppose que l'horloge CMOS de la machine est configurée
sur le temps local, et que l'on doit l'augmenter de cette valeur pour
obtenir
le temps UTC

horloge CMOS == horloge temps reel

bisous ma puce :-)

remy


Avatar
Nicolas George
remy , dans le message <fedhtt$g6$, a écrit :
suis désolé mais les appels system je ne les connais pas tous
se qui serait intéressant c'est de voir se qu'il y a derrière


Non, il n'y a pas besoin de savoir ce qu'il y a derrière pour constater
qu'il faut de l'arithmétique au delà de 32 bits pour les utiliser
confortablement.

Et merci de poster en français.

Avatar
talon
remy wrote:
sur le meme ordi ?
avec un code compiler pour du 32 bit et le meme programme
compiler pour du 64 bit avec le meme calcul

Oui, le même ordi, sur lequel est installé le maple 32 bits et le maple

64 bits, et le même calcul.



remy


--

Michel TALON

Avatar
Nicolas George
remy , dans le message <fedi9c$g6$, a écrit :
Dans ce cas, on suppose que l'horloge CMOS de la machine est configurée
sur le temps local, et que l'on doit l'augmenter de cette valeur pour
obtenir
le temps UTC

horloge CMOS == horloge temps reel


On se fout de l'horloge CMOS quand on programme une application. Encore une
fois, tu prouves que tu n'as rien compris.

Avatar
JKB
Le 08-10-2007, à propos de
Re: De l'utilité du 64 bit sous Linux,
Nicolas George écrivait dans fr.comp.os.linux.debats :
JKB , dans le message , a
écrit :
Mais oui (en supposant que j'ai réussi à comprendre ta phrase)...
Tes connaissances de machines séquentielles me font sourire.


Mais oui.

Ah bon ? De quoi parles-tu dans ce cas ?


Du x86_64 en mode 64 bits et en mode 32 bits. Il y a compatibilité
ascendante en mode 32 bits, mais pas en mode 64 bits. Rien n'imposait de
garder les mêmes schémas d'opcodes en mode 64 bits.


Si. Il y a une raison fondamentale qui t'échapppe.

Au niveau processeur, si. Les caches sont _séparés_.


Mais dans ce cas, le cache d'instructions est en général nettement plus
petit.


Et alors ? On peut _toujours_ doubler sa taille, même s'il est
petit, et ton argument tombe de lui-même.

Reste dans ton monde. C'est toi qui dit "pour certains calculs", pas
moi.


Bon, on va s'y prendre autrement : tu as sorti cet exemple dont je conteste
la pertinence pour prouver, ou au moins illustrer, un propos. Saurais-tu
énoncer précisément l'affirmation que l'exemple est censé illustrer ?


L'argument est simple. À puissance de calcul équivalente, une
machine bipro est plus mauvaise qu'une monopro, c'est tout et ça ne
va pas plus loin.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.


Avatar
remy
Dans ce cas, on suppose que l'horloge CMOS de la machine est configurée
sur le temps local, et que l'on doit l'augmenter de cette valeur pour
obtenir
le temps UTC

horloge CMOS == horloge temps reel


On se fout de l'horloge CMOS quand on programme une application. Encore une
fois, tu prouves que tu n'as rien compris.
mais oui mais oui tu vient de dire une connerie



Avatar
Nicolas George
JKB , dans le message , a
écrit :
Si. Il y a une raison fondamentale qui t'échapppe.


Je t'écoute...

Et alors ? On peut _toujours_ doubler sa taille, même s'il est
petit, et ton argument tombe de lui-même.


Doubler la taille, ça coûte aussi.

L'argument est simple. À puissance de calcul équivalente, une
machine bipro est plus mauvaise qu'une monopro


Très bien. Eh bien je dis : si elle est plus mauvaise, c'est qu'elle n'a pas
la même « puissance de calcul », pour toute définition vaguement pertinente
de ce terme.

Avatar
Nicolas George
remy , dans le message <fedj4b$vo$, a écrit :
mais oui mais oui tu vient de dire une connerie


Non. D'ailleurs, tu serais bien incapable de trouver une seule application
utilisant l'horloge CMOS pour programmer un réveil à un instant particulier.