Next Previous Contents

8. SMP, autres architectures

Note: n'hésitez pas à m'envoyer des compléments sur cette partie.

8.1 SMP

SMP, abréviation de Symetric Multi-Processors, désigne la capacité des noyaux Linux 2.0 et versions suivantes de fonctionner sur des machines à plusieurs processeurs. Sur architecture ix86, le support SMP de Linux suit les spécifications Intel MP (v1.1, v1.4) qui vont théoriquement jusqu'à 16 processeurs. En fait, le SMP n'est pas spécifique aux plates-formes Intel : il existe également sur les plates-formes Alpha, Sparc, PowerPC. La version 2.0 ne gère le SMP que pour les plates-formes de type Intel.

Pour compiler un noyau avec le support SMP, il faut décommenter la ligne SMP = 1 dans le fichier Makefile. Il est en outre recommandé de compiler le support pour l'Enhanced Real Time Clock (CONFIG_RTC).

Lors du démarrage du noyau, Linux boot d'abord sur un processeur, puis active le(s) autre(s). Extraits des informations données par la commande dmesg :

Intel MultiProcessor Specification v1.1
    Virtual Wire compatibility mode.
OEM ID: INTEL    Product ID: Nightshade   APIC at: 0xFEE00000
Processor #1 Pentium(tm) Pro APIC version 17
Processor #0 Pentium(tm) Pro APIC version 17
I/O APIC #2 Version 17 at 0xFEC00000.
Processors: 2
...
Calibrating delay loop.. ok - 396.49 BogoMIPS
...
Booting processor 0 stack 00002000: Calibrating delay loop.. ok - 396.49 BogoMIPS
Total of 2 processors activated (792.99 BogoMIPS).

Ce qui précède suffit pour avoir un système multiprocesseur qui fonctionne. Ce qui suit va le rendre plus agréable à utiliser et plus efficace.

Le package procps contient entre autre les commandes top et ps qui peuvent être modifiées pour afficher le numéro du processeur sur lequel une commande tourne. La marche à suivre ainsi que les patches sont disponibles (en anglais) à http://www.cs.inf.ethz.ch/~rauch/procps.html.

GNU make accepte l'option -j qui spécifie un nombre maximal de tâches pouvant être lancées simultanément. Il peut donc être intéressant d'utiliser cette option (make -j 5 par exemple) sur un système multi-processeurs.

Dans la majorité des cas, un système SMP ne se distingue pas parce qu'une même tâche se déroule plus vite, mais bien parce que l'on peut faire tourner plusieurs grosse tâches simultanément (par exemple compiler un programme C et un fichier LaTeX en même temps) ou bien parce que le système répond instantanément malgré la présence d'une grosse tâche (p.ex. lire son mail tout en compilant le noyau).

Pour vraiment faire en sorte qu'un même programme utilise toute la puissance CPU de la machine, il faut investir dans le parallélisme, ce qui sort très nettement du cadre de ce guide. Lire à ce sujet l'excellentissime Linux Parallel Processing HOWTO (que l'on trouve aux endroits habituels).

Pour en savoir plus, vous pouvez consulter la Linux SMP FAQ de David Mentré, http://www.irisa.fr/prive/mentre/smp-faq/.

Une description technique (et sommaire) de l'implémentation de SMP dans le noyau Linux est donnée dans le fichier Documentation/smp.tex

8.2 Plates-formes Alpha

La plate-forme Alpha est gérée depuis pas mal de temps. Le site à consulter avant tout est http://www.azstarnet.com/~axplinux/. La distribution RedHat 5.1 est disponible pour Alpha. Son installation est beaucoup plus complexe car cela dépend un peu du type de machine dont disposez.

Si vous souhaitez installer cette version, lisez attentivement le ALPHA-HOWTO, le MILO-HOWTO et le SRM-HOWTO. Il s'agit des trois documents clefs.

Pour clarifier la situation, le plus gros problème n'est pas vraiment d'installer Linux, mais de booter. En effet, il existe deux façons de le faire, en fonction de l'architecture de votre machine (voir la FAQ disponible sur le site central du portage Alpha) :

Quoi qu'il en soit, si vous souhaitez installer Linux sur Alpha, pensez surtout à lire les documents indiqués ci-dessus. Pour la RedHat, un document supplémentaire spécifique à l'Alpha a été écrit. Enfin, pensez à vous abonner au forum et à la liste de discussion sur Linux/Alpha, comp.os.linux.alpha et axp-kernel-list@redhat.com.


Next Previous Contents