  Linux SMP HOWTO
  David Mentr, David.Mentre@irisa.fr
  v1.8, 8 novembre 1999

  Ce HOWTO passe en revu les principaux problmes (et j'espre ces solu
  tions)lis la configuration SMP sous Linux.
  ______________________________________________________________________

  Table des matires

























































  1. Introduction

  2. Questions indpendantes de l'architecture.

     2.1 Cot Noyau
     2.2 Cot utilisateur
     2.3 Programmation SMP
        2.3.1 Mthodes de paralllisation
        2.3.2 La librairie C
        2.3.3 Languages, Compilateurs et dbogueurs
        2.3.4 Atres librairies
        2.3.5 D'autres points  propos de la programmation SMP

  3. Questions spcifiques  l'architecture x86

     3.1 Pourquoi cela ne marche-t-il pas avec ma machine ?
     3.2 Causes possibles de plantages
     3.3 Informations spcifiques aux cartes mre
        3.3.1 Cartes mres avec des problmes connus
     3.4 Machine SMP Linux  bas prix (machine double Celeron)
        3.4.1 Est-il possible de faire fonctionner une machine double Celeron ?
        3.4.2 Comment Linux se comporte-t-il sur les systmes double Celeron ?
        3.4.3 Les processeurs Celeron sont rputs pour tre facilement surcadensable. Et les systmes doubles Celeron ?
        3.4.4 Et faire une systme quadruple Celeron ?
        3.4.5 pourquoi pas mlanger Celeron et Pentium II ?

  4. Questions spcifiques concernant l'architecture Sparc

     4.1 Quellles sont les machines Sparc supportes ?
     4.2 Problmes spcifique concernant le support SMP Sparc
     4.3 Limites SMP spcifiques au noyau courant (2.2)

  5. Questions spcifiques concernant l'architecture PowerPC

     5.1 Quellles sont les machines PPC supportes ?
     5.2 Problmes spcifiques concernant le support SMP PPC

  6. Questions spcifiques concernant l'architecture Alpha

     6.1 Quelles sont les machines Alpha supportes ?
     6.2 Problmes spcifique concernant le support SMP Alpha

  7. Pointeurs utiles

     7.1 Divers
     7.2 Programmes et librairies multithread
     7.3 Patches spcifiques SMP
     7.4 Compilateurs Parallliseur/Optimiseur pour les machines 586/686 (

  8. Glossary

  9. Quoi de neuf ?

  10. Liste des contributeurs



  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  Linux fonctionne sur les machines SMP (Symmetric Multi-Processors).
  Le support SMP fut introduit avec la version 2.0 du noyau, et a t
  largement amliorer depuis. est beaucoup plus fine dans la srie 2.2.x
  que dans la 2.0.x, ce qui permet de meilleures performances quand les
  processus accdent 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 prfrerai un diff contre
  SGML version <http://www.irisa.fr/prive/mentre/smp-howto/smp-
  howto.sgml> de ce document, mais toute remarque (en texte pur) sera
  grandement apprcier.  Si vous m'envoyez un e-mail a propos de ce
  document, s'il vous plat insrer un tag comme [Linux SMP HOWTO] dans
  le champ Suject: de votre e-mail. Cela m'aide  trier automatiquement
  mon courrier (et vous recevrez une rponse plus rapide ;)).


  Ce HOWTO est une amlioration de  first draft
  <http://www.ihoc.net/linux-smp-faq-draft.html> crit par CChhrriiss PPiirriihh.


  Toutes les informations contenues dans ce HOWTO sont fournies "telle
  quel".  Toutes les garanties, explicites, implicite ou lgale,
  concernant l'exactitude de l'information, de la convenance  quelque
  usage particulier sont par la prsente spcifiquement dclines. Alors
  que tous les efforts ont t prit pour assurer l'exactitude des
  informations contenues dans ce HOWTO, les auteurs n'assument aucune
  responsabilit pour les erreurs ou omissions, ou dommages rsultants
  de l'utilisation de l'information contenue dans ce document.



  22..  QQuueessttiioonnss iinnddppeennddaanntteess ddee ll''aarrcchhiitteeccttuurree..


  22..11..  CCoott NNooyyaauu




  1. LLiinnuuxx ssuuppppoorrttee--tt--iill lleess tthhrreeaaddss mmuullttiipplleess ??  SSii jjee llaannccee ddeeuuxx oouu
     pplluussiieeuurrss pprroocceessssuuss,, sseerroonntt--iillss rreeppaarrttiiss eennttrree lleess ddiiffffrreennttss
     pprroocceesssseeuurrss ddiissppoonniibblleess ??

     Oui. Les processus et les threads du noyau sont repartis entre les
     processeurs. Ceux de l'espace utilisateur ne le sont pas.


  2. QQuueelllleess ssoonntt lleess aarrcchhiitteeccttuurreess SSMMPP ssuuppppoorrtteess ??


     DDee AAllaann CCooxx:
        Dans le 2.0, les systmes SMP supports sont les hypersparc
        (SS20, etc.)  et Intel 486, Pentium ou machines suprieurs
        compatible avec la norme Intel MP1.1/1.4.  RRiicchhaarrdd JJeelliinneekk
        ajoute: jusqu' prsent, seul des systmes jusque que 4
        processeurs ont t test et la norme 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.


     DDee RRaallff BBcchhllee:
        MIPS, m68k et ARM ne support pas SMP; les deux derniers ne le
        supporteront probablement jamais.
        Cela dit, je ferai un hack pour MIPS-SMP aussitt que j'aurais
        une machine SMP ...


  3. CCoommmmeenntt ffaaiitt--oonn uunn nnooyyaauu LLiinnuuxx ssuuppppoorrttaanntt SSMMPP ??

     La plupart des distributions ne fournissent pas un noyau adapter au
     SMP, cela signifie que vous devrez le faire vous mme. Si vous
     n'avez encore jamais compiler votre propre noyau, c'est une
     excellente raison pour apprendre comment cela se fait. Expliquer
     comment compiler un nouveau noyau dpasse le but de ce document; se
     rfrer vous au Linux Kernel Howto pour de plus ample information.
     (CC.. PPoolliisshheerr)

     Dans la srie 2.0 jusque 2.1.132 exclu du noyau, dcommenter 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 "Symmetric multi-processing support" (MMiicchhaaeell EElliizzaabbeetthh
     CChhaassttaaiinn).

     ET

     autoriser l'horloge temps rel en cochant l'item "RTC support" (de
     RRoobbeerrtt GG..  BBrroowwnn). Notez qu'inclure le support RTC, en ralit,
     autant que je sache, n'empche pas le problme connu de la drive
     de l'horloge avec le SMP mais activer cette fonctionnalit prvient
     quand l'horloge est lue au dmarrage.  Une note de RRiicchhaarrdd JJeelliinneekk
     dit aussi qu'activer "Enhandced RTC" est ncessaire pour activer le
     deuxime processeur (identification) sur certaines cartes mre
     Intel originales.

     ET

     (noyau x86) NE PAS activer APM (advanced power management)! APM et
     SMP ne sont pas compatibles, et votre systme plantera certainement
     (ou moins probablement ;)) au dmarrage si APM est activer (JJaakkoobb
     OOeesstteerrggaaaarrdd).  AAllaann CCooxx confirme cela : 2.1.x dsactiver APM pour
     les machines SMP.  En gros le comportement APM est indfini en
     prsence de systmes SMP, et tout peut advenir.

     ET

     (noyau x86) activer "MTRR (Memory Type Range Register) support".
     Certains BIOS sont bogu, ils n'activent pas la mmoire cache du
     second processeur. Le support MTRR contient le code qui rsout de
     tels problmes.



     Vous devez reconstruire votre noyau et vos modules quand vous
     passer en SMP et quand vous changer de mode SMP. N'oubliez pas de
     faire make modules et make modules_install (de AAllaann CCooxx).


     Si vous obtenez des erreurs au chargement des modules, vous n'avez
     probablement pas rinstall vos modules. Nanmoins, avec quelques
     noyaux 2.2.x, des gens ont report des problmes lors de la
     recompilation d'un noyau SMP en noyau UP (Uni-Processeur). Afin de
     rsoudre cela, sauvegardez votre fichier .config, et faite _m_a_k_e
     _m_r_p_r_o_p_e_r, restaurer votre fichier _._c_o_n_f_i_g, puis recompiler votre
     noyau (_m_a_k_e _d_e_p, etc.)  (WWaaddee HHaammppttoonn).  N'oubliez pas de relancer
     lilo aprs avoir recopier 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. CCoommmmeenntt ccoommppiillee--tt--oonn uunn nnooyyaauu LLiinnuuxx nnoonn-SMP ?

     Dans la srie 2.0, ccoommmmeenntteerr la ligne SMP=1 dans le Makefile
     principal (/usr/src/linux/Makefile).

     Pour la srie 2.2, configurer le noyau et rpondez "no"  la
     question "Symmetric multi-processing support" (MMiicchhaaeell EElliizzaabbeetthh
     CChhaassttaaiinn).




     Vous devez absolument recompiler votre noyau et ses modules quand
     vous changer vers ou d'un mode SMP. N'oubliez pas de faire make
     modules et make modules_install et de lancer lilo. Voyez les notes
     plus haut sur les problmes possibles de configuration.



  5. CCoommmmeenntt ssaavvooiirr ssii  mmaarrcchhee ??


      cat /proc/cpuinfo




  Sortie typique (double 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. QQuueell eesstt llee ssttaattuutt ddee llaa mmiiggrraattiioonn dduu nnooyyaauu vveerrss uunn vveerrrroouuiillllaaggee
     ffiinn eett llee mmuullttiitthhrreeaaddiinngg ??

     La version 2.2 du noyau possde une gestion des signaux, des
     interruptions et quelque E/S  blocage 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) possde vraiment des blocages noyau
     fins. Dans la srie des noyaux 2.3 l'usage des gros blocages noyau
     a tout simple disparut, tous les sous-systmes majeurs du noyau
     Linux sont compltement coder avec des threads: rseau, VFS, VM,
     ES, block/pages de cache, ordonnancement, interruptions, signaux,
     etc. (IInnggoo MMoollnnaarr)


  7. LLiinnuuxx SSMMPP ssuuppppoorrttee--tt--iill lleess aaffffiinniittss pprroocceesssseeuurr ??



     NNooyyaauuxx ssttaannddaarrdd
        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 prit pour chaque processus, qui tend 
        conserver les processus attacher  un processeur spcifique.


     PPaattcchh
        Oui. Voir PSET - Processor Sets for the Linux kernel
        <http://isunix.it.ilstu.edu/~thockin/pset/>:

          Le but de ce projet est de faire une version quivalent
          compatible au niveau source et fonctionnalit de pset
          (tel que dfini par SGI - partiellement retir de leur
          noyau 6.4 IRIX) pour Linux. Cela autorise les utilisa
          teurs  dterminer sur quel processeur ou ensemble de
          processeurs un processus peut tourner. Les utilisations
          possibles incluent assignement de thread  des pro
          cesseurs distincts, synchronisation, scurit (un pro
          cesseur `root' ddier ?)  et srement plus.


     Nous nous sommes attachs  concentrer toutes les fonctionnalits
     autour de l'appel systme sysmp(). Cette fonction prend un certain
     nombre de paramtres qui dterminent quelle fonction est requise.
     Ces Fonctions comprennent:

       Assignation d'un processus/thread  processeur spcifique

       Interdire un processeur d'excuter certains processus

       Empcher strictement l'utilisation d'un processeur

       Assigner  un processeur un _unique_ processus (et ces fils)

       Information sur l'tat du processeur

       cration/destruction d'ensemble de processeurs, sur lesquels les
        processus peuvent tre limits



  8. OO ddooiiss--jjee rraappppoorrtteerr lleess bboogguueess SSMMPP ??

     S'il vous plat rapportez les bogues  linux-smp@vger.rutgers.edu.



  9. AA pprrooppooss ddeess ppeerrffoorrmmaanncceess SSMMPP ??

     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..22..  CCoott uuttiilliissaatteeuurr


  1. AAii--jjee vvrraaiimmeenntt bbeessooiinn ddee SSMMPP ??

     Si vous vous demandez, c'est que vous n'en avez probablement pas
     besoin. :) Gnralement, les systmes multiprocesseurs offrent de
     meilleurs performance que les systmes monoprocesseurs, mais pour
     obtenir un gain quelconque vous devez considrer beaucoup d'autres
     facteurs que le nombre de processeur. Par exemple, sur un systme
     donn, si le processeur est en gnral inactif, la plupart du temps
      cause d'un disque dur lent, alors ce systme est "entre/sortie
     limite" ("input/output bound"), et ne bnficiera probablement pas
     de la puissance d'un processeur supplmentaire. Si d'un autre cot,
     un systme doit excuter beaucoup de processus simultans, et
     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 utiliss avec de
     multiple processeurs, grce  la faon dont ils peuvent grer de
     multiples commandes sans immobiliser le processeur.(CC.. PPoolliisshheerr)


  2. EEsstt--ccee qquuee jj''oobbttiieennss lleess mmmmeess ppeerrffoorrmmaanncceess dd''uunn bbiipprroocceesssseeuurr 330000
     MMHHzz qquu''uunn pprroocceesssseeuurr 660000 MMHHzz ??

     Cela dpend de l'application, mais gnralement non. Le SMP
     implique quelques "frais de gestion" qu'une machine monoprocesseur
     n'a pas.  (WWaaddee HHaammppttoonn).  :)


  3. CCoommmmeenntt ppeeuutt--oonn aaffffiicchheerr lleess ppeerrffoorrmmaanncceess ddee pplluussiieeuurrss pprroocceesssseeuurrss
     ??

     Merci  SSaammuueell SS.. CChheessssmmaann, ici se trouvent quelques utilitaires
     pratiques:

     CChhaarraacctteerr bbaasseedd::
        http://www.cs.inf.ethz.ch/~rauch/procps.html

        En gros, c'est procps v1.12.2 (top, ps, et. al.) et quelques
        patches pour le support SMP.

        Pour les 2.2.x, GGrreeggoorryy RR.. WWaarrnneess a rendu disponible un patch 
        http://queenbee.fhcrc.org/~warnes/procps


     GGrraapphhiiqquuee::
        xosview-1.5.1 supporte le SMP. Et les noyaux suprieurs au
        2.1.85 (inclus) l'entre cpuX dans le fichier /proc/stat.

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

        Ici vous trouverez une version patche par KKuummssuupp LLeeee pour les
        noyaux 2.2.x :
        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
     prcisment avec xosview, car xosview produit une perturbation de
     l'ordonnancement lui mme.  (HH.. PPeetteerr AAnnvviinn)


  4. CCoommmmeenntt aauuttoorriisseerr pplluuss dd''uunn pprroocceessssuuss lloorrss ddee llaa ccoommppiillaattiioonn dduu
     nnooyyaauu ??

     utiliser:

     ___________________________________________________________________
             # make [modules|zImage|bzImages] MAKE="make -jX"
             o X = nombre maximum de processus.
             ATTENTION: Cela ne marche pas avec "make dep".
     ___________________________________________________________________



  Avec un noyau 2.2, rfrez vous au fichier
  /usr/src/linux/Documentation/smp.txt pour des instructions
  spcifiques.

  BTW, 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 RRaallff BBcchhllee).


  5. PPoouurrqquuooii llee tteemmppss ddoonnnneerr ppaarr llaa ccoommmmaannddee time est erron ?  (de
     JJooeell MMaarrcchhaanndd)

     Dans la srie des 2.0, le rsultat rendu par 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: "L'explication est que tout le temps passer sur
     un processeur autre que celui de dmarrage est comptabiliser comme
     temps systme. Si vous chronomtrer un programme, ajoutez le temps
     utilisateur et le temps systme, alors votre chronomtrage sera 
     peu prs juste,  ceci prs qu'il inclut aussi le temps systme qui
     est  peu prs juste,  ceci prs qu'il inclut le temps systme qui
     est correctement dcompter" (JJaakkoobb sstteerrggaaaarrdd).

     Ce bogue est corrig dans les 2.2.






  22..33..  PPrrooggrraammmmaattiioonn SSMMPP

  Section par JJaakkoobb sstteerrggaaaarrdd.

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


  22..33..11..  MMtthhooddeess ddee ppaarraalllllliissaattiioonn



  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
  pas la mmoire, mais communiquent au moyen d'IPC ou d'une API de
  messagerie, ils ne seront pas dcrit plus avant dans cette section.
  Ils ne sont pas trs spcifiques  SMP, puisqu'ils sont employs
  autant - voir plus - sur des ordinateurs monoprocesseurs et des
  clusters de ceux-ci.


  Seul les threads POSIX nous fournissent des threads multiples
  partageant les ressources comme - particulirement - la mmoire. C'est
  cette capacit qui fait des machines SMP leur particularit, autoriser
  plusieurs processeurs  partager leur mmoire. Pour employer deux (ou
  plus ;) processeurs d'un systme SMP, utilisez une librairie de thread
  du noyau.  Une bonne librairie est LinuxThreads, une librairie de
  thread crite per Xavier Leroy
  <http://pauillac.inria.fr/~xleroy/linuxthreads/> qui 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 implmentations des threads (et thread POSIX) qui sont
  de niveau application, et ne tirent pas avantage des threads du noyau.
  Ces paquetages gardent le thread dans un seul processus, et par-l ne
  tirent pas avantage du SMP. Nanmoins, elles sont bonnes pour beaucoup
  d'application et ont tendance  tre plus rapide que les threads du
  noyau sur des systmes monoprocesseurs.

  Le multi-threading n'a jamais t vraiment populaire dans le monde
  UN*X.  Pour quelques raisons, les applications exigeant de multiple
  processus ou thread, ont t pour la plupart crite en utilisant
  fork(). Donc, en utilisant l'approche des threads, certain rencontre
  des problmes d'incompatibilits (de non-adaptation aux thread des)
  librairies, compilateurs et debogueurs.  GNU/Linux ne fait pas
  exception  cela. Espront que les quelques prochaines sections
  apporteront une petite lumire sur ce qui possible et ce qui ne l'est
  pas.



  22..33..22..  LLaa lliibbrraaiirriiee CC

  Les vieilles librairies ne sont pas sures au niveau threads. Il est
  trs important que vous utilisiez la GNU LibC (gglliibbcc), aussi connue
  sous le nom de lliibbcc66. Vous pouvez videmment utiliser des versions
  antrieurs, mais cela vous causera plus de problmes que de mettre 
  jour votre systme, enfin probablement :)

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


  22..33..33..  LLaanngguuaaggeess,, CCoommppiillaatteeuurrss eett ddbboogguueeuurrss

  Il y a une grande quantit de langage de programmation disponible sous
  GNU/Linux, et beaucoup d'entre eux utilisent les threads d'une manire
  ou d'une autre (certains langages comme Ada et Java possde mme les
  threads dans les primitives du langage).

  Cette section, toutefois, en ce moment, ne dcrira que le C et le C++.
  Si vous avez de l'exprience en programmation SMP avec d'autre
  langages, S'il vous plat clairez nous.

  les compilateurs GNU C et C++, tout comme EGCS C et C++, fonctionnent
  avec le support thread de la librairie C standard (gglliibbcc). Il y a
  nanmoins quelques problmes:


  1. Quand vous compilez en C ou C++, utilisez --DD__RREEEENNTTRRAANNTT dfinit dans
     la ligne de commande du compilateur.  Il est ncessaire de faire
     fonctionner certaines fonctions error-handling comme la variable
     errno.

  2. Quand vous utilisez C++, si deux threads rencontrent des exceptions
     simultanment, le programme retournera une erreur de segmentation.
     Le compilateur ne gnre pas de code d'exception adapt aux
     threads.

     Une manire de contourner le problme est de mettre un
     pthread_mutex_lock(&global_exception_lock) dans le(s) constructeurs
     de chaques classes que vous throw(), et mettre le
     pthread_mutex_unlock(...) correspondant dans le destructeur. Ce
     n'est pas beau mais  marche.  La solution est donne par MMaarrkkuuss
     FFeerrcchh.

  Le GNU Dbogueur GGDDBB  partir de 4.18, devrait prendre en main les
  threads correctement. La plupart des distributions Linux offrent une
  version patche de gdb pour prendre en compte les threads.

  Il n'est pas ncessaire de patcher la gglliibbcc dans le but de la faire
  fonctionner 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
  ddie au dveloppement), il n'y a pas besoin de patcher la gglliibbcc.

  Notez que les core-dumps ne sont d'aucune utilit quand vous utilis
  de multiple threads. D'une manire ou d'une autre, le core dump est
  attach aux thread courant, et non au programme tout entier. Aussi,
  quand vous dboguer quelque chose, faite le du dbogueur

  AAssttuuccee:: Si vous avez un thread qui perd la tte, comme utiliser 100%
  du temps CPU, et que vous semblez ne pas pouvoir deviner pourquoi,
  voici une belle manire de trouver ce qui se passe: lancez le
  programme depuis la ligne de commande, sans GDB. Faites perdre la tte
   votre thread.  Utilisez ttoopp pour obtenir le PID du processus. Lancez
  GDB tel que ggddbb pprrooggrraamm ppiidd. Cela fera GDB s'attacher lui-mme au
  processus dont vous avez spcifier le PID, et arrter le thread. Vous
  avez maintenant une session GDB avec le thread offensant, et pouvez
  utiliser bbtt ou d'autre pour voir ce qui arrive.


  22..33..44..  AAttrreess lliibbrraaiirriieess

  EElleeccttrriiccFFeennccee:: Cette librairie n'est pas sure du point de vue SMP Il
  devrait tre possible, nanmoins, de la faire fonctionner dans un
  environnement en insrant des verrous mutex dans le code
  d'ElectricFence.



  22..33..55..  DD''aauuttrreess ppooiinnttss  pprrooppooss ddee llaa pprrooggrraammmmaattiioonn SSMMPP


  1. OO ppuuiiss--jjee ttrroouuvveerr pplluuss dd''iinnffoorrmmaattiioonn ssuurr llaa pprrooggrraammmmaattiioonn
     ppaarraallllllee ??

     Voyez Linux Parallel Processing HOWTO
     <http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html>
     Beaucoup d'informations utiles peuvent tre trouv  Parallel
     Processing using Linux <http://yara.ecn.purdue.edu/~pplinux/>

     Voyez aussi Linux Threads FAQ <http://linas.org/linux/threads-
     faq.html>


  2. EExxiissttee--tt--iill ddeess pprrooggrraammmmeess oouu ddeess lliibbrraaiirriieess uuttiilliissaanntt lleess tthhrreeaaddss
     ??

     Oui. Pour les programmes vous devriez regarder  Multithreaded
     programs on linux <http://www.informatik.uni-
     bremen.de/~hollow/mthread.html> (J'adore les liens hypertextes, le
     saviez vous ? ;))

     En ce qui concerne les librairies, il y a:


     OOppeennGGLL MMeessaa lliibbrraarryy
        Merci  DDaavviidd BBuuccccaarreellllii, aannddrreeaass SScchhiifffflleerr et EEmmiill BBrriiggggss, il
        existe une version multithread ( l'heure actuelle [1998-05-11],
        il y a une version qui fonctionne et permet d'obtenir un
        accroissement de 5-30% avec certaine suite de test (benchmarks)
        OpenGl). La partie multithread est maintenant incluse dans la
        distribution Mesa officielle comme une option exprimentale.
        Pour plus d'information, voyez Mesa library
        <http://www.ssec.wisc.edu/~brianp/Mesa.html>


     BBLLAASS
        BLAS et FFTs optimis Pentium pro pour Intel Linux
        <http://www.cs.utk.edu/~ghenry/distrib/>

        Les routines multithread BLAS ne sont pas disponibles pour
        l'instant, mais une librairie multithread est prvue pour
        1998-05-27, voir Blas News
        <http://www.cs.utk.edu/~ghenry/distrib/blasnews> pour plus de
        dtails.


     TThhee GGIIMMPP
        EEmmiill BBrriiggggss, la mme personne qui est impliquer 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3..  QQuueessttiioonnss ssppcciiffiiqquueess  ll''aarrcchhiitteeccttuurree xx8866


  33..11..  PPoouurrqquuooii cceellaa nnee mmaarrcchhee--tt--iill ppaass aavveecc mmaa mmaacchhiinnee ??


  1. PPuuiiss--jjee uuttiilliisseerr llee mmooddee SSMMPP aavveecc uunn CCPPUU CCyyrriixx//AAMMDD//nnoonn--IInntteell ??

     RRppoonnssee ccoouurrttee:: non.

     RRppoonnssee lloonngguuee 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) FYI -Cyrix
     et AMD support le standard non-propritaire OpenPIC SMP mais
     actuellement il n'y a pas de carte mre l'utilisant.


  2. PPoouurrqquuooii mmoonn vviieeuuxx CCoommppaaqq nnee mmaarrcchhee ppaass ??

     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 cocher "full Table mode".  C'est une recommandation officielle
     de Compaq, bien que j'aie t incapable de trouver cette option
     dans le BIOS... (DDaanniieell RRooeesseenn)


  3. PPoouurrqquuooii mmoonn AALLRR nnee ffoonnccttiioonnnnee--tt--iill ppaass ??

     De RRoobbeerrtt HHyyaatttt: ALR Revolution quad-6 semble  peu prs sure,
     alors que quelques machines revolution quad plus vieilles sans
     processeurs P6 ne semble pas "fiables"...


  4. PPoouurrqquuooii mmaa mmaacchhiinnee SSMMPP eesstt ssii lleennttee ?? ou PPoouurrqquuooii uunn pprroocceesssseeuurr
     mmoonnttrree uunnee vvaalleeuurr bbooggoommiippss bbaassssee aalloorrss qquuee llee pprreemmiieerr eesstt nnoorrmmaall ??

     De AAllaann CCooxx: Si un de vos processeurs rapporte une valeur bogomips
     trs basse c'est que son cache n'est pas activ. Votre vendeur vous
      probablement fournis un BIOS bogu. Obtenez un patch pour
     contourner cela ou mieux retourn la  votre vendeur et achet 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J''aaii eenntteenndduu ddiirree qquuee ddeess mmaacchhiinneess IIBBMM aavvaaiieenntt ddeess pprroobbllmmeess


     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. IIll yy aa--tt--iill uunn qquueellccoonnqquuee aavvaannttaaggee ddeess ssppcciiffiiccaattiioonn MMPP 11..44 ssuurr lleess
     11..11 ??

     Non (selon Alan :) ), 1.4 est juste une spcification plus stricte
     de 1.1.


  7. ppoouurrqquuooii ll''hhoorrllooggee ddrriivvee ssii rraappiiddeemmeenntt qquuaanndd jjee ffoonnccttiioonnnnee eenn mmooddee
     SSMMPP ??


     Ceci est un problme connu avec la gestion des IRQ et les longs
     blocages noyau dans la srie 2.0 des noyaux. Pensez  mettre  jour
     votre systme vers un 2.2 plus rcent.

     De JJaakkoobb OOeesstteerrggaaaarrdd: Ou, pensez  utiliser xntpd. Cela devrait
     garder votre horloge  l'heure. (je pense avoir entendu qu'activer
     RTC dans le noyau corrige aussi le problme de drive de l'horloge.
     Cela  march pour moi ! Mais je ne suis pas sure si cela est
     gnral ou si j'ai juste t chanceux)


     Il y a quelques corrections du noyau dans les derniers 2.2.2 qui
     devraient rsoudre ce problme.



  8. PPoouurr qquuooii mmeess pprroocceesssseeuurrss ssoonntt--iillss nnuummrroottss 00 eett 22 aauu lliieeuu ddee 00 eett
     11 ((oouu aauuttrree nnuummrroottaattiioonn bbiizzaarrrree)) ??

     Le numro du processeur est fix par le fabricant de la carte mre
     et ne veux absolument rien dire. Ignorez le.



  9. MMoonn ssyyssttmmee qquuaaddrruuppllee XXeeoonn ppllaannttee ddss qquu''iill aa ddccoommpprreessss llee nnooyyaauu

     (DDoouugg LLeeddffoorrdd) Essayez de recompiler LILO avec le support
     LARGE_EBDA et faite attention  bien toujours utiliser bzImage
     quand vous compiler le noyau.  Cela semble avoir rsolu le problme
     de plantage au dmarrage ici sur une carte mre Intel multi-Xeon.
     Nanmoins, s'il vous plat notez que cela semble aussi affecter
     LILO en cela que l'option root= ne fonctionne plus, faite donc bien
     attention d'avoir appliqu 'rdev'  votre noyau en moment o vous
     lancez LILO afin d'tre sur que votre noyau charge correctement le
     systme de fichier racine au dmarrage.


     (RRoobbeerrtt MM.. HHyyaatttt) Avec 3 processeurs, avez-vous un terminateur dans
     le 4me emplacement ?


  10.
     DDuurraanntt llee ddmmaarrrraaggee llaa mmaacchhiinnee ppllaannttee eenn ssiiggnnaallaanntt uunn pprroobbllmmee
     IIOOAAPPIICC

     Essaye l'option de dmarrage "noapic" (JJoohhnn AAllddrriicchh) et/ou
     "reboot=bios" (TTeerrrryy SShhuullll).


  11.
     MMoonn ssyyssttmmee ssee bbllooqquuee lloorrss ddee ttrraaffiicc NNFFSS iinntteennssee

     Essaye le dernier noyau 2.2.x et le patch knfsd. Cela est en cour
     d'investigation.  (WWaaddee HHaammppttoonn)



  12.
     MMoonn ssyyssttmmee bbllooqquuee ssaannss mmeessssaaggee ooooppss

     Si vous utilisez les noyaux 2.2.11 ou 2.2.12, rcuprez le dernier
     noyau. Par exemple 2.2.13 possde de nombreuse correction SMP.
     Plusieurs personnes ont rapport ces noyaux comme instable pour le
     SMP. Ces mmes noyaux peuvent avoir des problmes NFS qui peuvent
     provoquer des blocages. Aussi, utiliser une console srie pour
     capturer vos messages oops.  (WWaaddee HHaammppttoonn)

     Si le problme persiste (et les autres suggestions sur cette listes
     n'ont pas aid non plus), alors vous devriez essayer les derniers
     noyaux 2.3. Ils ont un code SMP/APIC plus bavard (et plus
     robustes), et un code de prvention contre les blocage dur qui
     produit des oops plus significatifs au lieu de planter
     silencieusement. (IInnggoo MMoollnnaarr)


  13.
     DDbboogggguueerr ddeess bbllooccaaggeess

     (item par WWaaddee HHaammppttoonn)

     Un bon moyen de dboguer les blocages est de se procurer le patch
     ikd de Andrea Arcangeli:
     ftp://ftp.suse.com/pub/people/andrea/kernel-patches

     Il y a plusieurs options de dbogage, mais n'utiliser 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 est fonctionnel, aprs avoir dmarrer
     avec votre nouveau noyau, /cat /proc/interrupts et vrifiez que
     vous obtenez des NMI.  Quand la machine bloque, vous devriez
     obtenir un oops.

     Vous pouvez aussi essayer l'option %eip. Cela autorise le noyau 
     crire sur la console l'adresse %eip chaque fois qu'une fonction du
     noyau est appele. Quand la machine bloque, crivez sur un papier
     la premire colonne ordonne selon la seconde colonne et ensuite
     cherchez les adresses dans le fichier System.map. Cela ne marche
     qu'en mode console.

     Notez aussi que l'utilisation de console srie facilite grandement
     le dbogage des blocages noyau, pas seulement les blocages des
     noyaux SMP !


  14.
     MMeessssaaggeess ""AAPPIICC eerrrroorr iinntteerrrruupptt oonn CCPPUU##nn,, sshhoouulldd nneevveerr hhaappppeenn"" ddaannss
     lleess llooggss

     Un message comme:

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


  indique la 'rception d'une erreur cheksum'. Cela ne peut tre
  provoqu par Linux car la partie checksum des messages APIC est
  compltement matrielle. Cela peut tre un 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.
  (IInnggoo MMoollnnaarr)





  33..22..  CCaauusseess ppoossssiibblleess ddee ppllaannttaaggeess

  Dans cette section vous trouverez quelques information sur les causes
  ppoossssiibbllee de plantage sur une machine SMP (crdits duent  JJaakkoobb
  sstteerrggaaaarrdd pour cette partie).  Autant que je sache (David), ces
  problmes sont spcifiques aux plateformes Intel.




    PPrroobbllmmeess ddee rreeffrrooiiddiisssseemmeenntt

     De RRaallff BBcchhllee: [Concernant la taille des botiers et les
     ventilateurs] Il est important que l'air circule.  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 cot, j'ai vu des botiers
     surdimensionns provoquer de gros problmes.  Il y a des botiers
     au format tour sur le marcher qui sont actuellement pire 
     rafrachir que botier 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 aussi utiles.

     Bien sur vous pouvez toujours aller  Radio Shack (ou similaire) et
     acheter un ventilateur. Vous pouvez utiliser lm_sensor pour
     surveiller la temprature des plus rcent processeurs PII et PIII.
     Cela peut vous aider  dterminer si la chaleur est un problme ou
     non. (WWaaddee HHaammppttoonn)



    MMaauuvvaaiissee bbaarrrreettttee ddee mmmmooiirree

     N'achetez pas de la RAM bon march et ne mlanger pas des barrettes
     diffrente sur une mme carte mre, c'est difficile  cause de
     cela.

     Tout spcialement les cartes mres Tyan qui sont connues pour tre
     difficile sur la vitesse de la RAM (voir le paragraphe ci-dessous
     sur Tyan pour une solution possible).

     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. (WWaaddee HHaammppttoonn)



    MMaauuvvaaiissee ccoommbbiinnaaiissoonn ddee pprroocceesssseeuurrss ddee ccaaddeennccee ddiiffffrreennttee

     Vrifier /proc/cpuinfo pour voir si vos processeurs sont  la mme
     cadence.


    SSii vvoottrree ssyyssttmmee eesstt iinnssttaabbllee,, aalloorrss NNEE PPAASS ll''oovveerrcclloocckkeerr !!

     ... et mme si il est stable, NE PAS l'overclocker.

     De RRaallff BBcchhllee: le surcadencement (overclocking) pose des problmes
     trs subtiles.  J'ai un bel exemple, une de mes vieilles machines
     surcadences fait des erreurs de calcul pour quelques pixels d'une
     fractale de 640 X 400. Le problme est seulement visible quand vous
     les compares en utilisant des outils. Le mieux est donc de ne
     _j_a_m_a_i_s_, _n_e_v_e_r_, _n_u_n_c_a_s_, _n_i_e_m_a_l_s surcadencer.



    NNooyyaauuxx 22..00..xx eett tthheerrnneett rraappiiddee (de RRoobbeerrtt GG.. BBrroowwnn)

     Les noyaux 2.0.x sur des systmes thernet rapide et hautes
     performance ont des problmes significatifs (et connus) avec les
     conditions de course/interblocage (race/deadlock) dans la prise en
     charge des interruptions rseau.

     La solution est d'obtenir la dernire version des pilotes 100BT en
     dveloppement  CESDIS Linux Ethernet device drivers site
     <http://cesdis.gsfc.nasa.gov/linux/drivers/> (ceux qui sont
     dfinent SMPCHECK).



    UUnn bboogguuee ddaannss llee cchhiippsseett 444400FFXX (de EEmmiill BBrriiggggss)

     Si vous avez un systme utilisant le chipset 440FX alors votre
     problme avec les blocages est peut-tre due  une erreur
     documente du chipset. Voici la rfrence.

     Rfrences: Intel 440FX PCIset 82441FX (PMC) et 82442FX (DBX)
     Specification Update.  pg. 13

     http://www.intel.com/design/pcisets/specupdt/297654.htm

     Le problmes peut tre rsolut avec un contournement par le BIOS
     (ou un patch du noyau) et en fait David Wragg a crit un patch qui
     est inclus dans le patch MTRR de Richard Gooch's. Pour plus
     d'information et une solution voyez ici:

     http://nemo.physics.ncsu.edu/~briggs/vfix.html


    NNEE PPAASS llaanncceerr eemmmm338866..eexxee aavvaanntt ddee ddmmaarrrreerr LLiinnuuxx SSMMPP

     De MMaarrkk DDuugguuiidd, Rgle implicite #1 avec une carte mre W6LI. ;)


    SSii llaa mmaacchhiinnee rreeddmmaarrrree//ggllee aauu bboouutt dd''uunn mmoommeenntt,, iill ppeeuutt iill yy
     aavvooiirr ddeeuuxx bboonnnnee rraaiissoonnss lliieess  llaa mmmmooiirree eett aauu BBIIOOSS (de JJaakkoobb
     sstteerrggaaaarrdd)

    Si le BIOS possde des 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 avec ces deux options.

    Si vous avez plus de 64 MB de mmoire dans votre machine, et que
     vous spcifi manuellement le chiffre exacte 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"



    SSooyyeezz aavveerrttiiss ddeess pprroobbllmmeess ccoonncceerrnnaanntt lleess IIRRQQ

     Parfois, certaines cartes ne sont pas reconnus ou peuvent
     dclencher des conflits d'IRQ. Essayez de mettre les cartes sur des
     slots diffrents et si possible les assigner  des IRQ diffrentes.

     Contribu par hhAASSCCIIII : 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 BIOS setup comme "MP 1.4
     mode" ou "route PCI interrupts through IOAPIC", ou "OS Type" non
     configurer ni pour DOS ni pour Novell (IInnggoo MMoollnnaarr).



    AAccccss aauuxx ddiissqquueetttteess ppeennddaanntt qquuee llee ssoonn eesstt aaccttiiff

     Si vous bloquez alors que vous essayez d'accder au lecteur de
     disquette (par exemple pendant que du son est jou) vous devriez
     peut-tre diter le fichier drivers/pci/quirks.c et configurer /int
     isa_dma_bridge_buggy = 1; C'est un problme avec mon Dell WS400
     dual PII/300, 2.2.x, SMP (WWaaddee HHaammppttoonn).




  33..33..  IInnffoorrmmaattiioonnss ssppcciiffiiqquueess aauuxx ccaarrtteess mmrree

  _S_'_i_l _v_o_u_s _p_l_a_i_t _n_o_t_e_z: Des informations plus spcifique peuvent tre
  trouves avec la liste des Cartes mre supposes fonctionnes sous
  Linux SMP <http://www.nlug.org/smp/>



  33..33..11..  CCaarrtteess mmrreess aavveecc ddeess pprroobbllmmeess ccoonnnnuuss


    Aucune pour l'instant


  33..44..  MMaacchhiinnee SSMMPP LLiinnuuxx  bbaass pprriixx ((mmaacchhiinnee ddoouubbllee CCeelleerroonn))

  (SSttpphhaannee ccoolliivveett)


  Les machines SMP Linux les moins chre avec des processeurs achetable
  de nos jours sont les systmes double Celeron. Un tel systme n'est
  pas officiellement possible selon Intel. Il vaut mieux penser  la
  seconde gnration de Celeron, ceux avec 128 Kb de cache L2.


  33..44..11..  EEsstt--iill ppoossssiibbllee ddee ffaaiirree ffoonnccttiioonnnneerr uunnee mmaacchhiinnee ddoouubbllee
  CCeelleerroonn ??

  RRppoonnssee ooffffiicciieellllee dd''IInntteell:: non, le Celeron ne peut pas fonctionner en
  mode SMP.

  RRppoonnssee pprraattiiqquuee:: c'est possible, mais cela demande une altration
  matrielle pour les processeurs Slot 1. La manipulation est dcrite
  par Tomohiro Kawada sur sa page Dual Celeron System
  <http://kikumaru.w-w.ne.jp/pc/celeron/index_e.html>.  Naturellement,
  ce genre de modification annule 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 ou peut mme tre vendu pr-cabl pour une utilisation SMP.
  (AAnnddyy PPoolliinngg, HHaannss -- EErriikk SSkkyyttttbbeerrgg, JJaammeess BBeeaarrdd)

  Il y a aussi une carte mre (ABIT BP6) autorisant deux Celerons dans
  le format Socket 370  tre insr (MMaarrttiijjnn KKrruuiitthhooff, RRyyaann MMccCCuuee).
  ABIT Computer BP6 verifie, teste et native sous linux avec deux ppga
  socket 370 (AAnnddrree HHeeddrriicckk).


  33..44..22..  CCoommmmeenntt LLiinnuuxx ssee ccoommppoorrttee--tt--iill ssuurr lleess ssyyssttmmeess ddoouubbllee CCeelleerroonn
  ??

  Bien, merci.


  33..44..33..  EEtt lleess ssyyssttmmeess ddoouubblleess CCeelleerroonn ??  LLeess pprroocceesssseeuurrss CCeelleerroonn
  ssoonntt rrppuuttss ppoouurr ttrree ffaacciilleemmeenntt ssuurrccaaddeennssaabbllee..

  Cela ppeeuutt marcher. Nanmoins, surcadencer un tel systme n'est pas
  aussi facile  faire que pour un monoprocesseur. Ce n'est
  dfinitivement pas une bonne ide pour un systme de production. Pour
  une utilisation personnelle, des systmes doubles Celeron 300 A
  fonctionnant parfaitement  450 MHz ont t signals.  (ddee nnoommbbrreeuusseess
  ppeerrssoonnnneess)


  33..44..44..  EEtt ffaaiirree uunnee ssyyssttmmee qquuaaddrruuppllee CCeelleerroonn ??

  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 (?).



  33..44..55..  ppoouurrqquuooii ppaass mmllaannggeerr CCeelleerroonn eett PPeennttiiuumm IIII ??

  Un systme utilisant un Celeron "r-autoris" et un pentium II  la
  mme cadence ppeeuutt tthhoorriiqquueemmeenntt fonctionner.

  AAlleexxaannddrree CChhaarrbbeeyy  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 le premier) conduit rapidement  un chec.


  44..  QQuueessttiioonnss ssppcciiffiiqquueess ccoonncceerrnnaanntt ll''aarrcchhiitteeccttuurree SSppaarrcc



  44..11..  QQuueelllllleess ssoonntt lleess mmaacchhiinneess SSppaarrcc ssuuppppoorrtteess ??

  Citation de la page web UltraLinux <http://ultra.linux.cz/> (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 (AAnnttoonn BBllaanncchhaarrdd)

  UltraLinux a fonctionn sur une machine de 14 processeurs (voir la
  sortie dmesg <http://lwn.net/1998/1210/a/dm-sparc.html>).


  44..22..  PPrroobbllmmeess ssppcciiffiiqquuee ccoonncceerrnnaanntt llee ssuuppppoorrtt SSMMPP SSppaarrcc

  (DDaavviidd MMiilllleerr) Il ne devrait pas il y avoir d'inquitudes.

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



  44..33..  LLiimmiitteess SSMMPP ssppcciiffiiqquueess aauu nnooyyaauu ccoouurraanntt ((22..22))

  (DDaavviidd MMiilllleerr) Il y a un bug dans le fichier d'en-tte
  include/linux/tasks.h, cela ncessite de dfinir NR_CPUS  64 sur
  UltraSparc comme c'est la plus haute limite pour le matriel que nous
  supportons :-)


  55..  QQuueessttiioonnss ssppcciiffiiqquueess ccoonncceerrnnaanntt ll''aarrcchhiitteeccttuurree PPoowweerrPPCC



  55..11..  QQuueelllllleess ssoonntt lleess mmaacchhiinneess PPPPCC ssuuppppoorrtteess ??


    Cartes mres PowerSurge (incluant UMAX s900)

    PowerMac

    Motorola MTX: support en cour de dveloppement. Les patches ne sont
     pas encore inclus dans le noyau principale (TTrrooyy BBeennjjeeggeerrddeess)

  (CCoorrtt DDoouuggaann) Non support: Systmes PPC RS/6000



  55..22..  PPrroobbllmmeess ssppcciiffiiqquueess ccoonncceerrnnaanntt llee ssuuppppoorrtt SSMMPP PPPPCC

  Rien. Compilation SMP normale (voir plus haut). Comme d'habitude,
  soyez attentif, Les modules sont spcifiques pour UP ou pour SMP.
  Recompiler les. (PPaauull MMaacckkeerrrraass)


  66..  QQuueessttiioonnss ssppcciiffiiqquueess ccoonncceerrnnaanntt ll''aarrcchhiitteeccttuurree AAllpphhaa



  66..11..  QQuueelllleess ssoonntt lleess mmaacchhiinneess AAllpphhaa ssuuppppoorrtteess ??

  (GGeeeerrtteenn KKuuiippeerr) Le SMP marche pour la plupart, sinon tous, les
  serveurs AXP.

  (JJaayy AA EEssttaabbrrooookk) Le SMP semble fonctionner sur la plupart de nos
  machines [Compaq] avec deux processeurs ou plus. Ceux-ci comprend:

    AS2000/2100 (SABLE)

    AS4000/4100 (RAWHIDE)

    DS20 (DP264)

  Cela n'inclus pas :

    AS2100A (LYNX)

    TurboLaser bigboys (8200/8400)


  66..22..  PPrroobbllmmeess ssppcciiffiiqquuee ccoonncceerrnnaanntt llee ssuuppppoorrtt SSMMPP AAllpphhaa

  Aucun (vraiment ? :-)





  77..  PPooiinntteeuurrss uuttiilleess


  77..11..  DDiivveerrss


    Parallel Processing en utilisant Linux
     <http://yara.ecn.purdue.edu/~pplinux/>

    Linux Parallel Processing HOWTO
     <http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html>

    ((ddppaassss)) Page d'acceuille SMP Linux
     <http://www.uk.linux.org/SMP/title.html>

    linux-smp mailing list

     Pour ssoouussccrriirree, envoyer subscribe linux-smp dans le corps du
     message  majordomo@vger.rutgers.edu

     Pour se ddssiinnssccrriirree, envoyer unsubscribe linux-smp dans le corps du
     message  majordomo@vger.rutgers.edu

     Archives Linux SMP <http://www.linuxhq.com/lnxlists/linux-smp/>

     Archives Linux SMP  progressive-comp.com <http://www.progressive-
     comp.com/Lists/?l=linux-smp&r=1&w=2#linux-smp>



    La librairie pthread de Xavier Leroy
     <http://pauillac.inria.fr/~xleroy/linuxthreads/>

    Les Cartes mres qui parat-il marche avec Linux SMP
     <http://www.nlug.org/smp/>

    procps <http://www.cs.inf.ethz.ch/~rauch/procps.html>

    patch pour procps pour 2.2.x
     <http://queenbee.fhcrc.org/~warnes/procps>

    xosview <http://lore.ece.utexas.edu/~bgrayson/xosview.html>

    xosview pour 2.2.x
     <http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz>

    Performance SMP de Linux
     <http://www.phy.duke.edu/brahma/benchmarks.smp>

    CESDIS Linux Ethernet device drivers site
     <http://cesdis.gsfc.nasa.gov/linux/drivers/>

    Systmes Double Celeron <http://kikumaru.w-
     w.ne.jp/pc/celeron/index_e.html>



  77..22..  PPrrooggrraammmmeess eett lliibbrraaiirriieess mmuullttiitthhrreeaadd


    Linux Threads FAQ <http://linas.org/linux/threads-faq.html>

    Programmes multithread sur linux <http://www.informatik.uni-
     bremen.de/~hollow/mthread.html>


    BLAS et FFTs optimiz Pentium pro pour Intel Linux
     <http://www.cs.utk.edu/~ghenry/distrib/> (pas diponible tout de
     suite, mais une librairie double processeurs est prvue pour le
     5/27/98, voir Blas News
     <http://www.cs.utk.edu/~ghenry/distrib/blasnews> pour plus de
     dtails)

    Librairie Mesa <http://www.ssec.wisc.edu/~brianp/Mesa.html> (aves
     multithread exprimental)

    Plugins parallles pour The GIMP
     <http://nemo.physics.ncsu.edu/~briggs/gimp/index.html>




  77..33..  PPaattcchheess ssppcciiffiiqquueess SSMMPP


    Patches noyau de Forissier <http://www-
     isia.cma.fr/~forissie/smp_kernel_patch/>

    Patch pour un bug dans le chipset 440FX
     <http://nemo.physics.ncsu.edu/~briggs/vfix.html>

    Patch MTRR (dernire version: 1.9)
     <http://www.atnf.csiro.au/~rgooch/kernel-patches.html>

    PSET - Processor Sets for the Linux kernel
     <http://isunix.it.ilstu.edu/~thockin/pset/>

    Patches SMP de Ingo Molnar <http://www.redhat.com/~mingo/> (pour
     les experts seulement, s'il vous plait lisez linux-
     smp@vger.rutgers.edu)




  77..44..  CCoommppiillaatteeuurrss PPaarraalllllliisseeuurr//OOppttiimmiisseeuurr ppoouurr lleess mmaacchhiinneess 558866//668866
  (( SSuummiitt RRooyy ))


    Pentium Compiler Group <http://www.goof.com/pcg/> crateur de pgcc

    Absoft <http://www.absoft.com/>, compilateur Fortran 90 et Fortran
     77

    The Portland Group, Inc. <http://www.pgroup.com/>, supporte le
     standard OpenMP <http://www.openmp.org> pour la paralllisation
     Fortran sur Linux

    Pacific-Sierra Research Corporation <http://www.psrv.com/>, possde
     un compilateur gratuit F90 pour Linux, et aussi des compilateur
     paralllisant pour SMP Linux

    Applied Parallel Research <http://s006.infomall.org/index.html>,
     actuellement possde des compilateurs parallliseur pour WinNT

    KAI <http://www.kai.com> possde un compilateur C++ pour Linux qui
     comprend OpenMPI. Cela s'appelle Guide_OpenMP. Information 
     http://www.kai.com/parallel/kappro/guide. (GGeerroo WWeeddeemmaannnn)





  88..  GGlloossssaarryy


    SSMMPP Multi-Processeur Symmtrique

    AAPPIICC Controleur d'Interruption Programmable Avanc

    tthhrreeaadd Un thread est l'activiter 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.

    pptthhrreeaadd Posix thread, threads dfinie par le standard Posix.

    AAPPMM Gestion avance de l'nergie



  99..  QQuuooii ddee nneeuuff ??



     vv11..88,, 88 nnoovveemmbbrree 11999999

       La carte mre quadruple celeron tait un canular, restoration de
        l'ancien paragraphe (SSiimmeenn TTiimmiiaann TThhoorreesseenn)


     vv11..77,, 66 nnoovveemmbbrree 11999999

       Nouvelle introduction (CC.. PPoolliisshheerr aka cp)

       De nombreuses corrections typographiques et grammaticales (cp)

       Paragraphe d'introduction sur la compliation du noyau (cp)

       Paragraphe d'introduction sur les besions SMP (cp)

       Rfrence sur KAI un compilateur optimis (GGeerroo WWeeddeemmaannnn)

       Les cartes mres quadruple celeron existent (JJeeffffrreeyy HH.. IInnggbbeerr)


     vv11..66,, 2211 ooccttoobbrree 11999999

       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 sytmes double processeurs avec
        diffrents processeurs x86 (un Celeron et un P-II)


     vv11..55,, 44 ooccttoobbrree 11999999

       Plus de prcision das la description de PSET


     vv11..44,, 3300 sseepptteemmbbrree 11999999

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


     vv11..33,, 2299 sseepptteemmbbrree 11999999

       Beaucoup beaucoup de corrections grammaticales et typographique
        (WWaaddee HHaammppttoonn 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)


     vv11..22,, 2277 sseepptteemmbbrree 11999999

       Changement de nom: ce document est maintenant un howto.  TWD, et
        rapide! (GGuuyyllhheemm AAzznnaarr)


     vv11..11,, 2266 sseepptteemmbbrree 11999999

       Ajout d'un lien vers le premier brouillon de la FAQ de Chris
        Pirish

       Extension des problmes lis aux IRQ


     vv11..0000,, 2255 sseepptteemmbbrree 11999999

       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
        pos 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 (AAnnttoonn BBllaanncchhaarrdd)

       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


     vv00..5544,, 1133 mmaarrss 11999999

       Ajout de la section  propos des systmes SMP Alpha


     vv00..5533,, 0088 mmaarrss 11999999

       Ajout de la section sur les systmes PowerPC SMP


     vv00..5522,, 0077 mmaarrss 11999999

       Ajout de la section sur les systmes Sparc SMP


     vv00..5511,, 0066 mmaarrss 11999999

       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


     vv00..5500,, 0033 ffvvrriieerr 11999999

       Mise  jour du lien "Programmes Multithread sous linux"


     vv00..4499,, 1133 jjaannvviieerr 11999999

       Mise  jour  propos de CONFIG_SMP. Ajout du .txt dans
        Documentation/smp. (MMiicchhaaeell EElliizzaabbeetthh CChhaassttaaiinn)


     vv00..4488,, 1100 ddcceemmbbrree 11999988

       Fautes d'orthographes corrige. Adresses email corrige.


     vv00..4477,, 2200 nnoovveemmbbrree 11999988

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


     vv00..4466,, 1100 nnoovveemmbbrree 11999988

       Mise  jour  propos des cartes mre Epox KP6-LS


     vv00..4455,, 2255 ooccttoobbrree 11999988

       Correction d'une erreur concernant le fichier /proc/stat

       Ajout d'un pointeur vers le site CESDIS Ethernet Linux Drivers


     vv00..4444,, 1144 ooccttoobbrree 11999988

       Mise  jour du lien vers la page web:  _C_a_r_t_e_s _m__r_e _s_u_p_p_o_s__e_s
        _f_o_n_c_t_i_o_n_n__s _s_o_u_s _L_i_n_u_x _S_M_P

       Ajout de l'explication de Jakob: comment chronomtrer un systme
        SMP avec les noyaux 2.0


     vv00..4433,, 99 sseepptteemmbbrree 11999988

       Mise  jour de la premire question dans la section 3.1

       Mise  jour du lien mt-Mesa: multi-thread est maintenant inclus
        comme exprimental dans la distribution Mesa


     vv00..4422,, 22 sseepptteemmbbrree 11999988

       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)


     vv00..4411,, 11 sseepptteemmbbrree 11999988

       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


     vv00..4400,, 2277 aaoott 11999988

       Mise  jour: section 3.1, item 7: processor affinity


     vv00..3399,, 2277 aaoott 11999988

       Mise  jour ncessaire du BOIS Award pour les cartes mres Tyan
        (hhAASSCCIIII)

       Ajout d'un item sur les IRQ dans la section plantage (moi et
        hhAASSCCIIII)

       Ajout du bon support de l'Asus P2B-DS (UUllff RRoommppee)

       Ajout d'une autre archive smp-list dans la section pointeur
        (HHaannkk LLeeiinniinnggeerr)


     vv00..3388,, 88 aaoott 11999988

       Ajout d'un pointeur vers la FAQ Linux Threads


     vv00..3377,, 3300 JJuuiilllleett 11999988

       EEmmiill BBrriiggggss est en train de travailler sur des plugins
        parallles pour Gimp (voir "Il y existe-t-il des programmes ou
        des library utilisant les threads ?", section "Cot
        utilisateur")


     vv00..3366,, 2266 JJuuiilllleett 11999988

       Merci  JJaakkoobb sstteerrggaaaarrdd, deux changement dans "Possible causes
        of Crash"

       Chang le 2.0.33 pour le 2.0.35 (dernier noyau stable)

       Ajout de la section "Les plantages lis au BIOS"


     vv00..3355,, 1144 JJuuiilllleett 11999988

       Ajout des N440BX Server Board dans carte-mre-sans-aucun-
        problme

       Ajout d'une succes story pour la carte mre GigaByte avec une
        mise  jour du BIOS

       Ajout de la section "Comment obtenir les performances maximum ?"
        (attend vos suggestions ;)


     vv00..3344,, 1100 jjuuiinn 11999988

       Ajout de la section "Parallelizing/Optimizing Compilers for
        586/686 machines" dans la section "Useful Pointers", merci 
        SSuummiitt RRooyy

       Correction, "Asus P/I-UP5" est en fait "Asus P/I-P65UP5"


     vv00..3333,, 33 jjuuiinn 11999988

       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


     vv00..3322,, 2277 mmaaii 11999988

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


     vv00..3311,, 1188 mmaaii 11999988

       Elitegroup P6LX2-A marche avec le 2.1.100 et le 101

       Les bugs doivent tre rapports linux-smp@vger.rutgers.edu


     vv00..3300,, 1122 mmaaii 11999988

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


     vv00..2299,, 1111 mmaaii 11999988

       La success story d'une carte mre GigaByte 686 avec le 2.1.101

       Ajout d'un nouvel item dans la section "Cot utilisateur" : "Il
        y 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.


     vv00..2288,, 0099 mmaaii 11999988

       Un miroir US de cette FAQ est maintenant disponible (voir
        Introduction)

       Fusion de deux entres confuses, Gigabyte 686


     vv00..2277,, 0055 mmaaii 11999988

       Nouvelles informations pour les pilotes Adaptec et TekRam

       Les cartes mres Micronics W6-LI marche avec SMP




  1100..  LLiissttee ddeess ccoonnttrriibbuutteeuurrss

  De grand merci  ceux qui m'ont aider  maintenir ce HOWTO:


  1. Tigran A. Aivazian

  2. John Aldrich

  3. Niels Ammerlaan

  4. H. Peter Anvin


  5. Guylhem Aznar

  6. Ralf Bchle

  7. James Beard

  8. Troy Benjegerdes

  9. Anton Blanchard

  10.
     Emil Briggs

  11.
     Robert G. Brown

  12.
     Alexandre Charbey

  13.
     Michael Elizabeth Chastain

  14.
     Samuel S. Chessman

  15.
     Alan Cox

  16.
     Andrew Crane

  17.
     Cort Dougan

  18.
     Mark Duguid

  19.
     Stphane colivet

  20.
     Jocelyne Erhel

  21.
     Jay A Estabrook

  22.
     Byron Faber

  23.
     Mark Garlanger

  24.
     hASCII

  25.
     Wade Hampton

  26.
     Andre Hedrick

  27.
     Claus-Justus Heine

  28.
     Benedikt Heinen
  29.
     Florian Hinzmann

  30.
     Moni Hollmann

  31.
     Robert M. Hyatt

  32.
     Jeffrey H. Ingber

  33.
     Richard Jelinek

  34.
     Tony Kocurko

  35.
     Geerten Kuiper

  36.
     Martijn Kruithof

  37.
     Doug Ledford

  38.
     Kumsup Lee

  39.
     Hank Leininger

  40.
     Ryan McCue

  41.
     Paul Mackerras

  42.
     Cameron MacKinnon

  43.
     Joel Marchand

  44.
     David Maslen

  45.
     Chris Mauritz

  46.
     Jean-Francois Micouleau

  47.
     David Miller

  48.
     Ingo Molnar

  49.
     Ulf Nielsen

  50.
     Jakob Oestergaard

  51.
     C Polisher

  52.
     Matt Ranney

  53.
     Daniel Roesen

  54.
     Ulf Rompe

  55.
     Jean-Michel Rouet

  56.
     Volker Reichelt

  57.
     Sean Reifschneider

  58.
     Sumit Roy

  59.
     Thomas Schenk

  60.
     Terry Shull

  61.
     Chris K. Skinner

  62.
     Hans - Erik Skyttberg

  63.
     Szakacsits Szabolcs

  64.
     Jukka Tainio

  65.
     Simen Timian Thoresen

  66.
     El Warren

  67.
     Gregory R. Warnes

  68.
     Gero Wedemann

  69.
     Christopher Allen Wing

  70.
     Leonard N. Zubkoff







