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