
                                Linux SMP HOWTO

David Mentr, David.Mentre@irisa.fr

   v1.9, 13 janvier 2000
     _________________________________________________________________

   _Ce HOWTO passe en revue les principaux problmes et leurs solutions
   lis la configuration et  l'emploi d'un systme SMP sous Linux._
     _________________________________________________________________

1. Introduction

   Linux fonctionne sur les machines SMP (Symetric Multi-Processors). Le
   support SMP fut introduit dans la version 2.0 du noyau et a t
   largement amlior depuis. La gestion est beaucoup plus fine dans la
   srie 2.2.x que dans la 2.0.x, d'o de meilleures performances lorsque
   les processus font appel au noyau !

   HOWTO maintenu par David Mentr ( David.Mentre@irisa.fr). La dernire
   version de ce HOWTO peut tre obtenue 
     * http://www.irisa.fr/prive/mentre/smp-howto/ (France)
     * http://www.phy.duke.edu/brahma/smp-faq/ (USA)

   Si vous voulez contribuer  ce HOWTO, je prfre les diffs SGML
   version de ce document, mais toute remarque (en texte pur) sera
   grandement apprci. Si vous m'envoyez un e-mail  propos de ce
   document, insrez s'il vous plat un tag tel [Linux SMP HOWTO] dans le
   champ Suject: de votre e-mail. a m'aide  trier automatiquement mon
   courrier (et vous recevrez une rponse plus rapide ;)).

   Ce HOWTO reprend et enrichit first draft crit par _Chris Pirih_.

   Toutes les informations contenues dans ce HOWTO sont fournies "tel
   que". Toute garantie explicite, implicite ou lgale, concernant
   l'exactitude de l'information, de la convenance  quelque usage
   particulier est par la prsente spcifiquement dcline. Alors que
   tous les efforts ont t faits pour assurer l'exactitude des
   informations contenues dans ce HOWTO, les auteurs n'assument aucune
   responsabilit pour les erreurs, omissions ou dommages rsultant de
   l'utilisation des informations contenues dans ce document.

2. Questions indpendantes de l'architecture.

2.1 Ct noyau

    1. _Linux supporte-t-il les threads multiples ? Si je lance deux ou
       plusieurs processus, seront-ils rpartis entre les diffrents
       processeurs disponibles ?_
       Oui. Les processus et les threads du noyau sont rpartis entre les
       processeurs. Ceux de l'espace utilisateur ne le sont pas.
    2. _Quelles sont les architectures SMP supportes ?_

        _D'aprs Alan Cox :_
                Les versions 2.0 du noyau supportent les systmes SMP de
                type hypersparc (SS20, etc...) et Intel 486, Pentium ou
                machines suprieurs compatible avec la norme Intel
                MP1.1/1.4. _Richard Jelinek_ ajoute : jusqu' prsent,
                seul des systmes ne comprenant pas plus de 4 processeurs
                ont t tests. La spcification MP (et donc Linux)
                autorise thoriquement jusqu' 16 processeurs.

                Le support SMP pour les architectures UltraSparc,
                SparcServer, Alpha et PowerPC est disponible dans le
                2.2.x.

        _De Ralf Bchle :_
                MIPS, m68k et ARM ne grent pas le SMP; les deux derniers
                ne le supporteront probablement jamais.

                Ceci tant, je ferai un hack pour MIPS-SMP ds que
                j'aurais une machine SMP...

    3. _Comment construire un noyau Linux grant le SMP ?_
       La plupart des distributions ne fournissent pas un noyau adapt au
       SMP. Vous devrez donc en faire un vous mme. Si vous n'avez encore
       jamais compil de noyau, voila une excellente occasion
       d'apprendre. Expliquer comment compiler un nouveau noyau dpasse
       le cadre de ce document; prfrez-vous au Linux Kernel Howto pour
       de plus amples informations (_C. Polisher_). Dans la srie 2.0
       jusqu' la version 2.1.132 exclue du noyau, dcommentez la ligne
       SMP=1 dans le Makefile principal (/usr/src/linux/Makefile).
       Dans la version 2.2, configurez le noyau et rpondez "oui"  la
       question "Symetric multi-processing support" (_Michael Elizabeth
       Chastain_).
       Autorisez l'horloge temps rel en cochant l'option "RTC support"
       (_Robert G. Brown_). Notez qu'inclure le support RTC, en ralit,
       pour autant que je sache, n'empche pas le problme connu de la
       drive de l'horloge avec le SMP : activer cette fonctionnalit
       avertit en cas de lecture de l'horloge au dmarrage. Une note de
       _Richard Jelinek_ signale aussi qu'activer "Enhandced RTC" est
       ncessaire pour activer le deuxime processeur (identification)
       sur certaines cartes mre Intel exotiques.
       Enfin, sur plate-forme Intel, N'ACTIVEZ PAS l'option APM (Advanced
       Power Management)! APM et SMP sont incompatibles et votre systme
       plantera certainement (ou du moins probablement ;)) au dmarrage
       si APM est activ (_Jakob Oestergaard_). _Alan Cox_ le confirme :
       dsactivez APM pour les machines SMP en 2.1.x. En gros le
       comportement APM est indfini en prsence de systmes SMP et tout
       peut arriver. Toujours sur plate-forme Intel, activez "MTRR
       (Memory Type Range Register) support". Certains BIOS sont
       dfectueux et n'activent pas la mmoire cache du second
       processeur. Le support MTRR contient le code pour y remdier.
       Vous devez reconstruire votre noyau et vos modules quand vous
       passez en SMP et quand vous changez de mode SMP. N'oubliez pas
       d'effectuer un make modules et un make modules_install (_Alan
       Cox_).
       Si vous obtenez des erreurs au chargement des modules, vous n'avez
       probablement pas rinstall vos modules. Nanmoins, avec quelques
       noyaux 2.2.x, certains ont rapport des problmes lors de la
       recompilation d'un noyau SMP en noyau UP (Uni-Processeur). Afin de
       rsoudre cela, sauvegardez votre fichier .config, et faites un
       _make mrproper_, restaurez votre fichier _.config_ et recompilez
       votre noyau (_make dep_, etc...) (_Wade Hampton_). N'oubliez pas
       de relancer lilo aprs avoir recopi votre nouveau noyau.
       Rcapitulation :
         _____________________________________________________________

make config # ou menuconfig ou xconfig
make dep
make clean
make bzImage # ou ce que vous voulez
# copiez l'image du noyau manuellement puis RELANCER LILO
# ou make lilo
make modules
make modules_install
         _____________________________________________________________

    4. _Comment compile-t-on un noyau Linux non-SMP ?_
       Dans la srie 2.0, _commentez_ la ligne SMP=1 dans le Makefile
       principal (/usr/src/linux/Makefile).
       Pour la srie 2.2, configurez le noyau et rpondez "no"  la
       question "Symmetric multi-processing support" (_Michael Elizabeth
       Chastain_).
       Vous devez absolument recompiler votre noyau et ses modules pour
       activer ou dsactiver le mode SMP. N'oubliez pas de faire make
       modules, make modules_install et de relancer lilo. Voyez les notes
       plus haut sur les problmes de configuration possibles.
    5. _Savoir si a marche_
 cat /proc/cpuinfo
       Sortie typique (bi-PentiumII):
         _____________________________________________________________

processor       : 0
cpu             : 686
model           : 3
vendor_id       : GenuineIntel
[...]
bogomips        : 267.06

processor       : 1
cpu             : 686
model           : 3
vendor_id       : GenuineIntel
[...]
bogomips        : 267.06
         _____________________________________________________________

    6. _Statut de la migration du noyau vers un verrouillage fin et le
       multithreading ?_
       La version 2.2 du noyau possde une gestion des signaux, des
       interruptions et de quelque E/S  verrouillage fin (fine grain
       locking). Le reste est en cour de migration. En mode SMP,
       plusieurs processus peuvent tre ordonnancs simultanment.
       Les noyaux 2.3 (futur 2.4) possdent vraiment des verrous noyaux
       fins. Dans la srie des noyaux 2.3 l'usage des gros blocages noyau
       a tout simplement disparu. Tous les sous-systmes majeurs du noyau
       Linux sont compltement cods avec des threads : rseau, VFS, VM,
       ES, block/pages de cache, ordonnancement, interruptions, signaux,
       etc... (_Ingo Molnar_)
    7. _Linux SMP supporte-t-il les affinits processeur ?_

        _Noyaux standard_
                Oui et non. Il n'est pas possible de forcer l'assignation
                d'un processus  un processeur spcifique mais
                l'ordonnanceur Linux possde un parti-pris pour chaque
                processus qui tend  conserver les processus attachs 
                un processeur spcifique.

        _Noyau patch_
                Oui. Voir PSET - Processor Sets for the Linux kernel:

     Ce projet a pour but d'offrir une version compatible au niveau
     sources et fonctionnalits de pset (tel que dfini par SGI -
     partiellement retir de leur noyau 6.4 IRIX) pour Linux. Cela
     autorise les utilisateurs  dterminer sur quel processeur ou
     ensemble de processeurs un processus peut tourner. Les utilisations
     possibles incluent l'assignement de thread  des processeurs
     distincts, la synchronisation, la scurit (un processeur ddi 
     `root') et srement davantage encore.

                Nous nous sommes attachs  concentrer toutes les
                fonctionnalits autour de l'appel systme sysmp(). Cette
                routine accepte un certain nombre de paramtres qui
                dterminent la fonctionnalit requise. Ces fonctions
                comprennent:

               o affecter un processus/thread  un processeur spcifique;
               o interdire un processeur d'excuter certains processus;
               o empcher strictement l'utilisation d'un processeur;
               o assigner  un processeur un _unique_ processus (et ses
                 fils);
               o information sur l'tat du processeur;
               o crer/supprimer un ensemble de processeurs, sur lesquels
                 les processus peuvent tre limits

    8. _A qui rapporter les bogues SMP ?_
       Signalez s'il vous plat les bogues  linux-smp@vger.rutgers.edu.
    9. _A propos des performances SMP_
       Si vous voulez mesurer les performances de votre systme SMP, vous
       pouvez essayer les tests de Cameron MacKinnon, disponibles 
       http://www.phy.duke.edu/brahma/benchmarks.smp.

2.2 Ct utilisateur

    1. _Ai-je vraiment besoin de SMP ?_
       Si vous vous le demandez, vous n'en avez probablement pas besoin.
       :) En gnral les systmes multiprocesseurs offrent de meilleurs
       performances que les systmes monoprocesseurs, mais pour obtenir
       un gain quelconque vous devez considrer bien d'autres facteurs
       que le seul nombre de processeurs. Par exemple, sur un systme
       donn, si le processeur est en gnral inactif, la plupart du
       temps  cause d'un disque dur lent, alors le systme est bloqu au
       niveau des entres/sorties ("input/output bound"); il ne
       bnficiera probablement pas de la puissance d'un processeur
       supplmentaire. Si, d'un autre cot, un systme doit excuter
       beaucoup de processus simultanment et que l'utilisation
       processeur est trs forte, alors vous tes susceptible d'amliorer
       les performances de votre systme. Les disques dur SCSI peuvent
       tre trs efficaces en utilisation avec plusieurs processeurs. Ils
       peuvent grer plusieurs commandes simultanment sans immobiliser
       le processeur (_C. Polisher_).
    2. _Obtient-on les mmes performances avec un biprocesseur 300 MHz
       qu'avec un processeur 600 MHz ?_
       Tout dpend de l'application, mais gnralement non. Le SMP
       implique quelques "frais de gestion" absents d'une machine
       monoprocesseur. (_Wade Hampton_). :)
    3. _Comment afficher les performances de plusieurs processeurs ?_
       Grce  _Samuel S. Chessman_, se ici trouvent quelques utilitaires
       pratiques :

        _Character based:_
                http://www.cs.inf.ethz.ch/~rauch/procps.html

                En gros, il s'agit de procps v1.12.2 (top, ps, et. al.)
                et de quelques patches pour le support SMP.

                Pour les 2.2.x, _Gregory R. Warnes_ a rendu disponible un
                patch  http://queenbee.fhcrc.org/~warnes/procps

        _Graphique:_
                xosview-1.5.1 supporte le SMP, les noyaux suprieurs au
                2.1.85 (inclus) et l'entre cpuX dans le fichier
                /proc/stat.

                Page d'accueil officielle pour xosview :
                http://lore.ece.utexas.edu/~bgrayson/xosview.html

                Vous ici trouverez une version patche par _Kumsup Lee_
                pour les noyaux 2.2.p :
                http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz

                Les diffrents patches noyau de Forissier sont
                disponibles  :
                http://www-isia.cma.fr/~forissie/smp_kernel_patch/

       Nanmoins, vous ne pouvez pas contrler l'ordonnancement de faon
       prcise avec xosview car ce dernier le perturbe (_H. Peter
       Anvin_).
    4. _Comment autoriser plus d'un processus lors de la compilation du
       noyau ?_
       Utiliser :
         _____________________________________________________________

        # make [modules|zImage|bzImages] MAKE="make -jX"
        o X = nombre maximum de processus.
        Notez que a ne marche pas avec "make dep".
         _____________________________________________________________

       Avec un noyau 2.2, rfrez vous au fichier
       /usr/src/linux/Documentation/smp.txt pour des instructions
       prcises.
       Par exemple, comme lancer de multiples compilateurs autorise une
       machine avec suffisamment de mmoire  utiliser le temps
       processeur autrement perdu durant les dlais causs par les E/S,
       make MAKE="make -j 2" -j 2 aide rellement mme sur les machines
       monoprocesseurs. (de _Ralf Bchle_).
    5. _Pourquoi le temps donn par la commande time est-il erron ?_ (de
       _Joel Marchand_)
       Dans la srie des 2.0, le rsultat de la commande time est faux.
       La somme utilisateur+systme est juste *mais* 'l'tendue' entre le
       temps utilisateur et le temps systme est faux.
       Plus prcisment : "tout le temps pass sur un processeur autre
       que celui de dmarrage est comptabilis comme temps systme. Si
       vous chronomtrez un programme, ajoutez le temps utilisateur et le
       temps systme. Votre mesure sera alors correcte,  ceci prs
       qu'elle inclura aussi le temps systme qui restera  dcompter"
       (_Jakob stergaard_).
       Ce bogue est corrig dans les versions 2.2.

2.3 Programmation SMP

   Section par _Jakob stergaard_.

   Cette section a pour but de signaler ce qui fonctionne et ce qui ne
   fonctionne pas quand il s'agit de programmer des logiciels avec des
   threads pour Linux SMP.

  Mthodes de paralllisation

    1. threads POSIX (POSIX Threads)
    2. PVM / MPI Message Passing Libraries
    3. fork() -- Processus multiples

   Comme ni fork() ni les processus PVM/MPI ne partagent gnralement la
   mmoire, mais communiquent au moyen d'IPC ou d'une API de messagerie,
   ils ne seront pas dcrits davantage dans cette section. Ils ne sont
   pas vraiment spcifiques  SMP, puisqu'ils sont tout autant employs -
   sinon plus - avec des ordinateurs monoprocesseurs et des clusters.

   Seuls les threads POSIX fournissent des threads multiples partageant
   certaines ressources telles la mmoire. Cette proprit des machines
   SMP autorise plusieurs processeurs  partager leur mmoire. Pour
   employer deux (ou plus ;) ) processeurs avec un systme SMP, utilisez
   une librairie de thread du noyau. Une bonne librairie LinuxThreads,
   une librairie de thread crite par Xavier Leroy est maintenant
   intgre avec la glibc2 (aka libc6). Les distributions Linux rcentes
   intgrent toutes cette librairie par dfaut. Vous n'avez donc pas 
   obtenir un paquetage spar pour utiliser les threads du noyau.

   Il existe des mises en oeuvre des threads (et thread POSIX) de niveau
   application qui ne tirent pas avantage des threads du noyau. Ces
   paquetages gardent le thread dans un seul processus et, partant, ne
   profitent pas du SMP. Nanmoins, elles sont bonnes pour beaucoup
   d'applications et ont tendance  tre plus rapides que les threads du
   noyau sur des systmes monoprocesseurs.

   Le multithreading n'a jamais t vraiment populaire dans le monde
   UN*X. Pour diverses raisons, les applications exigeant de multiples
   processus ou threads ont t pour la plupart crites en utilisant
   fork(). Donc, avec une approche de type threads, on rencontre des
   problmes d'incompatibilits et de non-adaptation aux thread des
   librairies, compilateurs et dbogueurs. GNU/Linux n'y fait pas
   exception. Esprons que les sections qui suivent apporteront quelques
   lumires sur ce qui est possible et sur ce qui ne l'est pas.

  La librairie C

   Les vieilles librairies ne sont pas sres au niveau des threads. Il
   est trs important que vous utilisiez la GNU libc (_glibc_), aussi
   connue sous le nom de _libc6_. Vous pouvez videmment utiliser des
   versions antrieurs, mais cela vous causera plus de problmes que
   mettre  jour votre systme. Enfin, probablement :)

   Si vous voulez utiliser GDB pour dboguer vos programmes, voyez plus
   bas.

  Langages, compilateurs et dbogueurs

   Il existe de nombreux langages de programmation disponibles pour
   GNU/Linux et beaucoup d'entre eux utilisent les threads d'une manire
   ou d'une autre. Certains langages comme Ada et Java incluent mme les
   threads dans les primitives du langage.

   Cette section, pour l'instant, ne dcrira que le C et le C++. Si vous
   avez une exprience de programmation SMP avec d'autre langages, merci
   de nous en faire part.

   Les compilateurs GNU C et C++, tout comme EGCS C et C++, fonctionnent
   avec le support thread de la librairie C standard (_glibc_). Il y a
   nanmoins quelques problmes :

    1. Quand vous compilez en C ou C++, incluez _-D_REENTRANT_ dans la
       ligne de commande du compilateur. Il est ncessaire d'activer
       certaines fonctions de gestion des erreurs telles celles relatives
        la variable errno.
    2. Quand vous utilisez C++, si deux threads rencontrent des
       exceptions simultanment, le programme retournera une erreur de
       segmentation. Le compilateur gnre un code d'exception inadapt
       aux threads. Une manire de contourner le problme consiste 
       mettre un pthread_mutex_lock(&global_exception_lock) dans le(s)
       constructeur(s) de chaque classe que vous throw() et  insrer le
       pthread_mutex_unlock(...) correspondant dans le destructeur. Ce
       n'est pas trs beau mais a marche. Cette solution a t fournie
       par _Markus Ferch_.

   Le dbogueur GNU _GDB_,  partir de la version 4.18, devrait prendre
   en charge les threads correctement. La plupart des distributions Linux
   comprennent une version patche de gdb qui gre les threads.

   Il n'est pas ncessaire de patcher la _glibc_ pour qu'elle fonctionne
   avec des threads. Si vous n'avez pas besoin de dboguer le logiciel
   (cela peut-tre vrai pour toutes les machines qui ne sont pas ddies
   au dveloppement), il n'y a pas besoin de patcher la _glibc_.

   Notez que les core-dumps ne sont d'aucune utilit quand vous utilisez
   des threads. D'une manire ou d'une autre, le core dump est attach au
   thread courant et non au programme tout entier. Aussi, pour dboguer
   quoi que ce soit, faites le depuis le dbogueur.

   _Astuce :_ si vous avez un thread qui perd la tte, se met  utiliser
   100% du temps CPU et que vous ne voyez pas pourquoi, voici une mthode
   lgante de trouver ce qui se passe : lancez le programme depuis la
   ligne de commande, sans GDB. Faites drailler votre thread. Utilisez
   _top_ pour obtenir le PID du processus. Lancez GDB tel que _gdb program
   pid_. GDB s'attachera lui-mme au processus dont vous avez spcifi le
   PID et arrtera le thread. Vous disposez maintenant d'une session GDB
   avec le thread incrimin et vous pouvez utiliser _bt_ ou d'autres
   commandes pour suivre ce qui se passe.

  Autres librairies

   _ElectricFence :_ cette librairie n'est pas sre du point de vue SMP.
   Il devrait nanmoins tre possible de la faire fonctionner dans un
   environnement thread en insrant des verrous dans son code source.

  Autres points concernant la programmation SMP

    1. _O puis-je trouver plus d'informations sur la programmation
       parallle ?_
       Voyez Linux Parallel Processing HOWTO
       Beaucoup d'informations utiles se trouvent sur Parallel Processing
       using Linux
       Voyez aussi Linux Threads FAQ
    2. _Existe-t-il des programmes ou des librairies utilisant les
       threads ?_
       Oui. Pour les programmes vous devriez regarder  Multithreaded
       programs on linux (j'adore les liens hypertextes, le saviez vous ?
       ;))
       En ce qui concerne les librairies :

        _OpenGL Mesa library_
                Grce  _David Buccarelli_, _andreas Schiffler_ et _Emil
                Briggs_, il existe une version multithread ( l'heure
                actuelle [1998-05-11], une version fonctionne et permet
                d'obtenir un accroissement de 5-30% avec certaines suites
                de test OpenGL). La partie multithread est maintenant
                incluse dans la distribution Mesa officielle comme une
                option exprimentale. Pour plus d'information, voyez Mesa
                library

        _BLAS_
                BLAS et FFTs optimiss Pentium pro pour Intel Linux

                Les routines multithread BLAS ne sont pas disponibles
                pour l'instant, mais une librairie multithread est prvue
                pour 1998-05-27, voir Blas News pour plus de dtails.

        _The GIMP_
                _Emil Briggs_, la mme personne qui est implique dans la
                version multithread de MESA, est aussi en train de
                travailler sur la version multithread des plugins de The
                Gimp. Voyez
                http://nemo.physics.ncsu.edu/~briggs/gimp/index.html pour
                plus d'info.

3. Questions spcifiques  l'architecture x86

3.1 Pourquoi cela ne marche-t-il pas avec ma machine ?

    1. _Puis-je utiliser le mode SMP avec un CPU Cyrix/AMD/non-Intel ?_
       _Rponse courte:_ non.
       _Rponse longue_ Intel rvendique la proprit sur les plan APIC
       SMP, et tant qu'une compagnie ne prend pas de licence d'Intel pour
       cela, ils ne peuvent pas l'utiliser. Aucune compagnie ne l'a fait
       pour l'instant. Cela peut videment changer dans le futur. A titre
       anecdotique, Cyrix et AMD adhrent au standard non-propritaire
       OpenPIC SMP mais actuellement il n'existe pas de carte mre
       l'utilisant.
    2. _Pourquoi mon vieux Compaq ne fonctionne-t-il pas ?_
       Mettez le en mode compatibilit MP1.1/1.4.
       Vrifiez "Configure Hardware" -> "View / Edit details" ->
       "Advanced mode" (F7 je pense) pour les options de configuration
       "APIC mode" et cochez "full Table mode". Il s'agit d'une
       recommandation officielle de Compaq (_Daniel Roesen_).
       _Adrian Portelli_ :
         1. Pressez F10 quand le serveur dmarre afin d'entrer dans
            l'utilitaire de configuration systme (System Configuration
            Utility)
         2. Pressez Entre pour effacer l'cran de dmarrage
         3. Pressez immdiatement CTRL+A
         4. Un message apparatra vous informant que vous tes maintenant
            en "Advanced Mode"
         5. Slectionnez ensuite "Configure Hardware" -> "View / Edit
            details"
         6. Vous verrez alors les rglages avancs (mlangs avec les
            rglages ordinaires)
         7. Descendez jusqu'au "APIC Mode" et slectionnez alors "Fully
            Mapped"
         8. Sauvegardez les changements et redmarrez
    3. _Pourquoi mon ALR ne fonctionne-t-il pas ?_
       De _Robert Hyatt_: ALR Revolution quad-6 semble  peu prs sre,
       alors que quelques machines Revolution quad plus vieilles sans
       processeurs P6 ne semble pas "fiables"...
    4. _Pourquoi ma machine SMP est-elle si lente ?_ ou _Pourquoi un
       processeur montre-t-il une valeur bogomips basse et pas l'autre ?_
       De _Alan Cox_: si un de vos processeurs rapporte une valeur
       bogomips trs basse, son cache n'est pas activ. Votre vendeur
       vous  probablement fournis un BIOS bogu. Obtenez un patch pour
       contourner cela ou mieux retournez la  votre vendeur et achetez
       une carte mre chez un fournisseur comptent.
       Un noyau 2.0 (> 2.0.36) contient un patch MTRR qui devrait
       rsoudre ce problme (slectionnez l'option "handle buggy SMP
       BIOSes with bad MTRR setup" dans le menu "General setup").
       Je pense que les BIOS SMP bogus sont pris en charge
       automatiquement dans les derniers noyaux 2.2.
    5. _J'ai entendu dire que des machines IBM avaient des problmes_
       Certaines machines IBM possdent le bloc BIOS MP1.4 dans l'EBDA.
       C'est autoris mais pas support en dessous des noyaux 2.2.
       Il y a une vieille machine IBM SMP base sur des 486SLC. Linux/SMP
       requiert un support FPU matriel.
    6. _Les spcification MP 1.4 prsentent-elles un quelconque avantage
       vis--vis des spcifications 1.1 ?_
       Non (selon Alan :) ), 1.4 est juste une spcification plus stricte
       de 1.1.
    7. _Pourquoi l'horloge drive-t-elle si rapidement quand la machine
       fonctionne en mode SMP ?_
       Il s'agit d'un problme connu avec la gestion des IRQ et les
       blocages noyau longs dans la srie 2.0 des noyaux. Pensez  mettre
        jour votre systme vers un 2.2 plus rcent.
       De _Jakob Oestergaard_: ou pensez  utiliser xntpd. Cela devrait
       garder votre horloge  l'heure. Je pense avoir entendu qu'activer
       RTC dans le noyau corrigeait aussi le problme de drive de
       l'horloge. a a march pour moi, mais j'ignore si cela est gnral
       ou si j'ai juste t chanceux !
       Certaines corrections du noyau dans les derniers 2.2.x devraient
       rsoudre ce problme.
    8. _Pourquoi mes processeurs sont-ils numrots 0 et 2 au lieu de 0
       et 1 (ou autre numrotation bizarre) ?_
       Le numro du processeur est fix par le fabricant de la carte mre
       et ne veut absolument rien dire. Ignorez le.
    9. _Mon systme quadruple Xeon plante ds qu'il a dcompress le
       noyau_
       (_Doug Ledford_) Essayez de recompiler LILO avec le support
       LARGE_EBDA et faites attention  bien toujours utiliser bzImage
       quand vous compilez le noyau. Cela semble avoir rsolu le problme
       de plantage au dmarrage ici sur une carte mre Intel multi-Xeon.
       Notez cependant que cela semble aussi affecter LILO en ceci que
       l'option root= ne fonctionne plus. Faites donc bien attention
       d'avoir appliqu 'rdev'  votre noyau au moment o vous lancerez
       LILO afin d'tre sur que votre noyau charge correctement le
       systme de fichier racine au dmarrage.
       (_Robert M. Hyatt_) Avec 3 processeurs, avez-vous un terminateur
       dans le 4me emplacement ?
   10. _Durant le dmarrage la machine plante en signalant un problme
       IOAPIC_
       Essayez l'option de dmarrage "noapic" (_John Aldrich_) et/ou
       "reboot=bios" (_Terry Shull_).
   11. _Mon systme se bloque lors de trafic NFS intense_
       Essayez le dernier noyau 2.2.x et le patch knfsd. Cela est en
       cours d'investigation. (_Wade Hampton_)
   12. _Mon systme bloque sans message oops_
       Si vous utilisez les noyaux 2.2.11 ou 2.2.12, rcuprez le dernier
       noyau. Par exemple 2.2.13 possde de nombreuses corrections SMP.
       Plusieurs personnes ont rapport ces noyaux comme instables pour
       le SMP. Ces mmes noyaux peuvent avoir des problmes NFS qui
       provoqueraient des blocages. Aussi, utilisez une console srie
       pour capturer vos messages oops. (_Wade Hampton_)
       Si le problme persiste (et que les suggestions sur cette liste
       n'ont pas aid davantage), vous devriez alors essayer les derniers
       noyaux 2.3. Ils ont un code SMP/APIC plus bavard (et plus robuste)
       et un code de prvention contre les blocages durs qui produit des
       oops plus significatifs au lieu de planter en silence (_Ingo
       Molnar_).
       (_Osamu Aoki_) Vous DEVEZ aussi _dsactiver_ toutes les
       fonctionnalits du BIOS lies  l'conomie d'nergie. Exemple
       d'une bonne configuration (Dual Celeron 466 Abit BP6) :
         _____________________________________________________________

 POWER MANAGEMENT SETUP.
   ACPI:              Disabled
   POWER MANAGEMENT:  Disabled
   PM CONTROL by APM: No
         _____________________________________________________________

       Si les fonctions d'conomie d'nergie sont actives, des plantages
       alatoires peuvent se produire
   13. _Dboguer des blocages_
       (item par _Wade Hampton_)
       Un bon moyen de dboguer les blocages consiste  se procurer le
       patch ikd de Andrea Arcangeli:
       ftp://ftp.suse.com/pub/people/andrea/kernel-patches
       Il y a plusieurs options de dbogage. N'utilisez PAS l'option de
       blocage logicielle ! Pour des machines SMP rcentes, activez
       l'option kernel debugging et ensuite l'option NMI oopser. Afin de
       vrifier que le NMI oopser fonctionne, aprs avoir dmarr avec
       votre nouveau noyau, excutez un /cat /proc/interrupts et vrifiez
       que vous obtenez des NMI. Quand la machine se bloque, vous devriez
       obtenir un oops.
       Vous pouvez aussi essayer l'option %eip. Elle autorise le noyau 
       crire sur la console l'adresse %eip  chaque fois qu'une fonction
       du noyau est appele. Quand la machine se bloque, crivez sur un
       papier la premire colonne ordonne selon la seconde colonne et
       cherchez ensuite les adresses dans le fichier System.map. Ca ne
       marche qu'en mode console.
       Notez que l'utilisation d'une console srie facilite grandement le
       dbogage des blocages noyau, qu'ils soient SMP ou non !
   14. _Messages "APIC error interrupt on CPU#n, should never happen"
       dans les logs_
       Un message comme:
         _____________________________________________________________

APIC error interrupt on CPU#0, should never happen.
... APIC ESR0: 00000002
... APIC ESR1: 00000000
         _____________________________________________________________

       indique la rception d'une erreur de calcul de code d'intgrit.
       Linux ne peut en tre responsable car la partie calcul des
       messages APIC est compltement matrielle. Il peut s'agir d'un
       problme matriel marginal. Tant que vous ne percevez pas
       d'instabilit, ils ne sont pas problmatiques. Les messages APIC
       sont renvoys jusqu' ce qu'il soient dlivrs (Ingo Molnar).

3.2 Causes possibles de plantages

   Dans cette section vous trouverez quelques information sur les causes
   _possibles_ de plantage sur une machine SMP (merci  _Jakob stergaard_
   pour cette partie). Autant que je sache (David), les problmes voqus
   ici sont spcifiques aux plate-formes Intel.

     * _Problmes de refroidissement_
       De _Ralf Bchle_: (concernant la taille des botiers et les
       ventilateurs) il est important que l'air circule. Bien sr, ce
       n'est pas possible quand toutes sortes d'obstacles, tels des
       cbles, l'en empchent dans des botiers par trop exigus. D'un
       autre ct, j'ai vu des botiers surdimensionns provoquer de gros
       problmes. Il existe des botiers au format tour sur le march qui
       s'avrent actuellement pire  rafrachir que des botiers au
       format bureau. En bref, la meilleure chose  faire est de penser 
       l'arodynamique dans le botier. Des botiers supplmentaires pour
       les priphriques dgageant de la chaleur sont galement utiles.
       Bien sr vous pouvez toujours aller chez Radio Shack (ou
       similaire) et acheter un ventilateur. Vous pouvez utiliser
       lm_sensor pour surveiller la temprature des processeurs PII et
       PIII. Cela peut vous aider  dterminer si la chaleur est un
       problme ou non (_Wade Hampton_).
     * _Mauvaise barrette de mmoire_
       N'achetez pas de la RAM bon march et ne mlangez pas des
       barrettes diffrente sur une mme carte mre.
       Les cartes mres Tyan sont tout particulirement connues pour leur
       susceptibilit sur la vitesse de la RAM (voir le paragraphe
       ci-dessous sur Tyan pour une solution ventuelle).
       Il y a eu des rapports sur des mmoire RAM PC 100  10ns vendues
       avec des cartes mres dont le processeur avait vraiment besoin de
       RAM  8ns (_Wade Hampton_).
     * _Mauvaise combinaison de processeurs de frquences diffrentes_
       Vrifiez /proc/cpuinfo pour voir si vos processeurs fonctionnent 
       la mme cadence.
     * _Si votre systme est instable, SURTOUT ne l'overclockez pas !_
       D'ailleurs, mme s'il est stable, ne le surcadencez pas.
       De _Ralf Bchle_: le surcadencement pose des problmes trs
       subtils. J'ai un bel exemple: une de mes vieilles machines
       surcadences commet des erreurs de calcul pour quelques pixels
       d'une fractale de 640 X 400. Le problme est seulement visible
       quand on les compare en utilisant des outils. Le mieux est donc de
       ne _jamais, never, nuncas, niemals_ surcadencer.
     * _Noyaux 2.0.x et Ethernet rapide_ (de _Robert G. Brown_)
       Les noyaux 2.0.x sur des systmes Ethernet rapide et hautes
       performances ont des problmes significatifs (et connus) avec les
       conditions de course/inter-blocage (race/deadlock) dans la prise
       en charge des interruptions rseau.
       La solution consiste  obtenir la dernire version des pilotes
       100BT en cours de dveloppement  CESDIS Linux Ethernet device
       drivers site (ceux qui sont au point dfinissent SMPCHECK).
     * _Un bogue dans le chipset 440FX_ (de _Emil Briggs_)
       Si votre systme utilise le chipset 440FX alors les problmes de
       blocage sont peut-tre ds  une erreur (documente) du chipset.
       En voici la rfrence:
       Intel 440FX PCIset 82441FX (PMC) et 82442FX (DBX) Specification
       Update. pg. 13
       http://www.intel.com/design/pcisets/specupdt/297654.htm
       Le problme peut se rsoudre avec un contournement par le BIOS (ou
       un patch du noyau). David Wragg a crit un patch qui est inclus
       dans le patch MTRR de Richard Gooch's. Pour plus d'informations
       ainsi qu'un descriptif de solution, voyez ici:
       http://nemo.physics.ncsu.edu/~briggs/vfix.html
     * _NE PAS lancer emm386.exe avant de dmarrer Linux SMP_
       De _Mark Duguid_, Rgle implicite #1 avec une carte mre W6LI. ;)
     * _Si la machine redmarre/gle au bout d'un moment, il peut y avoir
       deux bonne raisons lies  la mmoire et au BIOS_ (_Jakob
       stergaard_)
          + Si le BIOS est muni de rglages comme "memory hole at 16M"
            et/ou "OS/2 memory > 64MB", essayez de les dsactiver tous
            les deux. Linux ne ragit pas toujours trs bien  ces deux
            options.
          + Si vous avez plus de 64 MB de mmoire dans votre machine, et
            que vous spcifiez manuellement le chiffre exact dans la
            configuration de LILO, vous devriez spcifier 1 MB de moins
            que ce vous avez rellement dans votre machine. Si vous avez
            128 MB, votre ligne dans votre lilo.conf ressemble :
            append="mem=127M"
     * _Soyez avertis des problmes concernant les IRQ_
       Parfois, certaines cartes ne sont pas reconnues ou peuvent
       dclencher des conflits d'IRQ. Essayez de mettre les cartes sur
       des slots diffrents et si possible de les assigner  des IRQ
       diffrentes.
       Contribution de _hASCII_ : enlever la ligne "append="hisax=9,2,3"
       dans lilo.conf autorisant  utiliser un noyau de la srie 2.1.xx
       avec le support ISDN + Hisax activ. Les noyaux de la srie 2.0.xx
       ne posent pas ce genre de problme.
       Essayez aussi de configurer les option de configuration du BIOS
       comme "MP 1.4 mode" ou "route PCI interrupts through IOAPIC" ou
       "OS Type" configur ni pour DOS ni pour Novell (_Ingo Molnar_).
     * _Utilisation simultane du lecteur de disquettes de la sortie son_
       Si vous bloquez alors que vous essayez d'accder au lecteur de
       disquettes (par exemple pendant que du son est jou) vous devriez
       peut-tre diter le fichier drivers/pci/quirks.c et positionner
       /int isa_dma_bridge_buggy = 1;. Le problme se manifeste avec mon
       Dell WS400 dual PII/300, 2.2.x, SMP (_Wade Hampton_).

3.3 Informations spcifiques aux cartes mres

   _Notez_ que des informations plus prcises peuvent tre trouves avec
   la liste des Cartes mre supposes fonctionner sous Linux SMP

  Cartes mres avec des problmes connus

     * Aucune pour l'instant

3.4 Machine SMP Linux  bas prix (machine double Celeron)

   (_Stphane colivet_)

   Les machines SMP Linux les moins chres avec des processeurs
   disponibles de nos jours sont les systmes double Celeron. Un tel
   systme n'est pas officiellement possible selon Intel. On a intrt 
   vrifier qu'il s'agit bien de Celerons de seconde gnration, ceux
   avec 128 Kb de cache L2.

  Est-il possible de faire fonctionner une machine double Celeron ?

   _Rponse officielle d'Intel :_ non, le Celeron ne peut pas fonctionner
   en mode SMP.

   _Rponse pratique :_ c'est possible, mais cela demande une
   modification matrielle pour les processeurs Slot 1. La manipulation
   est dcrite par Tomohiro Kawada sur sa page Dual Celeron System.
   Naturellement, de telles modifications annulent la garantie...
   Certaines versions du processeur Celeron sont aussi disponibles au
   format Socket 370. Dans ce cas, l'altration peut-tre faite sur
   l'adaptateur Socket 370  Slot 1 qui peut mme tre vendu pr-cabl
   pour une utilisation SMP (_Andy Poling_, _Hans - Erik Skyttberg_,
   _James Beard_).

   Il existe aussi une carte mre (ABIT BP6) autorisant l'insertion de
   deux Celerons dans le format Socket 370 (_Martijn Kruithof_, _Ryan
   McCue_), l'ABIT Computer BP6 vrifie, teste et supporte sous linux
   avec deux ppga socket 370 (_Andre Hedrick_).

  Comment Linux se comporte-t-il sur les systmes double Celeron ?

   Bien, merci.

  Les processeurs Celeron sont rputs pour tre facilement surcadenable.Qu'en
  est-il des systmes doubles Celeron ?

   Cela _peut_ marcher. Nanmoins, surcadencer un tel systme n'est pas
   aussi facile que pour un monoprocesseur. Ce n'est franchement pas une
   bonne ide pour un systme de production. Pour une utilisation
   personnelle, des systmes double Celeron 300 A fonctionnant
   parfaitement  450 MHz ont t signals (_de nombreuses personnes_).

  Et un systme quadruple Celeron ?

   C'est impossible. Les processeurs Celerons possdent  peu prs les
   mmes fonctionnalits qu'un Pentium II basique. Si vous voulez plus de
   deux processeur dans votre systme, vous devriez regarder du ct des
   machines  base de Pentium Pro, Pentium II Xeon ou Pentium III (?).

  Pourquoi ne pas mlanger Celeron et Pentium II ?

   Un systme utilisant un Celeron "r-autoris" et un Pentium II  la
   mme cadence _peut thoriquement_ fonctionner.

   _Alexandre Charbey_  fabriqu un tel systme:
     * Carte mre Asus P2B-D, proc 1: Celeron 366, proc 2: Pentium II
       400@266
     * Les frquences de bus 66Mhz et 75Mhz furent fonctionnelles
     * Le processeur le plus rapide (dans ce cas le Celeron) doit tre
       plac sur le deuxime slot. Inverser les processeurs (le plus
       rapide en premier) conduit rapidement  un chec.

4. Questions spcifiques  l'architecture Sparc

4.1 Quellles sont les machines Sparc supportes ?

   Citation de la page web UltraLinux (systmes SMP seulement):
     * Workstation UltraSPARC  base de PCI: Ultra60, Ultra450
     * Serveurs UltraSPARC  base de SBUS: Enterprise 1, 2, 150
     * Serveurs large UltraSPARC  base de SBUS: Enterprise 3000, 4000,
       5000, 6000, 10000
     * Serveurs UltraSPARC  base de PCI : Enterprise 250, 450
     * Machines SPARC sun4m SMP (_Anton Blanchard_)

   UltraLinux a fonctionn sur une machine de 14 processeurs (voir la
   sortie dmesg).

4.2 Problmes spcifiques au support SMP Sparc

   (_David Miller_) Il ne devrait pas y avoir d'inquitudes.

   Le seul problme connu et que nous n'avons pas l'intention de
   corriger, consiste en ce qu'un noyau SMP compil pour des systmes
   32bits (ie. non-ultrasparc) ne fonctionnera pas sur les systmes
   sun4c.

4.3 Limites SMP spcifiques au noyau courant (2.2)

   _David Miller_: il y a un bug dans le fichier d'en-tte
   include/linux/tasks.h, cela ncessite de dfinir NR_CPUS  64 sur
   UltraSparc puisqu'il s'agit de la limite suprieure pour le matriel
   que nous supportons :-)

5. Questions spcifiques  l'architecture PowerPC

5.1 Quellles sont les machines PPC supportes ?

     * Cartes mres PowerSurge (incluant UMAX s900)
     * PowerMac
     * Motorola MTX : support en cours de dveloppement. Les patches ne
       sont pas encore inclus dans le noyau principal (_Troy
       Benjegerdes_).

   (_Cort Dougan_) Non support: Systmes PPC RS/6000

5.2 Problmes spcifiques concernant le support SMP PPC

   Rien. Compilation SMP normale (voir plus haut). Comme d'habitude,
   soyez attentif. Les modules sont spcifiques pour UP ou pour SMP.
   Recompilez les (_Paul Mackerras_).

6. Questions spcifiques  l'architecture Alpha

6.1 Quelles sont les machines Alpha supportes ?

   _Geerten Kuiper_ : le SMP marche pour la plupart des serveurs AXP,
   sinon pour tous.

   _Jay A Estabrook_ : le SMP semble fonctionner sur la plupart de nos
   machines [Compaq] avec deux processeurs ou plus. La liste de celles-ci
   comprend :
     * AS2000/2100 (SABLE)
     * AS4000/4100 (RAWHIDE)
     * DS20 (DP264)

   En sont exclus :
     * AS2100A (LYNX)
     * TurboLaser bigboys (8200/8400)

6.2 Problmes spcifiques au support SMP Alpha

   Aucun (vraiment ? :-) ).

7. Pointeurs utiles

7.1 Divers

     * Parallel Processing en utilisant Linux
     * Linux Parallel Processing HOWTO
     * _(dpass)_ Page d'acceuille SMP Linux
     * linux-smp mailing list
       Pour _souscrire_, envoyez subscribe linux-smp dans le corps du
       message  majordomo@vger.rutgers.edu
       Pour se _dsinscrire_, envoyez unsubscribe linux-smp dans le corps
       du message  majordomo@vger.rutgers.edu
       Archives Linux SMP
       Archives Linux SMP  progressive-comp.com
     * La librairie pthread de Xavier Leroy
     * Les Cartes mres qui parat-il marche avec Linux SMP
     * procps
     * patch pour procps pour 2.2.x
     * xosview
     * xosview pour 2.2.x
     * Performance SMP de Linux
     * CESDIS Linux Ethernet device drivers site
     * Systmes Double Celeron

7.2 Programmes et librairies multithread

     * Linux Threads FAQ
     * Programmes multithread sur linux
     * BLAS et FFTs optimis Pentium pro pour Intel Linux (pas disponible
       tout de suite, mais une librairie double processeurs est prvue
       pour le 5/27/98. Pour plus de dtails, voir Blas News).
     * Librairie Mesa (support multithread exprimental)
     * Plugins parallles pour The GIMP

7.3 Patches spcifiques SMP

     * Patches noyau de Forissier
     * Patch pour un bug dans le chipset 440FX
     * Patch MTRR (dernire version: 1.9)
     * PSET - Processor Sets for the Linux kernel
     * Patches SMP de Ingo Molnar (pour les esthtes seulement, s'il vous
       plat lisez linux-smp@vger.rutgers.edu)

7.4 Compilateurs parallliseurs/optimiseurs pour les machines 586/686 (_Sumit
Roy_)

     * Pentium Compiler Group crateur de pgcc
     * Absoft compilateur Fortran 90 et Fortran 77
     * The Portland Group, Inc. supporte le standard OpenMP pour la
       paralllisation Fortran sur Linux
     * Pacific-Sierra Research Corporation contient un compilateur
       gratuit F90 pour Linux et aussi des compilateurs paralllisant
       pour SMP Linux
     * Applied Parallel Research inclut actuellement des compilateurs
       paralllisant pour NT
     * KAI offre un compilateur C++ pour Linux qui inclut OpenMPI. Il
       s'appelle Guide_OpenMP. Information 
       http://www.kai.com/parallel/kappro/guide (_Gero Wedemann_).

8. Glossary

     * _SMP_ Multi-Processeur Symmtrique
     * _APIC_ Contrleur d'Interruptions Programmable Avanc
     * _thread_ Un thread est l'activit processeur dans un processus. Un
       mme processus peut avoir de multiples thread. Ces threads
       partagent l'espace adresse du processus et peuvent donc par-l
       partager des donnes.
     * _pthread_ Posix thread, threads dfinie par le standard Posix.
     * _APM_ Gestion avance de l'nergie

9. Quoi de neuf ?

   _v1.9, 13 janvier 2000_

          + Rappel, dsactivation de toutes les fonctions de gestion
            d'nergie du BIOS (_Osamu Aoki_)
          + Explication sur la manire d'accder au mode de configuration
            avanc du serveur Compaq (_Adrian Portelli_)

   _v1.8, 8 novembre 1999_

          + La carte mre quadruple celeron tait un canular,
            restauration de l'ancien paragraphe (_Simen Timian Thoresen_)

   _v1.7, 6 novembre 1999_

          + Nouvelle introduction (_C. Polisher_ aka cp)
          + De nombreuses corrections typographiques et grammaticales
            (cp)
          + Paragraphe d'introduction sur la compilation du noyau (cp)
          + Paragraphe d'introduction sur les besoins SMP (cp)
          + Rfrence sur KAI un compilateur optimis (_Gero Wedemann_)
          + Les cartes mres quadruple celeron existent (_Jeffrey H.
            Ingber_)

   _v1.6, 21 octobre 1999_

          + Ajout d'information sur la perturbation horaire de xosview
          + Ajout du message d'information "Erreur d'interruption APIC
            sur le CPU#n"
          + Ajout d'information sur les blocages matriels
          + Suppression de la section "Comment obtenir un maximum de
            performance" (obsolte)
          + Ajout d'information sur les systmes double processeurs avec
            diffrents processeurs x86 (un Celeron et un PII)

   _v1.5, 4 octobre 1999_

          + Plus de prcision dans la description de PSET

   _v1.4, 30 septembre 1999_

          + Prcision sur l'activation du support MTRR pour les noyaux
            SMP x86 (moi)

   _v1.3, 29 septembre 1999_

          + Beaucoup beaucoup de corrections grammaticales et
            typographique (_Wade Hampton_ aka hww)
          + Ajout d'information dans la courte introduction  propos des
            diffrences entre 2.2/2.4/2.0 (hww)
          + Ajout des choses  faire pas  pas pour recompiler le noyau
            (hww et moi)
          + Ajout d'information concernant les problmes lis aux modules
            SMP/UP (hww)
          + Ajout de prcision dans la section Threads Posix concernant
            les threads utilisateurs vs. les threads du noyau (hww)
          + Nouvel item  propos de NFS et des blocages du noyau (hww)
          + Nouvel item  propos des blocage noyau sans message d'alerte
            (hww)
          + Nouvel item  propos du dbogage des problmes de blocage
            (hww)
          + Ajout d'information  propos des problmes de dgagement de
            chaleur (hww)
          + Divers mise  jour que j'ai oubli (hww)
          + Nouvel item  propos des accs disquette et du son (hww)

   _v1.2, 27 septembre 1999_

          + Changement de nom: ce document est maintenant un Howto. TWD,
            et rapide! (_Guylhem Aznar_)

   _v1.1, 26 septembre 1999_

          + Ajout d'un lien vers le premier brouillon de la FAQ de Chris
            Pirish
          + Extension des problmes lis aux IRQ

   _v1.00, 25 septembre 1999_

          + Premire mise  jour depuis bien longtemps !
          + Retraitement de toute la FAQ: le 2.2 est l et le 2.4 arrive
          + Ajout des informations sur le verrouillage noyau de Ingo
            Molnar
          + Suppression de l'item "Quelle seront les performance de mes
            applications sous SMP" : dpass
          + Suppression de l'item "Mon systme SMP se verrouille tout le
            temps." : dpass
          + Suppression de l'item "Vous utilisez le 2.0.35, n'est-ce pas
            ?" : dpass
          + Suppression de l'item "Certains matriels sont aussi connu
            pour poser des problmes." : dpass
          + Effacement de la section "Cartes mre avec des problmes
            connus". Nous devrions recommencer du dbut.
          + Suppression de la section "Carte mre sans problmes
            connus" : dpasse
          + Mise  jour de la section celeron (de nombreuses personnes)
          + Ajout de "Les machines SPARC sun4m SMP" dans les machines
            Sparc supportes (_Anton Blanchard_)
          + Ajout de l'item "Durant le dmarrage la machine se bloque en
            signalant un problme IOAPIC" dans la section "Pourquoi cela
            ne marche-t-il pas sur ma machine ?"
          + Ajout de l'item "A propos des performances SMP ?"
          + Mise  jour de l'item "Pourquoi mon vieux Compaq ne
            marche-t-il pas ?"
          + Rparation d'un lien dpass
          + Ajout d'un pointeur vers les patches de test SMP d'Ingo

   _v0.54, 13 mars 1999_

          + Ajout de la section  propos des systmes SMP Alpha

   _v0.53, 08 mars 1999_

          + Ajout de la section sur les systmes PowerPC SMP

   _v0.52, 07 mars 1999_

          + Ajout de la section sur les systmes Sparc SMP

   _v0.51, 06 mars 1999_

          + Ajout de la section dual-celeron
          + Suppression de la section Adaptec
          + Mise  jour du lien procps
          + Mise  jour du lien xosview
          + Ajout d'une rponse pour le plantage du quadri Xeon
          + Mise  jour de l'item  propos du patch de la glibc pour gd :
            devrait tre inclus dans la RH 5.2

   _v0.50, 03 fvrier 1999_

          + Mise  jour du lien "Programmes Multithread sous linux"

   _v0.49, 13 janvier 1999_

          + Mise  jour  propos de CONFIG_SMP. Ajout du .txt dans
            Documentation/smp. (_Michael Elizabeth Chastain_)

   _v0.48, 10 dcembre 1998_

          + Fautes d'orthographes corrige. Adresses email corrige.

   _v0.47, 20 novembre 1998_

          + Ajout de la mention du patch MTRR est inclus 2.0.36 (li 
            des problme de BogoMips)

   _v0.46, 10 novembre 1998_

          + Mise  jour  propos des cartes mre Epox KP6-LS

   _v0.45, 25 octobre 1998_

          + Correction d'une erreur concernant le fichier /proc/stat
          + Ajout d'un pointeur vers le site CESDIS Ethernet Linux
            Drivers

   _v0.44, 14 octobre 1998_

          + Mise  jour du lien vers la page web : _Cartes mre supposes
            fonctionner sous Linux SMP_
          + Ajout de l'explication de Jakob : comment chronomtrer un
            systme SMP avec les noyaux 2.0

   _v0.43, 9 septembre 1998_

          + Mise  jour de la premire question dans la section 3.1
          + Mise  jour du lien mt-Mesa : multithread est maintenant
            inclus comme exprimental dans la distribution Mesa

   _v0.42, 2 septembre 1998_

          + Mise  jour cosmtique dans la section 3.3
          + Deux liens sont marquer comme obsoltes (Multithreaded Mesa
            et performance SMP)
          + Mise  jour de l'item  propos des threads et des exceptions
            en C++ (sect 3.3)

   _v0.41, 1 septembre 1998_

          + Ajout d'une section majeur: "3.3 Programmation SMP" crite
            par Jakob stergaard
          + Dplacement de la section "3.2 Cot utilisateur" vers la
            section 3.3

   _v0.40, 27 aot 1998_

          + Mise  jour: section 3.1, item 7: processor affinity

   _v0.39, 27 aot 1998_

          + Mise  jour ncessaire du BOIS Award pour les cartes mres
            Tyan (_hASCII_)
          + Ajout d'un item sur les IRQ dans la section plantage (moi et
            _hASCII_)
          + Ajout du bon support de l'Asus P2B-DS (_Ulf Rompe_)
          + Ajout d'une autre archive smp-list dans la section pointeur
            (_Hank Leininger_)

   _v0.38, 8 aot 1998_

          + Ajout d'un pointeur vers la FAQ Linux Threads

   _v0.37, 30 Juillet 1998_

          + _Emil Briggs_ est en train de travailler sur des plugins
            parallles pour Gimp (voir "Existe-t-il des programmes ou des
            library utilisant les threads ?", section "Cot utilisateur")

   _v0.36, 26 Juillet 1998_

          + Merci  _Jakob stergaard_, deux changement dans "Possible
            causes of Crash"
               o Chang le 2.0.33 pour le 2.0.35 (dernier noyau stable)
               o Ajout de la section "Les plantages lis au BIOS"

   _v0.35, 14 Juillet 1998_

          + Ajout des N440BX Server Board dans
            carte-mre-sans-aucun-problme
          + Ajout d'une success story pour la carte mre GigaByte avec
            une mise  jour du BIOS
          + Ajout de la section "Comment obtenir les performances maximum
            ?" (attend vos suggestions ;)

   _v0.34, 10 juin 1998_

          + Ajout de la section "Parallelizing/Optimizing Compilers for
            586/686 i machines" dans la section "Useful Pointers", merci
             _Sumit Roy_
          + Correction, "Asus P/I-UP5" est en fait "Asus P/I-P65UP5"

   _v0.33, 3 juin 1998_

          + Encore une success story avec une carte mre GigaByte DLX.
          + Une astuce pour les cartes mre Tyan, dsactiver l'option
            "DRAM Fast Leadoff" du BIOS

   _v0.32, 27 mai 1998_

          + Asus P/I-UP5 ajouter  la section
            carte-mre-sans-aucun-problme

   _v0.31, 18 mai 1998_

          + Elitegroup P6LX2-A marche avec le 2.1.100 et le 101
          + Les bugs doivent tre rapports linux-smp@vger.rutgers.edu

   _v0.30, 12 mai 1998_

          + SuperMicro est maintenant une carte mre dans la section
            carte-mre-sans-aucun-problme

   _v0.29, 11 mai 1998_

          + La success story d'une carte mre GigaByte 686 avec le
            2.1.101
          + Ajout d'un nouvel item dans la section "Cot utilisateur" :
            "Existe-t-il des programmes ou des library utilisant les
            threads ?"
          + La library OpenGL Mesa library est en train de passer au
            multithread. Cool! Voir la nouvelle section pour plus de
            dtails.

   _v0.28, 09 mai 1998_

          + Un miroir US de cette FAQ est maintenant disponible (voir
            Introduction)
          + Fusion de deux entres confuses, Gigabyte 686

   _v0.27, 05 mai 1998_

          + Nouvelles informations pour les pilotes Adaptec et TekRam
          + Les cartes mres Micronics W6-LI marche avec SMP

10. Liste des contributeurs

   Un grand merci  ceux qui m'ont aid  maintenir ce HOWTO:

    1. Tigran A. Aivazian
    2. John Aldrich
    3. Niels Ammerlaan
    4. H. Peter Anvin
    5. Osamu Aoki
    6. Guylhem Aznar
    7. Ralf Bchle
    8. James Beard
    9. Troy Benjegerdes
   10. Anton Blanchard
   11. Emil Briggs
   12. Robert G. Brown
   13. Alexandre Charbey
   14. Michael Elizabeth Chastain
   15. Samuel S. Chessman
   16. Alan Cox
   17. Andrew Crane
   18. Cort Dougan
   19. Mark Duguid
   20. Stphane colivet
   21. Jocelyne Erhel
   22. Jay A Estabrook
   23. Byron Faber
   24. Mark Garlanger
   25. hASCII
   26. Wade Hampton
   27. Andre Hedrick
   28. Claus-Justus Heine
   29. Benedikt Heinen
   30. Florian Hinzmann
   31. Moni Hollmann
   32. Robert M. Hyatt
   33. Jeffrey H. Ingber
   34. Richard Jelinek
   35. Tony Kocurko
   36. Geerten Kuiper
   37. Martijn Kruithof
   38. Doug Ledford
   39. Kumsup Lee
   40. Hank Leininger
   41. Ryan McCue
   42. Paul Mackerras
   43. Cameron MacKinnon
   44. Joel Marchand
   45. David Maslen
   46. Chris Mauritz
   47. Jean-Francois Micouleau
   48. David Miller
   49. Ingo Molnar
   50. Ulf Nielsen
   51. Jakob Oestergaard
   52. C Polisher
   53. Adrian Portelli
   54. Matt Ranney
   55. Daniel Roesen
   56. Ulf Rompe
   57. Jean-Michel Rouet
   58. Volker Reichelt
   59. Sean Reifschneider
   60. Sumit Roy
   61. Thomas Schenk
   62. Terry Shull
   63. Chris K. Skinner
   64. Hans - Erik Skyttberg
   65. Szakacsits Szabolcs
   66. Jukka Tainio
   67. Simen Timian Thoresen
   68. El Warren
   69. Gregory R. Warnes
   70. Gero Wedemann
   71. Christopher Allen Wing
   72. Leonard N. Zubkoff
