Linux SMP HOWTO
 David Mentr�, [email protected]
 v1.9, 13 janvier 2000

 Ce HOWTO passe en revue les principaux probl�mes et leurs solutions
 li�s la configuration et � l'emploi d'un syst�me SMP sous Linux.
 ______________________________________________________________________

 Table des mati�res

























































 1. Introduction

 2. Questions ind�pendantes de l'architecture.

    2.1 C�t� noyau
    2.2 C�t� utilisateur
    2.3 Programmation SMP
       2.3.1 M�thodes de parall�lisation
       2.3.2 La librairie C
       2.3.3 Langages, compilateurs et d�bogueurs
       2.3.4 Autres librairies
       2.3.5 Autres points concernant la programmation SMP

 3. Questions sp�cifiques � l'architecture x86

    3.1 Pourquoi cela ne marche-t-il pas avec ma machine ?
    3.2 Causes possibles de plantages
    3.3 Informations sp�cifiques aux cartes m�res
       3.3.1 Cartes m�res avec des probl�mes 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 syst�mes double Celeron ?
       3.4.3 Les processeurs Celeron sont r�put�s pour �tre facilement surcaden�able. Qu'en est-il des syst�mes doubles Celeron ?
       3.4.4 Et un syst�me quadruple Celeron ?
       3.4.5 Pourquoi ne pas m�langer Celeron et Pentium II ?

 4. Questions sp�cifiques � l'architecture Sparc

    4.1 Quellles sont les machines Sparc support�es ?
    4.2 Probl�mes sp�cifiques au support SMP Sparc
    4.3 Limites SMP sp�cifiques au noyau courant (2.2)

 5. Questions sp�cifiques � l'architecture PowerPC

    5.1 Quellles sont les machines PPC support�es ?
    5.2 Probl�mes sp�cifiques concernant le support SMP PPC

 6. Questions sp�cifiques � l'architecture Alpha

    6.1 Quelles sont les machines Alpha support�es ?
    6.2 Probl�mes sp�cifiques au support SMP Alpha

 7. Pointeurs utiles

    7.1 Divers
    7.2 Programmes et librairies multithread
    7.3 Patches sp�cifiques SMP
    7.4 Compilateurs parall�liseurs/optimiseurs pour les machines 586/686 (

 8. Glossary

 9. Quoi de neuf ?

 10. Liste des contributeurs



 ______________________________________________________________________

 11..  IInnttrroodduuccttiioonn

 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 am�lior� depuis. La gestion est beaucoup plus fine dans la
 s�rie 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� ([email protected]). La derni�re
 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 pr�f�re les diffs SGML
 version <http://www.irisa.fr/prive/mentre/smp-howto/smp-howto.sgml> de
 ce document, mais toute remarque (en texte pur) sera grandement
 appr�ci�.  Si vous m'envoyez un e-mail � propos de ce document,
 ins�rez s'il vous pla�t 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 r�ponse plus rapide ;)).


 Ce HOWTO reprend et enrichit first draft <http://www.ihoc.net/linux-
 smp-faq-draft.html> �crit par CChhrriiss PPiirriihh.


 Toutes les informations contenues dans ce HOWTO sont fournies "tel
 que".  Toute garantie explicite, implicite ou l�gale, concernant
 l'exactitude de l'information, de la convenance � quelque usage
 particulier est par la pr�sente sp�cifiquement d�clin�e. 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 r�sultant de
 l'utilisation des informations contenues dans ce document.


 22..  QQuueessttiioonnss iinndd��ppeennddaanntteess ddee ll''aarrcchhiitteeccttuurree..



 22..11..  CC��tt�� nnooyyaauu



 1. LLiinnuuxx ssuuppppoorrttee--tt--iill lleess tthhrreeaaddss mmuullttiipplleess ??  SSii jjee llaannccee ddeeuuxx oouu
    pplluussiieeuurrss pprroocceessssuuss,, sseerroonntt--iillss rr��ppaarrttiiss eennttrree lleess ddiiffff��rreennttss
    pprroocceesssseeuurrss ddiissppoonniibblleess ??

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


 2. QQuueelllleess ssoonntt lleess aarrcchhiitteeccttuurreess SSMMPP ssuuppppoorrtt��eess ??


    DD''aapprr��ss AAllaann CCooxx :
       Les versions 2.0 du noyau supportent les syst�mes SMP de type
       hypersparc (SS20, etc...) et Intel 486, Pentium ou machines
       sup�rieurs compatible avec la norme Intel MP1.1/1.4.  RRiicchhaarrdd
       JJeelliinneekk ajoute : jusqu'� pr�sent, seul des syst�mes ne
       comprenant pas plus de 4 processeurs ont �t� test�s. La
       sp�cification MP (et donc Linux) autorise th�oriquement jusqu'�
       16 processeurs.

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


    DDee RRaallff BB��cchhllee :
       MIPS, m68k et ARM ne g�rent pas le SMP; les deux derniers ne le
       supporteront probablement jamais.
       Ceci �tant, je ferai un hack pour MIPS-SMP d�s que j'aurais une
       machine SMP...


 3. CCoommmmeenntt ccoonnssttrruuiirree uunn nnooyyaauu LLiinnuuxx gg��rraanntt llee SSMMPP ??

    La plupart des distributions ne fournissent pas un noyau adapt� au
    SMP.  Vous devrez donc en faire un vous m�me. Si vous n'avez encore
    jamais compil� de noyau, voila une excellente occasion d'apprendre.
    Expliquer comment compiler un nouveau noyau d�passe le cadre de ce
    document; pr�f�rez-vous au Linux Kernel Howto pour de plus amples
    informations (CC.. PPoolliisshheerr).  Dans la s�rie 2.0 jusqu'� la version
    2.1.132 exclue du noyau, d�commentez la ligne SMP=1 dans le
    Makefile principal (/usr/src/linux/Makefile).


    Dans la version 2.2, configurez le noyau et r�pondez "oui" � la
    question "Symetric multi-processing support" (MMiicchhaaeell EElliizzaabbeetthh
    CChhaassttaaiinn).


    Autorisez l'horloge temps r�el en cochant l'option "RTC support"
    (RRoobbeerrtt GG..  BBrroowwnn). Notez qu'inclure le support RTC, en r�alit�,
    pour autant que je sache, n'emp�che pas le probl�me connu de la
    d�rive de l'horloge avec le SMP : activer cette fonctionnalit�
    avertit en cas de lecture de l'horloge au d�marrage.  Une note de
    RRiicchhaarrdd JJeelliinneekk signale aussi qu'activer "Enhandced RTC" est
    n�cessaire pour activer le deuxi�me processeur (identification) sur
    certaines cartes m�re Intel exotiques.


    Enfin, sur plate-forme Intel, N'ACTIVEZ PAS l'option APM (Advanced
    Power Management)! APM et SMP sont incompatibles et votre syst�me
    plantera certainement (ou du moins probablement ;)) au d�marrage si
    APM est activ� (JJaakkoobb OOeesstteerrggaaaarrdd).  AAllaann CCooxx le confirme :
    d�sactivez APM pour les machines SMP en 2.1.x. En gros le
    comportement APM est ind�fini en pr�sence de syst�mes SMP et tout
    peut arriver.  Toujours sur plate-forme Intel, activez "MTRR
    (Memory Type Range Register) support". Certains BIOS sont
    d�fectueux et n'activent pas la m�moire cache du second processeur.
    Le support MTRR contient le code pour y rem�dier.


    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 (AAllaann CCooxx).


    Si vous obtenez des erreurs au chargement des modules, vous n'avez
    probablement pas r�install� vos modules. N�anmoins, avec quelques
    noyaux 2.2.x, certains ont rapport� des probl�mes lors de la
    recompilation d'un noyau SMP en noyau UP (Uni-Processeur). Afin de
    r�soudre cela, sauvegardez votre fichier .config, et faites un _m_a_k_e
    _m_r_p_r_o_p_e_r, restaurez votre fichier _._c_o_n_f_i_g et recompilez votre noyau
    (_m_a_k_e _d_e_p, etc...)  (WWaaddee HHaammppttoonn).  N'oubliez pas de relancer lilo
    apr�s avoir recopi� votre nouveau noyau.


    R�capitulation :







    ___________________________________________________________________
    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. CCoommmmeenntt ccoommppiillee--tt--oonn uunn nnooyyaauu LLiinnuuxx nnoonn-SMP ?

    Dans la s�rie 2.0, ccoommmmeenntteezz la ligne SMP=1 dans le Makefile
    principal (/usr/src/linux/Makefile).

    Pour la s�rie 2.2, configurez le noyau et r�pondez "no" � la
    question "Symmetric multi-processing support" (MMiicchhaaeell EElliizzaabbeetthh
    CChhaassttaaiinn).


    Vous devez absolument recompiler votre noyau et ses modules pour
    activer ou d�sactiver le mode SMP. N'oubliez pas de faire make
    modules, make modules_install et de relancer lilo. Voyez les notes
    plus haut sur les probl�mes de configuration possibles.


 5. SSaavvooiirr ssii ��aa mmaarrcchhee


     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. SSttaattuutt ddee llaa mmiiggrraattiioonn dduu nnooyyaauu vveerrss uunn vveerrrroouuiillllaaggee ffiinn eett llee
    mmuullttiitthhrreeaaddiinngg ??

    La version 2.2 du noyau poss�de 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 ordonnanc�s simultan�ment.


    Les noyaux 2.3 (futur 2.4) poss�dent vraiment des verrous noyaux
    fins. Dans la s�rie des noyaux 2.3 l'usage des gros blocages noyau
    a tout simplement disparu.  Tous les sous-syst�mes majeurs du noyau
    Linux sont compl�tement cod�s avec des threads : r�seau, VFS, VM,
    ES, block/pages de cache, ordonnancement, interruptions, signaux,
    etc... (IInnggoo MMoollnnaarr)


 7. LLiinnuuxx SSMMPP ssuuppppoorrttee--tt--iill lleess aaffffiinniitt��ss pprroocceesssseeuurr ??



    NNooyyaauuxx ssttaannddaarrdd
       Oui et non. Il n'est pas possible de forcer l'assignation d'un
       processus � un processeur sp�cifique mais l'ordonnanceur Linux
       poss�de un parti-pris pour chaque processus qui tend � conserver
       les processus attach�s � un processeur sp�cifique.


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

         Ce projet a pour but d'offrir une version compatible au
         niveau sources et fonctionnalit�s de pset (tel que d�fini
         par SGI - partiellement retir� de leur noyau 6.4 IRIX)
         pour Linux. Cela autorise les utilisateurs � d�terminer
         sur quel processeur ou ensemble de processeurs un proces�
         sus peut tourner. Les utilisations possibles incluent
         l'assignement de thread � des processeurs distincts, la
         synchronisation, la s�curit� (un processeur d�di� �
         `root') et s�rement davantage encore.


    Nous nous sommes attach�s � concentrer toutes les fonctionnalit�s
    autour de l'appel syst�me sysmp(). Cette routine accepte un certain
    nombre de param�tres qui d�terminent la fonctionnalit� requise.
    Ces fonctions comprennent:

    �  affecter un processus/thread � un processeur sp�cifique;

    �  interdire un processeur d'ex�cuter certains processus;

    �  emp�cher strictement l'utilisation d'un processeur;

    �  assigner � un processeur un _unique_ processus (et ses fils);

    �  information sur l'�tat du processeur;

    �  cr�er/supprimer un ensemble de processeurs, sur lesquels les
       processus peuvent �tre limit�s



 8. AA qquuii rraappppoorrtteerr lleess bboogguueess SSMMPP ??

    Signalez s'il vous pla�t les bogues � [email protected].


 9. AA pprrooppooss ddeess ppeerrffoorrmmaanncceess SSMMPP

    Si vous voulez mesurer les performances de votre syst�me SMP, vous
    pouvez essayer les tests de Cameron MacKinnon, disponibles �
    http://www.phy.duke.edu/brahma/benchmarks.smp.




 22..22..  CC��tt�� uuttiilliissaatteeuurr


 1. AAii--jjee vvrraaiimmeenntt bbeessooiinn ddee SSMMPP ??


    Si vous vous le demandez, vous n'en avez probablement pas besoin.
    :) En g�n�ral les syst�mes multiprocesseurs offrent de meilleurs
    performances que les syst�mes monoprocesseurs, mais pour obtenir un
    gain quelconque vous devez consid�rer bien d'autres facteurs que le
    seul nombre de processeurs. Par exemple, sur un syst�me donn�, si
    le processeur est en g�n�ral inactif, la plupart du temps � cause
    d'un disque dur lent, alors le syst�me est bloqu� au niveau des
    entr�es/sorties ("input/output bound"); il ne b�n�ficiera
    probablement pas de la puissance d'un processeur suppl�mentaire.
    Si, d'un autre cot�, un syst�me doit ex�cuter beaucoup de processus
    simultan�ment et que l'utilisation processeur est tr�s forte, alors
    vous �tes susceptible d'am�liorer les performances de votre
    syst�me. Les disques dur SCSI peuvent �tre tr�s efficaces en
    utilisation avec plusieurs processeurs. Ils peuvent g�rer plusieurs
    commandes simultan�ment sans immobiliser le processeur (CC..
    PPoolliisshheerr).


 2. OObbttiieenntt--oonn lleess mm��mmeess ppeerrffoorrmmaanncceess aavveecc uunn bbiipprroocceesssseeuurr 330000 MMHHzz
    qquu''aavveecc uunn pprroocceesssseeuurr 660000 MMHHzz ??

    Tout d�pend de l'application, mais g�n�ralement non. Le SMP
    implique quelques "frais de gestion" absents d'une machine
    monoprocesseur.  (WWaaddee HHaammppttoonn).  :)


 3. CCoommmmeenntt aaffffiicchheerr lleess ppeerrffoorrmmaanncceess ddee pplluussiieeuurrss pprroocceesssseeuurrss ??

    Gr�ce � SSaammuueell SS.. CChheessssmmaann, se ici trouvent quelques utilitaires
    pratiques :

    CChhaarraacctteerr bbaasseedd::
       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, GGrreeggoorryy RR.. WWaarrnneess a rendu disponible un patch �
       http://queenbee.fhcrc.org/~warnes/procps


    GGrraapphhiiqquuee::
       xosview-1.5.1 supporte le SMP, les noyaux sup�rieurs au 2.1.85
       (inclus) et l'entr�e 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 patch�e par KKuummssuupp LLeeee pour les
       noyaux 2.2.p :
       http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz

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

    N�anmoins, vous ne pouvez pas contr�ler l'ordonnancement de fa�on
    pr�cise avec xosview car ce dernier le perturbe (HH.. PPeetteerr AAnnvviinn).


 4. CCoommmmeenntt aauuttoorriisseerr pplluuss dd''uunn pprroocceessssuuss lloorrss ddee llaa ccoommppiillaattiioonn dduu
    nnooyyaauu ??

    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, r�f�rez vous au fichier
 /usr/src/linux/Documentation/smp.txt pour des instructions pr�cises.

 Par exemple, comme lancer de multiples compilateurs autorise une
 machine avec suffisamment de m�moire � utiliser le temps processeur
 autrement perdu durant les d�lais caus�s par les E/S, make MAKE="make
 -j 2" -j 2 aide r�ellement m�me sur les machines monoprocesseurs.  (de
 RRaallff BB��cchhllee).


 5. PPoouurrqquuooii llee tteemmppss ddoonnnn�� ppaarr llaa ccoommmmaannddee time est-il erron� ?  (de
    JJooeell MMaarrcchhaanndd)

    Dans la s�rie des 2.0, le r�sultat de la commande time est faux.
    La somme utilisateur+syst�me est juste *mais* 'l'�tendue' entre le
    temps utilisateur et le temps syst�me est faux.

    Plus pr�cis�ment : "tout le temps pass� sur un processeur autre que
    celui de d�marrage est comptabilis� comme temps syst�me. Si vous
    chronom�trez un programme, ajoutez le temps utilisateur et le temps
    syst�me. Votre mesure sera alors correcte, � ceci pr�s qu'elle
    inclura aussi le temps syst�me qui restera � d�compter" (JJaakkoobb
    ��sstteerrggaaaarrdd).

    Ce bogue est corrig� dans les versions 2.2.



 22..33..  PPrrooggrraammmmaattiioonn SSMMPP

 Section par JJaakkoobb ��sstteerrggaaaarrdd.

 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.


 22..33..11..  MM��tthhooddeess ddee ppaarraallll��lliissaattiioonn


 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 g�n�ralement la
 m�moire, mais communiquent au moyen d'IPC ou d'une API de messagerie,
 ils ne seront pas d�crits davantage dans cette section. Ils ne sont
 pas vraiment sp�cifiques � SMP, puisqu'ils sont tout autant employ�s -
 sinon plus - avec des ordinateurs monoprocesseurs et des clusters.


 Seuls les threads POSIX fournissent des threads multiples partageant
 certaines ressources telles la m�moire. Cette propri�t� des machines
 SMP autorise plusieurs processeurs � partager leur m�moire. Pour
 employer deux (ou plus ;) ) processeurs avec un syst�me SMP, utilisez
 une librairie de thread du noyau.  Une bonne librairie LinuxThreads,
 une librairie de thread �crite par Xavier Leroy
 <http://pauillac.inria.fr/~xleroy/linuxthreads/> est maintenant
 int�gr�e avec la glibc2 (aka libc6). Les distributions Linux r�centes
 int�grent toutes cette librairie par d�faut. Vous n'avez donc pas �
 obtenir un paquetage s�par� 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. N�anmoins, elles sont bonnes pour beaucoup
 d'applications et ont tendance � �tre plus rapides que les threads du
 noyau sur des syst�mes 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
 probl�mes d'incompatibilit�s et de non-adaptation aux thread des
 librairies, compilateurs et d�bogueurs.  GNU/Linux n'y fait pas
 exception. Esp�rons que les sections qui suivent apporteront quelques
 lumi�res sur ce qui est possible et sur ce qui ne l'est pas.


 22..33..22..  LLaa lliibbrraaiirriiee CC

 Les vieilles librairies ne sont pas s�res au niveau des threads. Il
 est tr�s important que vous utilisiez la GNU libc (gglliibbcc), aussi
 connue sous le nom de lliibbcc66. Vous pouvez �videmment utiliser des
 versions ant�rieurs, mais cela vous causera plus de probl�mes que
 mettre � jour votre syst�me. Enfin, probablement :)

 Si vous voulez utiliser GDB pour d�boguer vos programmes, voyez plus
 bas.


 22..33..33..  LLaannggaaggeess,, ccoommppiillaatteeuurrss eett dd��bboogguueeuurrss

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

 Cette section, pour l'instant, ne d�crira que le C et le C++.  Si vous
 avez une exp�rience 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 (gglliibbcc). Il y a
 n�anmoins quelques probl�mes :


 1. Quand vous compilez en C ou C++, incluez --DD__RREEEENNTTRRAANNTT dans la ligne
    de commande du compilateur. Il est n�cessaire 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
    simultan�ment, le programme retournera une erreur de segmentation.
    Le compilateur g�n�re un code d'exception inadapt� aux threads. Une
    mani�re de contourner le probl�me consiste � mettre un
    pthread_mutex_lock(&global_exception_lock) dans le(s)
    constructeur(s) de chaque classe que vous throw() et � ins�rer le
    pthread_mutex_unlock(...)  correspondant dans le destructeur. Ce
    n'est pas tr�s beau mais �a marche.  Cette solution a �t� fournie
    par MMaarrkkuuss FFeerrcchh.

 Le d�bogueur GNU GGDDBB, � partir de la version 4.18, devrait prendre en
 charge les threads correctement. La plupart des distributions Linux
 comprennent une version patch�e de gdb qui g�re les threads.

 Il n'est pas n�cessaire de patcher la gglliibbcc pour qu'elle fonctionne
 avec des threads. Si vous n'avez pas besoin de d�boguer le logiciel
 (cela peut-�tre vrai pour toutes les machines qui ne sont pas d�di�es
 au d�veloppement), il n'y a pas besoin de patcher la gglliibbcc.

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

 AAssttuuccee :: si vous avez un thread qui perd la t�te, se met � utiliser
 100% du temps CPU et que vous ne voyez pas pourquoi, voici une m�thode
 �l�gante de trouver ce qui se passe : lancez le programme depuis la
 ligne de commande, sans GDB. Faites d�railler votre thread.  Utilisez
 ttoopp pour obtenir le PID du processus. Lancez GDB tel que ggddbb pprrooggrraamm
 ppiidd. GDB s'attachera lui-m�me au processus dont vous avez sp�cifi� le
 PID et arr�tera le thread. Vous disposez maintenant d'une session GDB
 avec le thread incrimin� et vous pouvez utiliser bbtt ou d'autres
 commandes pour suivre ce qui se passe.


 22..33..44..  AAuuttrreess lliibbrraaiirriieess

 EElleeccttrriiccFFeennccee :: cette librairie n'est pas s�re du point de vue SMP.
 Il devrait n�anmoins �tre possible de la faire fonctionner dans un
 environnement thread� en ins�rant des verrous dans son code source.


 22..33..55..  AAuuttrreess ppooiinnttss ccoonncceerrnnaanntt llaa pprrooggrraammmmaattiioonn SSMMPP


 1. OO�� ppuuiiss--jjee ttrroouuvveerr pplluuss dd''iinnffoorrmmaattiioonnss ssuurr llaa pprrooggrraammmmaattiioonn
    ppaarraallll��llee ??

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

    Beaucoup d'informations utiles se trouvent sur Parallel Processing
    using Linux <http://yara.ecn.purdue.edu/~pplinux/>

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


 2. EExxiissttee--tt--iill ddeess pprrooggrraammmmeess oouu ddeess lliibbrraaiirriieess uuttiilliissaanntt lleess tthhrreeaaddss
    ??

    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 :


    OOppeennGGLL MMeessaa lliibbrraarryy
       Gr�ce � DDaavviidd BBuuccccaarreellllii, aannddrreeaass SScchhiifffflleerr et EEmmiill BBrriiggggss, 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 exp�rimentale. Pour plus
       d'information, voyez Mesa library
       <http://www.ssec.wisc.edu/~brianp/Mesa.html>


    BBLLAASS
       BLAS et FFTs optimis�s 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 pr�vue pour
       1998-05-27, voir Blas News
       <http://www.cs.utk.edu/~ghenry/distrib/blasnews> pour plus de
       d�tails.


    TThhee GGIIMMPP
       EEmmiill BBrriiggggss, la m�me personne qui est impliqu�e 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.






 33..  QQuueessttiioonnss sspp��cciiffiiqquueess �� ll''aarrcchhiitteeccttuurree xx8866


 33..11..  PPoouurrqquuooii cceellaa nnee mmaarrcchhee--tt--iill ppaass aavveecc mmaa mmaacchhiinnee ??


 1. PPuuiiss--jjee uuttiilliisseerr llee mmooddee SSMMPP aavveecc uunn CCPPUU CCyyrriixx//AAMMDD//nnoonn--IInntteell ??

    RR��ppoonnssee ccoouurrttee:: non.


    RR��ppoonnssee lloonngguuee Intel r�vendique la propri�t� 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 adh�rent au standard non-propri�taire
    OpenPIC SMP mais actuellement il n'existe pas de carte m�re
    l'utilisant.


 2. PPoouurrqquuooii mmoonn vviieeuuxx CCoommppaaqq nnee ffoonnccttiioonnnnee--tt--iill ppaass ??

    Mettez le en mode compatibilit� MP1.1/1.4.

    V�rifiez "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 (DDaanniieell RRooeesseenn).

    AAddrriiaann PPoorrtteellllii :

    a. Pressez F10 quand le serveur d�marre afin d'entrer dans
       l'utilitaire de configuration syst�me (System Configuration
       Utility)

    b. Pressez Entr�e pour effacer l'�cran de d�marrage

    c. Pressez imm�diatement CTRL+A

    d. Un message appara�tra vous informant que vous �tes maintenant en
       "Advanced Mode"

    e. S�lectionnez ensuite "Configure Hardware" -> "View / Edit
       details"

    f. Vous verrez alors les r�glages avanc�s (m�lang�s avec les
       r�glages ordinaires)

    g. Descendez jusqu'au "APIC Mode" et s�lectionnez alors "Fully
       Mapped"

    h. Sauvegardez les changements et red�marrez


 3. PPoouurrqquuooii mmoonn AALLRR nnee ffoonnccttiioonnnnee--tt--iill ppaass ??

    De RRoobbeerrtt HHyyaatttt: ALR Revolution quad-6 semble � peu pr�s s�re,
    alors que quelques machines Revolution quad plus vieilles sans
    processeurs P6 ne semble pas "fiables"...


 4. PPoouurrqquuooii mmaa mmaacchhiinnee SSMMPP eesstt--eellllee ssii lleennttee ?? ou PPoouurrqquuooii uunn
    pprroocceesssseeuurr mmoonnttrree--tt--iill uunnee vvaalleeuurr bbooggoommiippss bbaassssee eett ppaass ll''aauuttrree ??

    De AAllaann CCooxx: si un de vos processeurs rapporte une valeur bogomips
    tr�s 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 m�re chez un fournisseur comp�tent.

    Un noyau 2.0 (> 2.0.36) contient un patch MTRR qui devrait r�soudre
    ce probl�me (s�lectionnez l'option "handle buggy SMP BIOSes with
    bad MTRR setup" dans le menu "General setup").

    Je pense que les BIOS SMP bogu�s sont pris en charge
    automatiquement dans les derniers noyaux 2.2.


 5. JJ''aaii eenntteenndduu ddiirree qquuee ddeess mmaacchhiinneess IIBBMM aavvaaiieenntt ddeess pprroobbll��mmeess


    Certaines machines IBM poss�dent 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 bas�e sur des 486SLC. Linux/SMP
    requiert un support FPU mat�riel.


 6. LLeess sspp��cciiffiiccaattiioonn MMPP 11..44 pprr��sseenntteenntt--eelllleess uunn qquueellccoonnqquuee aavvaannttaaggee
    vviiss--��--vviiss ddeess sspp��cciiffiiccaattiioonnss 11..11 ??

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


 7. PPoouurrqquuooii ll''hhoorrllooggee dd��rriivvee--tt--eellllee ssii rraappiiddeemmeenntt qquuaanndd llaa mmaacchhiinnee
    ffoonnccttiioonnnnee eenn mmooddee SSMMPP ??


    Il s'agit d'un probl�me connu avec la gestion des IRQ et les
    blocages noyau longs dans la s�rie 2.0 des noyaux. Pensez � mettre
    � jour votre syst�me vers un 2.2 plus r�cent.

    De JJaakkoobb OOeesstteerrggaaaarrdd: ou pensez � utiliser xntpd. Cela devrait
    garder votre horloge � l'heure. Je pense avoir entendu qu'activer
    RTC dans le noyau corrigeait aussi le probl�me de d�rive de
    l'horloge. �a a march� pour moi, mais j'ignore si cela est g�n�ral
    ou si j'ai juste �t� chanceux !


    Certaines corrections du noyau dans les derniers 2.2.x devraient
    r�soudre ce probl�me.



 8. PPoouurrqquuooii mmeess pprroocceesssseeuurrss ssoonntt--iillss nnuumm��rroott��ss 00 eett 22 aauu lliieeuu ddee 00 eett
    11 ((oouu aauuttrree nnuumm��rroottaattiioonn bbiizzaarrrree)) ??

    Le num�ro du processeur est fix� par le fabricant de la carte m�re
    et ne veut absolument rien dire. Ignorez le.


 9. MMoonn ssyysstt��mmee qquuaaddrruuppllee XXeeoonn ppllaannttee dd��ss qquu''iill aa dd��ccoommpprreessss�� llee nnooyyaauu

    (DDoouugg LLeeddffoorrdd) Essayez de recompiler LILO avec le support
    LARGE_EBDA et faites attention � bien toujours utiliser bzImage
    quand vous compilez le noyau. Cela semble avoir r�solu le probl�me
    de plantage au d�marrage ici sur une carte m�re 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 syst�me
    de fichier racine au d�marrage.


    (RRoobbeerrtt MM.. HHyyaatttt) Avec 3 processeurs, avez-vous un terminateur dans
    le 4�me emplacement ?


 10.
    DDuurraanntt llee dd��mmaarrrraaggee llaa mmaacchhiinnee ppllaannttee eenn ssiiggnnaallaanntt uunn pprroobbll��mmee
    IIOOAAPPIICC

    Essayez l'option de d�marrage "noapic" (JJoohhnn AAllddrriicchh) et/ou
    "reboot=bios" (TTeerrrryy SShhuullll).


 11.
    MMoonn ssyysstt��mmee ssee bbllooqquuee lloorrss ddee ttrraaffiicc NNFFSS iinntteennssee

    Essayez le dernier noyau 2.2.x et le patch knfsd. Cela est en cours
    d'investigation.  (WWaaddee HHaammppttoonn)



 12.
    MMoonn ssyysstt��mmee bbllooqquuee ssaannss mmeessssaaggee ooooppss

    Si vous utilisez les noyaux 2.2.11 ou 2.2.12, r�cup�rez le dernier
    noyau. Par exemple 2.2.13 poss�de de nombreuses corrections SMP.
    Plusieurs personnes ont rapport� ces noyaux comme instables pour le
    SMP. Ces m�mes noyaux peuvent avoir des probl�mes NFS qui
    provoqueraient des blocages. Aussi, utilisez une console s�rie pour
    capturer vos messages oops. (WWaaddee HHaammppttoonn)

    Si le probl�me 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 pr�vention contre les blocages durs qui produit des
    oops plus significatifs au lieu de planter en silence (IInnggoo
    MMoollnnaarr).

    (OOssaammuu AAookkii) Vous DEVEZ aussi _d_�_s_a_c_t_i_v_e_r toutes les fonctionnalit�s
    du BIOS li�es � 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 activ�es, des plantages
 al�atoires peuvent se produire


 13.
    DD��bboogguueerr ddeess bbllooccaaggeess

    (item par WWaaddee HHaammppttoonn)

    Un bon moyen de d�boguer 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 d�bogage. N'utilisez PAS l'option de
    blocage logicielle ! Pour des machines SMP r�centes, activez
    l'option kernel debugging et ensuite l'option NMI oopser. Afin de
    v�rifier que le NMI oopser fonctionne, apr�s avoir d�marr� avec
    votre nouveau noyau, ex�cutez un /cat /proc/interrupts et v�rifiez
    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 appel�e.  Quand la machine se bloque, �crivez sur un
    papier la premi�re colonne ordonn�e 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 s�rie facilite grandement le
    d�bogage des blocages noyau, qu'ils soient SMP ou non !


 14.
    MMeessssaaggeess ""AAPPIICC eerrrroorr iinntteerrrruupptt oonn CCPPUU##nn,, sshhoouulldd nneevveerr hhaappppeenn"" ddaannss
    lleess llooggss

    Un message comme:






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


 indique la r�ception d'une erreur de calcul de code d'int�grit�. Linux
 ne peut en �tre responsable car la partie calcul des messages APIC est
 compl�tement mat�rielle. Il peut s'agir d'un probl�me mat�riel
 marginal. Tant que vous ne percevez pas d'instabilit�, ils ne sont pas
 probl�matiques. Les messages APIC sont renvoy�s jusqu'� ce qu'il
 soient d�livr�s (IInnggoo MMoollnnaarr).



 33..22..  CCaauusseess ppoossssiibblleess ddee ppllaannttaaggeess

 Dans cette section vous trouverez quelques information sur les causes
 ppoossssiibblleess de plantage sur une machine SMP (merci � JJaakkoobb ��sstteerrggaaaarrdd
 pour cette partie).  Autant que je sache (David), les probl�mes
 �voqu�s ici sont sp�cifiques aux plate-formes Intel.



 �  PPrroobbll��mmeess ddee rreeffrrooiiddiisssseemmeenntt

    De RRaallff BB��cchhllee: (concernant la taille des bo�tiers et les
    ventilateurs) il est important que l'air circule.  Bien s�r, ce
    n'est pas possible quand toutes sortes d'obstacles, tels des
    c�bles, l'en emp�chent dans des bo�tiers par trop exigus.  D'un
    autre c�t�, j'ai vu des bo�tiers surdimensionn�s provoquer de gros
    probl�mes. Il existe des bo�tiers au format tour sur le march� qui
    s'av�rent actuellement pire � rafra�chir que des bo�tiers au format
    bureau.  En bref, la meilleure chose � faire est de penser �
    l'a�rodynamique dans le bo�tier. Des bo�tiers suppl�mentaires pour
    les p�riph�riques d�gageant de la chaleur sont �galement utiles.

    Bien s�r vous pouvez toujours aller chez Radio Shack (ou similaire)
    et acheter un ventilateur. Vous pouvez utiliser lm_sensor pour
    surveiller la temp�rature des processeurs PII et PIII. Cela peut
    vous aider � d�terminer si la chaleur est un probl�me ou non (WWaaddee
    HHaammppttoonn).


 �  MMaauuvvaaiissee bbaarrrreettttee ddee mm��mmooiirree

    N'achetez pas de la RAM bon march� et ne m�langez pas des barrettes
    diff�rente sur une m�me carte m�re.

    Les cartes m�res Tyan sont tout particuli�rement 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 m�moire RAM PC 100 � 10ns vendues
    avec des cartes m�res dont le processeur avait vraiment besoin de
    RAM � 8ns (WWaaddee HHaammppttoonn).


 �  MMaauuvvaaiissee ccoommbbiinnaaiissoonn ddee pprroocceesssseeuurrss ddee ffrr��qquueenncceess ddiiffff��rreenntteess

    V�rifiez /proc/cpuinfo pour voir si vos processeurs fonctionnent �
    la m�me cadence.



 �  SSii vvoottrree ssyysstt��mmee eesstt iinnssttaabbllee,, SSUURRTTOOUUTT nnee ll''oovveerrcclloocckkeezz ppaass !!

    D'ailleurs, m�me s'il est stable, ne le surcadencez pas.


    De RRaallff BB��cchhllee: le surcadencement pose des probl�mes tr�s subtils.
    J'ai un bel exemple: une de mes vieilles machines surcadenc�es
    commet des erreurs de calcul pour quelques pixels d'une fractale de
    640 X 400. Le probl�me est seulement visible quand on les compare
    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.


 �  NNooyyaauuxx 22..00..xx eett EEtthheerrnneett rraappiiddee (de RRoobbeerrtt GG.. BBrroowwnn)

    Les noyaux 2.0.x sur des syst�mes Ethernet rapide et hautes
    performances ont des probl�mes significatifs (et connus) avec les
    conditions de course/inter-blocage (race/deadlock) dans la prise en
    charge des interruptions r�seau.


    La solution consiste � obtenir la derni�re version des pilotes
    100BT en cours de d�veloppement � CESDIS Linux Ethernet device
    drivers site <http://cesdis.gsfc.nasa.gov/linux/drivers/> (ceux qui
    sont au point d�finissent SMPCHECK).


 �  UUnn bboogguuee ddaannss llee cchhiippsseett 444400FFXX (de EEmmiill BBrriiggggss)

    Si votre syst�me utilise le chipset 440FX alors les probl�mes de
    blocage sont peut-�tre d�s � une erreur (document�e) du chipset. En
    voici la r�f�rence:


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


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


    Le probl�me peut se r�soudre 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


 �  NNEE PPAASS llaanncceerr eemmmm338866..eexxee aavvaanntt ddee dd��mmaarrrreerr LLiinnuuxx SSMMPP

    De MMaarrkk DDuugguuiidd, R�gle implicite #1 avec une carte m�re W6LI. ;)


 �  SSii llaa mmaacchhiinnee rreedd��mmaarrrree//gg��llee aauu bboouutt dd''uunn mmoommeenntt,, iill ppeeuutt yy aavvooiirr
    ddeeuuxx bboonnnnee rraaiissoonnss llii��eess �� llaa mm��mmooiirree eett aauu BBIIOOSS (JJaakkoobb ��sstteerrggaaaarrdd)

 �  Si le BIOS est muni de r�glages comme "memory hole at 16M" et/ou
    "OS/2 memory > 64MB", essayez de les d�sactiver tous les deux.
    Linux ne r�agit pas toujours tr�s bien � ces deux options.

 �  Si vous avez plus de 64 MB de m�moire dans votre machine, et que
    vous sp�cifiez manuellement le chiffre exact dans la configuration
    de LILO, vous devriez sp�cifier 1 MB de moins que ce vous avez
    r�ellement dans votre machine. Si vous avez 128 MB, votre ligne
    dans votre lilo.conf ressemble �: append="mem=127M"

 �  SSooyyeezz aavveerrttiiss ddeess pprroobbll��mmeess ccoonncceerrnnaanntt lleess IIRRQQ

    Parfois, certaines cartes ne sont pas reconnues ou peuvent
    d�clencher des conflits d'IRQ. Essayez de mettre les cartes sur des
    slots diff�rents et si possible de les assigner � des IRQ
    diff�rentes.


    Contribution de hhAASSCCIIII : enlever la ligne "append="hisax=9,2,3"
    dans lilo.conf autorisant � utiliser un noyau de la s�rie 2.1.xx
    avec le support ISDN + Hisax activ�. Les noyaux de la s�rie 2.0.xx
    ne posent pas ce genre de probl�me.


    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 (IInnggoo MMoollnnaarr).



 �  UUttiilliissaattiioonn ssiimmuullttaann��ee dduu lleecctteeuurr ddee ddiissqquueetttteess ddee llaa ssoorrttiiee ssoonn

    Si vous bloquez alors que vous essayez d'acc�der 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 probl�me se manifeste avec mon
    Dell WS400 dual PII/300, 2.2.x, SMP (WWaaddee HHaammppttoonn).



 33..33..  IInnffoorrmmaattiioonnss sspp��cciiffiiqquueess aauuxx ccaarrtteess mm��rreess

 _N_o_t_e_z que des informations plus pr�cises peuvent �tre trouv�es avec la
 liste des Cartes m�re suppos�es fonctionner sous Linux SMP
 <http://www.nlug.org/smp/>



 33..33..11..  CCaarrtteess mm��rreess aavveecc ddeess pprroobbll��mmeess ccoonnnnuuss


 �  Aucune pour l'instant


 33..44..  MMaacchhiinnee SSMMPP LLiinnuuxx �� bbaass pprriixx ((mmaacchhiinnee ddoouubbllee CCeelleerroonn))

 (SStt��pphhaannee ��ccoolliivveett)


 Les machines SMP Linux les moins ch�res avec des processeurs
 disponibles de nos jours sont les syst�mes double Celeron. Un tel
 syst�me n'est pas officiellement possible selon Intel. On a int�r�t �
 v�rifier qu'il s'agit bien de Celerons de seconde g�n�ration, ceux
 avec 128 Kb de cache L2.


 33..44..11..  EEsstt--iill ppoossssiibbllee ddee ffaaiirree ffoonnccttiioonnnneerr uunnee mmaacchhiinnee ddoouubbllee
 CCeelleerroonn ??

 RR��ppoonnssee ooffffiicciieellllee dd''IInntteell :: non, le Celeron ne peut pas fonctionner
 en mode SMP.



 RR��ppoonnssee pprraattiiqquuee :: c'est possible, mais cela demande une modification
 mat�rielle pour les processeurs Slot 1. La manipulation est d�crite
 par Tomohiro Kawada sur sa page Dual Celeron System
 <http://kikumaru.w-w.ne.jp/pc/celeron/index_e.html>.  Naturellement,
 de telles modifications annulent la garantie... Certaines versions du
 processeur Celeron sont aussi disponibles au format Socket 370.  Dans
 ce cas, l'alt�ration peut-�tre faite sur l'adaptateur Socket 370 �
 Slot 1 qui peut m�me �tre vendu pr�-cabl� pour une utilisation SMP
 (AAnnddyy PPoolliinngg, HHaannss -- EErriikk SSkkyyttttbbeerrgg, JJaammeess BBeeaarrdd).


 Il existe aussi une carte m�re (ABIT BP6) autorisant l'insertion de
 deux Celerons dans le format Socket 370 (MMaarrttiijjnn KKrruuiitthhooff, RRyyaann
 MMccCCuuee), l'ABIT Computer BP6 v�rifi�e, test�e et support�e sous linux
 avec deux ppga socket 370 (AAnnddrree HHeeddrriicckk).


 33..44..22..  CCoommmmeenntt LLiinnuuxx ssee ccoommppoorrttee--tt--iill ssuurr lleess ssyysstt��mmeess ddoouubbllee CCeelleerroonn
 ??

 Bien, merci.


 33..44..33..  QQuu''eenn eesstt--iill ddeess ssyysstt��mmeess ddoouubblleess CCeelleerroonn ??  LLeess pprroocceesssseeuurrss
 CCeelleerroonn ssoonntt rr��ppuutt��ss ppoouurr ��ttrree ffaacciilleemmeenntt ssuurrccaaddeenn��aabbllee..

 Cela ppeeuutt marcher. N�anmoins, surcadencer un tel syst�me n'est pas
 aussi facile que pour un monoprocesseur. Ce n'est franchement pas une
 bonne id�e pour un syst�me de production. Pour une utilisation
 personnelle, des syst�mes double Celeron 300 A fonctionnant
 parfaitement � 450 MHz ont �t� signal�s (ddee nnoommbbrreeuusseess ppeerrssoonnnneess).


 33..44..44..  EEtt uunn ssyysstt��mmee qquuaaddrruuppllee CCeelleerroonn ??

 C'est impossible. Les processeurs Celerons poss�dent � peu pr�s les
 m�mes fonctionnalit�s qu'un Pentium II basique. Si vous voulez plus de
 deux processeur dans votre syst�me, vous devriez regarder du c�t� des
 machines � base de Pentium Pro, Pentium II Xeon ou Pentium III (?).


 33..44..55..  PPoouurrqquuooii nnee ppaass mm��llaannggeerr CCeelleerroonn eett PPeennttiiuumm IIII ??

 Un syst�me utilisant un Celeron "r�-autoris�" et un Pentium II � la
 m�me cadence ppeeuutt tthh��oorriiqquueemmeenntt fonctionner.

 AAlleexxaannddrree CChhaarrbbeeyy � fabriqu� un tel syst�me:

 �  Carte m�re Asus P2B-D, proc 1: Celeron 366, proc 2: Pentium II
    400@266

 �  Les fr�quences de bus 66Mhz et 75Mhz furent fonctionnelles

 �  Le processeur le plus rapide (dans ce cas le Celeron) doit �tre
    plac� sur le deuxi�me slot. Inverser les processeurs (le plus
    rapide en premier) conduit rapidement � un �chec.


 44..  QQuueessttiioonnss sspp��cciiffiiqquueess �� ll''aarrcchhiitteeccttuurree SSppaarrcc



 44..11..  QQuueelllllleess ssoonntt lleess mmaacchhiinneess SSppaarrcc ssuuppppoorrtt��eess ??

 Citation de la page web UltraLinux <http://ultra.linux.cz/> (syst�mes
 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 (AAnnttoonn BBllaanncchhaarrdd)

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


 44..22..  PPrroobbll��mmeess sspp��cciiffiiqquueess aauu ssuuppppoorrtt SSMMPP SSppaarrcc

 (DDaavviidd MMiilllleerr) Il ne devrait pas y avoir d'inqui�tudes.

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


 44..33..  LLiimmiitteess SSMMPP sspp��cciiffiiqquueess aauu nnooyyaauu ccoouurraanntt ((22..22))

 DDaavviidd MMiilllleerr: il y a un bug dans le fichier d'en-t�te
 include/linux/tasks.h, cela n�cessite de d�finir NR_CPUS � 64 sur
 UltraSparc puisqu'il s'agit de la limite sup�rieure pour le mat�riel
 que nous supportons :-)


 55..  QQuueessttiioonnss sspp��cciiffiiqquueess �� ll''aarrcchhiitteeccttuurree PPoowweerrPPCC



 55..11..  QQuueelllllleess ssoonntt lleess mmaacchhiinneess PPPPCC ssuuppppoorrtt��eess ??


 �  Cartes m�res PowerSurge (incluant UMAX s900)

 �  PowerMac

 �  Motorola MTX : support en cours de d�veloppement. Les patches ne
    sont pas encore inclus dans le noyau principal (TTrrooyy BBeennjjeeggeerrddeess).

 (CCoorrtt DDoouuggaann) Non support�: Syst�mes PPC RS/6000


 55..22..  PPrroobbll��mmeess sspp��cciiffiiqquueess ccoonncceerrnnaanntt llee ssuuppppoorrtt SSMMPP PPPPCC

 Rien. Compilation SMP normale (voir plus haut). Comme d'habitude,
 soyez attentif. Les modules sont sp�cifiques pour UP ou pour SMP.
 Recompilez les (PPaauull MMaacckkeerrrraass).


 66..  QQuueessttiioonnss sspp��cciiffiiqquueess �� ll''aarrcchhiitteeccttuurree AAllpphhaa


 66..11..  QQuueelllleess ssoonntt lleess mmaacchhiinneess AAllpphhaa ssuuppppoorrtt��eess ??

 GGeeeerrtteenn KKuuiippeerr : le SMP marche pour la plupart des serveurs AXP, sinon
 pour tous.


 JJaayy AA EEssttaabbrrooookk : 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)


 66..22..  PPrroobbll��mmeess sspp��cciiffiiqquueess aauu ssuuppppoorrtt SSMMPP AAllpphhaa

 Aucun (vraiment ? :-) ).


 77..  PPooiinntteeuurrss uuttiilleess


 77..11..  DDiivveerrss


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

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

 �  ((dd��ppaassss��)) Page d'acceuille SMP Linux
    <http://www.uk.linux.org/SMP/title.html>

 �  linux-smp mailing list

    Pour ssoouussccrriirree, envoyez subscribe linux-smp dans le corps du
    message � [email protected]

    Pour se dd��ssiinnssccrriirree, envoyez unsubscribe linux-smp dans le corps du
    message � [email protected]

    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 m�res qui para�t-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/>

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



 77..22..  PPrrooggrraammmmeess eett lliibbrraaiirriieess mmuullttiitthhrreeaadd


 �  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 optimis� Pentium pro pour Intel Linux
    <http://www.cs.utk.edu/~ghenry/distrib/> (pas disponible tout de
    suite, mais une librairie double processeurs est pr�vue pour le
    5/27/98. Pour plus de d�tails, voir Blas News
    <http://www.cs.utk.edu/~ghenry/distrib/blasnews>).

 �  Librairie Mesa <http://www.ssec.wisc.edu/~brianp/Mesa.html>
    (support multithread exp�rimental)

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



 77..33..  PPaattcchheess sspp��cciiffiiqquueess SSMMPP


 �  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 (derni�re 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 esth�tes seulement, s'il vous pla�t lisez linux-
    [email protected])



 77..44..  CCoommppiillaatteeuurrss ppaarraallll��lliisseeuurrss//ooppttiimmiisseeuurrss ppoouurr lleess mmaacchhiinneess
 558866//668866 (( SSuummiitt RRooyy ))


 �  Pentium Compiler Group <http://www.goof.com/pcg/> cr�ateur 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 parall�lisation
    Fortran sur Linux
 �  Pacific-Sierra Research Corporation <http://www.psrv.com/> contient
    un compilateur gratuit F90 pour Linux et aussi des compilateurs
    parall�lisant pour SMP Linux

 �  Applied Parallel Research <http://s006.infomall.org/index.html>
    inclut actuellement des compilateurs parall�lisant pour NT

 �  KAI <http://www.kai.com> offre un compilateur C++ pour Linux qui
    inclut OpenMPI. Il s'appelle Guide_OpenMP. Information �
    http://www.kai.com/parallel/kappro/guide (GGeerroo WWeeddeemmaannnn).


 88..  GGlloossssaarryy


 �  SSMMPP Multi-Processeur Symm�trique

 �  AAPPIICC Contr�leur d'Interruptions Programmable Avanc�

 �  tthhrreeaadd Un thread est l'activit� processeur dans un processus.  Un
    m�me processus peut avoir de multiples thread. Ces threads
    partagent l'espace adresse du processus et peuvent donc par-l�
    partager des donn�es.

 �  pptthhrreeaadd Posix thread, threads d�finie par le standard Posix.

 �  AAPPMM Gestion avanc�e de l'�nergie


 99..  QQuuooii ddee nneeuuff ??



    vv11..99,, 1133 jjaannvviieerr 22000000

    �  Rappel, d�sactivation de toutes les fonctions de gestion
       d'�nergie du BIOS (OOssaammuu AAookkii)

    �  Explication sur la mani�re d'acc�der au mode de configuration
       avanc� du serveur Compaq (AAddrriiaann PPoorrtteellllii)


    vv11..88,, 88 nnoovveemmbbrree 11999999

    �  La carte m�re quadruple celeron �tait un canular, restauration
       de l'ancien paragraphe (SSiimmeenn TTiimmiiaann TThhoorreesseenn)


    vv11..77,, 66 nnoovveemmbbrree 11999999

    �  Nouvelle introduction (CC.. PPoolliisshheerr 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)

    �  R�f�rence sur KAI un compilateur optimis� (GGeerroo WWeeddeemmaannnn)

    �  Les cartes m�res quadruple celeron existent (JJeeffffrreeyy HH.. IInnggbbeerr)


    vv11..66,, 2211 ooccttoobbrree 11999999


    �  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 mat�riels

    �  Suppression de la section "Comment obtenir un maximum de
       performance" (obsol�te)

    �  Ajout d'information sur les syst�mes double processeurs avec
       diff�rents processeurs x86 (un Celeron et un PII)


    vv11..55,, 44 ooccttoobbrree 11999999

    �  Plus de pr�cision dans la description de PSET


    vv11..44,, 3300 sseepptteemmbbrree 11999999

    �  Pr�cision sur l'activation du support MTRR pour les noyaux SMP
       x86 (moi)


    vv11..33,, 2299 sseepptteemmbbrree 11999999

    �  Beaucoup beaucoup de corrections grammaticales et typographique
       (WWaaddee HHaammppttoonn aka hww)

    �  Ajout d'information dans la courte introduction � propos des
       diff�rences 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 probl�mes li�s aux modules
       SMP/UP (hww)

    �  Ajout de pr�cision 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 d�bogage des probl�mes de blocage (hww)

    �  Ajout d'information � propos des probl�mes de d�gagement de
       chaleur (hww)

    �  Divers mise � jour que j'ai oubli� (hww)

    �  Nouvel item � propos des acc�s disquette et du son (hww)


    vv11..22,, 2277 sseepptteemmbbrree 11999999

    �  Changement de nom: ce document est maintenant un Howto.  TWD, et
       rapide! (GGuuyyllhheemm AAzznnaarr)


    vv11..11,, 2266 sseepptteemmbbrree 11999999


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

    �  Extension des probl�mes li�s aux IRQ


    vv11..0000,, 2255 sseepptteemmbbrree 11999999

    �  Premi�re 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" : d�pass�

    �  Suppression de l'item "Mon syst�me SMP se verrouille tout le
       temps." : d�pass�

    �  Suppression de l'item "Vous utilisez le 2.0.35, n'est-ce pas
       ?" : d�pass�

    �  Suppression de l'item "Certains mat�riels sont aussi connu pour
       poser des probl�mes." : d�pass�

    �  Effacement de la section "Cartes m�re avec des probl�mes
       connus". Nous devrions recommencer du d�but.

    �  Suppression de la section "Carte m�re sans probl�mes connus" :
       d�pass�e

    �  Mise � jour de la section celeron (de nombreuses personnes)

    �  Ajout de "Les machines SPARC sun4m SMP" dans les machines Sparc
       support�es (AAnnttoonn BBllaanncchhaarrdd)

    �  Ajout de l'item "Durant le d�marrage la machine se bloque en
       signalant un probl�me 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 ?"

    �  R�paration d'un lien d�pass�

    �  Ajout d'un pointeur vers les patches de test SMP d'Ingo


    vv00..5544,, 1133 mmaarrss 11999999

    �  Ajout de la section � propos des syst�mes SMP Alpha


    vv00..5533,, 0088 mmaarrss 11999999

    �  Ajout de la section sur les syst�mes PowerPC SMP


    vv00..5522,, 0077 mmaarrss 11999999

    �  Ajout de la section sur les syst�mes Sparc SMP


    vv00..5511,, 0066 mmaarrss 11999999

    �  Ajout de la section dual-celeron

    �  Suppression de la section Adaptec

    �  Mise � jour du lien procps

    �  Mise � jour du lien xosview

    �  Ajout d'une r�ponse 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


    vv00..5500,, 0033 ff��vvrriieerr 11999999

    �  Mise � jour du lien "Programmes Multithread sous linux"


    vv00..4499,, 1133 jjaannvviieerr 11999999

    �  Mise � jour � propos de CONFIG_SMP. Ajout du .txt dans
       Documentation/smp. (MMiicchhaaeell EElliizzaabbeetthh CChhaassttaaiinn)


    vv00..4488,, 1100 dd��cceemmbbrree 11999988

    �  Fautes d'orthographes corrig�e. Adresses email corrig�e.


    vv00..4477,, 2200 nnoovveemmbbrree 11999988

    �  Ajout de la mention du patch MTRR est inclus 2.0.36 (li� � des
       probl�me de BogoMips)


    vv00..4466,, 1100 nnoovveemmbbrree 11999988

    �  Mise � jour � propos des cartes m�re Epox KP6-LS


    vv00..4455,, 2255 ooccttoobbrree 11999988

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

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


    vv00..4444,, 1144 ooccttoobbrree 11999988

    �  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_e_r _s_o_u_s _L_i_n_u_x _S_M_P

    �  Ajout de l'explication de Jakob : comment chronom�trer un
       syst�me SMP avec les noyaux 2.0


    vv00..4433,, 99 sseepptteemmbbrree 11999988

    �  Mise � jour de la premi�re question dans la section 3.1

    �  Mise � jour du lien mt-Mesa : multithread est maintenant inclus
       comme exp�rimental dans la distribution Mesa

    vv00..4422,, 22 sseepptteemmbbrree 11999988

    �  Mise � jour cosm�tique dans la section 3.3

    �  Deux liens sont marquer comme obsol�tes (Multithreaded Mesa et
       performance SMP)

    �  Mise � jour de l'item � propos des threads et des exceptions en
       C++ (sect 3.3)


    vv00..4411,, 11 sseepptteemmbbrree 11999988

    �  Ajout d'une section majeur: "3.3 Programmation SMP" �crite par
       Jakob �stergaard

    �  D�placement de la section "3.2 Cot� utilisateur" vers la section
       3.3


    vv00..4400,, 2277 aaoo��tt 11999988

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


    vv00..3399,, 2277 aaoo��tt 11999988

    �  Mise � jour n�cessaire du BOIS Award pour les cartes m�res Tyan
       (hhAASSCCIIII)

    �  Ajout d'un item sur les IRQ dans la section plantage (moi et
       hhAASSCCIIII)

    �  Ajout du bon support de l'Asus P2B-DS (UUllff RRoommppee)

    �  Ajout d'une autre archive smp-list dans la section pointeur
       (HHaannkk LLeeiinniinnggeerr)


    vv00..3388,, 88 aaoo��tt 11999988

    �  Ajout d'un pointeur vers la FAQ Linux Threads


    vv00..3377,, 3300 JJuuiilllleett 11999988

    �  EEmmiill BBrriiggggss est en train de travailler sur des plugins
       parall�les pour Gimp (voir "Existe-t-il des programmes ou des
       library utilisant les threads ?", section "Cot� utilisateur")


    vv00..3366,, 2266 JJuuiilllleett 11999988

    �  Merci � JJaakkoobb ��sstteerrggaaaarrdd, 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 li�s au BIOS"


    vv00..3355,, 1144 JJuuiilllleett 11999988

    �  Ajout des N440BX Server Board dans carte-m�re-sans-aucun-
       probl�me

    �  Ajout d'une success story pour la carte m�re GigaByte avec une
       mise � jour du BIOS

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


    vv00..3344,, 1100 jjuuiinn 11999988

    �  Ajout de la section "Parallelizing/Optimizing Compilers for
       586/686 i machines" dans la section "Useful Pointers", merci �
       SSuummiitt RRooyy

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


    vv00..3333,, 33 jjuuiinn 11999988

    �  Encore une success story avec une carte m�re GigaByte DLX.

    �  Une astuce pour les cartes m�re Tyan, d�sactiver l'option "DRAM
       Fast Leadoff" du BIOS


    vv00..3322,, 2277 mmaaii 11999988

    �  Asus P/I-UP5 ajouter � la section carte-m�re-sans-aucun-probl�me


    vv00..3311,, 1188 mmaaii 11999988

    �  Elitegroup P6LX2-A marche avec le 2.1.100 et le 101

    �  Les bugs doivent �tre rapport�s �[email protected]


    vv00..3300,, 1122 mmaaii 11999988

    �  SuperMicro est maintenant une carte m�re dans la section carte-
       m�re-sans-aucun-probl�me


    vv00..2299,, 1111 mmaaii 11999988

    �  La success story d'une carte m�re 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
       d�tails.


    vv00..2288,, 0099 mmaaii 11999988

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

    �  Fusion de deux entr�es confuses, Gigabyte 686


    vv00..2277,, 0055 mmaaii 11999988


    �  Nouvelles informations pour les pilotes Adaptec et TekRam

    �  Les cartes m�res Micronics W6-LI marche avec SMP



 1100..  LLiissttee ddeess ccoonnttrriibbuutteeuurrss

 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 B�chle

 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.
    St�phane �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