OVH Cloud OVH Cloud

SMP, Pentium IV et hyperthreading

17 réponses
Avatar
Sebastien Kirche
Bonsoir tout le monde,

Ce soir j'ai changé mon boîtier Shuttle pour un modèle supportant le P4 qui
dormait depuis un moment sur mon bureau. J'ai en quelque sorte mis un tigre
dans le moteur dans la mesure où je passe de 1,6 à 2,8 GHz.

Je n'ai rien reconfiguré à part le bios de la nouvelle machine et le serveur
dhcp de la passerelle : je me suis contenté de remonter les disques dans la
nouvelle machine.

Reboot et ça roule pour Debian, par contre XP ne s'en est pas remis :)
(Faudra que je fasse une récup du système à l'occase.)

Mon souci est que ce p4 offre l'hyperthreading, la machine le supporte, il
est activé dans le bios, mon noyau est SMP mais il semble que le système ne
voit qu'un processeur.

Quelques infos pertinentes :

,----[ uname -a ]
| Linux obelix.seki.fr 2.4.22-xfs #1 SMP Fr Okt 3 20:36:25 CEST 2003 i686
| GNU/Linux
`----

,----[ sudo grep -i smp /boot/config-2.4.22-xfs ]
| CONFIG_SMP=y
`----

,----[ cat /proc/cpuinfo ]
| processor : 0
| vendor_id : GenuineIntel
| cpu family : 15
| model : 2
| model name : Intel(R) Pentium(R) 4 CPU 2.80GHz
| stepping : 5
| cpu MHz : 2806.410
| cache size : 512 KB
| fdiv_bug : no
| hlt_bug : no
| f00f_bug : no
| coma_bug : no
| fpu : yes
| fpu_exception : yes
| cpuid level : 2
| wp : yes
| flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
| pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
| bogomips : 5596.77
|
`----

Je constate que pour le noyau, il n'y a qu'un processeur. Et au contraire de
ma sparcstation bi-processeur qui affiche 2 pingouins au boot, le Shuttle
n'en montre qu'un.
C'est peut-être normal si on considère qu'il n'y a qu'un processeur
physique. Mais je fais le parallèle avec WinXP qui voit 2 processeurs
lorsque l'hyperthreading est activé.

J'ajoute que les archives du groupe indiquent que l'hyperthreading est
supporté depuis le 2.4.18, et qu'alors /proc/cpuinfo affiche le cas échéant
plusieurs blocs d'info.

Y aurait-t-il un réglage à changer ou je vais pouvoir passer à un noyau plus
récent, par exemple le 2.4.26 ?

Merci pour vos tuyaux :)

Sébastien Kirche

7 réponses

1 2
Avatar
J1
On Fri, 17 Sep 2004, J1 wrote:
Reboot et ça roule pour Debian, par contre XP ne s'en est pas remis :)
Ca doit en surprendre plus d'un! :-) Certainement as-tu un message

convivial de la part d'XP...


Pourtant, XP supporte l'HyperThreading, et il sait même le faire
correctement.


Désolé pour l'ambiguité, c'était référence au changement de boitier.
Il est vrai que l(es) option(s) /spécifiques/ à l'hyperthreading ont mis
un peu de temps à apparaitre sur les noyaux linux.

Dans les derniers noyaux 2.6, tu peux même activer une option spécifique
à l'hyperthreading. Je ne sais pas ce qu'il en est pour les derniers 2.4

CONFIG_SCHED_SMT:
SMT scheduler support improves the CPU scheduler's decision making
when dealing with Intel Pentium 4 chips with HyperThreading at a
cost of slightly increased overhead in some places.


Ce qui peut être une bonne chose, le SMP et le SMT se gèrent différemment
au niveau de l'ordonnancement, et on peut obtenir des pertes de
performances en ne faisant pas les choses correctement.


Tu as l'air bien renseigné sur la question, je serais très interessé
par un lien vers une étude et/ou des explications sur la gestion du
SMT / HyperThreading, parcequ'à part les benchmarks de www.2cpu.com et
quelques pages eparses, je n'ai jamais su trouver de litterature
satisfaisant ma curiosité en ce domaine...

Merci d'avance pour les infos,

--
J1



Avatar
Franck
Si ca peut servir (pas lu en détails) :

http://www-106.ibm.com/developerworks/linux/library/l-htl/
Avatar
Erwann ABALEA
On Fri, 17 Sep 2004, TiChou wrote:

Sous Linux, 'uname -a' indique si le noyau a le support SMP ou pas. C'était
bien le cas pour Sébastien Kirche.

,----[ uname -a ]
| Linux obelix.seki.fr 2.4.22-xfs #1 SMP Fr Okt 3 20:36:25 CEST 2003 i686



Ah oui, j'avais oublié. Bon, "ma gueule", comme on dit ici...

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Mais je vais te dire un truc: les news, c'est un espace public et en
public, il est beaucoup plus facile de passer pour un con que de se
faire des amis. Plus facile et plus rapide surtout.
-+- HA in Guide du Neuneu d'Usenet - L'art de se faire des amis. -+-


Avatar
Erwann ABALEA
Bonjour,

On Fri, 17 Sep 2004, Sebastien Kirche wrote:

Morceaux choisis :
,----[ dmesg ]
| Linux version 2.4.22-xfs () (gcc version 2.95.4 20011002
| (Debian prerelease)) #1 SMP Fr Okt 3 20:36:25 CEST 2003
|
| [...]
|
| found SMP MP-table at 000f57d0
| hm, page 000f5000 reserved twice.
| hm, page 000f6000 reserved twice.
| hm, page 000f0000 reserved twice.
| hm, page 000f1000 reserved twice.
| On node 0 totalpages: 131056
| zone(0): 4096 pages.
| zone(1): 126960 pages.
| zone(2): 0 pages.
| Intel MultiProcessor Specification v1.4
| Virtual Wire compatibility mode.
| OEM ID: OEM00000 Product ID: PROD00000000 APIC at: 0xFEE00000
| Processor #0 Pentium 4(tm) XEON(tm) APIC version 17
| I/O APIC #2 Version 17 at 0xFEC00000.
| Enabling APIC mode: Flat. Using 1 I/O APICs
| Processors: 1


La partie équivalente sur un P4 avec HT ici:

-----
found SMP MP-table at 000fe710
hm, page 000fe000 reserved twice.
hm, page 000ff000 reserved twice.
hm, page 000f0000 reserved twice.
On node 0 totalpages: 393184
zone(0): 4096 pages.
zone(1): 225280 pages.
zone(2): 163808 pages.
ACPI: RSDP (v000 DELL ) @ 0x000fdc40
ACPI: RSDT (v001 DELL PE2650 0x00000001 MSFT 0x0100000a) @ 0x000fdc54
ACPI: FADT (v001 DELL PE2650 0x00000001 MSFT 0x0100000a) @ 0x000fdc84
ACPI: MADT (v001 DELL PE2650 0x00000001 MSFT 0x0100000a) @ 0x000fdcf8
ACPI: SPCR (v001 DELL PE2650 0x00000001 MSFT 0x0100000a) @ 0x000fdd80
ACPI: DSDT (v001 DELL PE2650 0x00000001 MSFT 0x0100000a) @ 0x00000000
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 Pentium 4(tm) XEON(tm) APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] disabled)
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled)
Processor #1 Pentium 4(tm) XEON(tm) APIC version 20
ACPI: LAPIC (acpi_id[0x04] lapic_id[0x07] disabled)
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x04] polarity[0x1] trigger[0x1] lint[0x1])
Using ACPI for processor (LAPIC) configuration information
Intel MultiProcessor Specification v1.4
Virtual Wire compatibility mode.
OEM ID: DELL Product ID: PE 0121 APIC at: 0xFEE00000
I/O APIC #8 Version 17 at 0xFEC00000.
I/O APIC #9 Version 17 at 0xFEC01000.
I/O APIC #10 Version 17 at 0xFEC02000.
Processors: 2
-----

Je ne vois que l'ACPI, et le message "Using ACPI for processor (LAPIC)
configuration information" me fait penser que tu devrais peut-être essayer
d'activer l'ACPI, des fois que...

Pour le reste, c'est à peu près pareil, à part bien sûr les opérations sur
CPU1 chez moi.

Et hop, une recompilation de noyo, un reboot, et tu nous donnes le
verdict...

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
manquerait plus que les groupes soient pollués. c'est beaucoup plus
grave que des plages bretonnes à deux francs qui étaient déjà polluées
par ces salopards de volatiles. dieu merci, il n'y en aura bientôt plus
-+- tilt in http://neuneu.mine.nu : Les oiseaux sont des cons.

Avatar
Sebastien Kirche
Le 17 sep 2004, Erwann ABALEA a dit :

Je ne vois que l'ACPI, et le message "Using ACPI for processor (LAPIC)
configuration information" me fait penser que tu devrais peut-être essayer
d'activer l'ACPI, des fois que...


APIC ou ACPI ? il me semble que ce sont 2 choses différentes ?
ACPI (?) était actif en version 1.4 (je dispose aussi du 1.1)


Pour le reste, c'est à peu près pareil, à part bien sûr les opérations sur
CPU1 chez moi.

Et hop, une recompilation de noyo, un reboot, et tu nous donnes le
verdict...


Ben voilà : comme je roule avec Debian, je me suis épargné la recompilation
du noyau :

- apt-get install kernel-image-2.4.26-1-686-smp kernel-headers-2.4.26-1-686-smp
- mise à jour de grub
- téléchargement et compilation du module d'affichage NVidia histoire d'être
à jour

Résultat :

,----[ cat /proc/cpuinfo ]
| processor : 0
| vendor_id : GenuineIntel
| cpu family : 15
| model : 2
| model name : Intel(R) Pentium(R) 4 CPU 2.80GHz
| stepping : 5
| cpu MHz : 2806.405
| cache size : 512 KB
| fdiv_bug : no
| hlt_bug : no
| f00f_bug : no
| coma_bug : no
| fpu : yes
| fpu_exception : yes
| cpuid level : 2
| wp : yes
| flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
| pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
| bogomips : 5596.77
|
| processor : 1
| vendor_id : GenuineIntel
| cpu family : 15
| model : 2
| model name : Intel(R) Pentium(R) 4 CPU 2.80GHz
| stepping : 5
| cpu MHz : 2806.405
| cache size : 512 KB
| fdiv_bug : no
| hlt_bug : no
| f00f_bug : no
| coma_bug : no
| fpu : yes
| fpu_exception : yes
| cpuid level : 2
| wp : yes
| flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
| pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
| bogomips : 5609.88
|
`----

Héhé. :)

Conclusion : le 2.4.22-xfs (installé à partir d'une Knoppix 3.3) , bien que
compilé avec le support SMP n'arrive pas à gérer un P4 2.8 Hyperthreading en
mode SMP.

Merci à tous pour vos avis qui m'ont permis d'avancer, et bonne soirée :)

Sébastien Kirche

Avatar
Erwann ABALEA
Bonsoir,

On Fri, 17 Sep 2004, Sebastien Kirche wrote:

Le 17 sep 2004, Erwann ABALEA a dit :

Je ne vois que l'ACPI, et le message "Using ACPI for processor (LAPIC)
configuration information" me fait penser que tu devrais peut-être essayer
d'activer l'ACPI, des fois que...


APIC ou ACPI ? il me semble que ce sont 2 choses différentes ?


Je parle bien de l'ACPI. Dans le dmesg que j'ai fourni, ce qui me fait
penser qu'il te faut l'ACPI, ce sont les messages suivants:

-----
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [1]
Processor #0 Pentium 4(tm) XEON(tm) APIC version 20 [1]
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] disabled)
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled) [1]
Processor #1 Pentium 4(tm) XEON(tm) APIC version 20 [1]
ACPI: LAPIC (acpi_id[0x04] lapic_id[0x07] disabled)
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x04] polarity[0x1] trigger[0x1] lint[0x1])
Using ACPI for processor (LAPIC) configuration information [2]
Intel MultiProcessor Specification v1.4
-----

Il s'agit de l'énumération de ce que contient la table de config ACPI, et
il semble que c'est cette table qui indique au système qu'il y a 2
pseudo-processeurs (lignes marquées par [1]). D'ailleurs, le message
marqué [2] me semble beaucoup plus explicite sur ce point.

ACPI (?) était actif en version 1.4 (je dispose aussi du 1.1)


1.4 et 1.1 sont les versions de la couche Intel MPS (MultiProcessor
Specification).

- apt-get install kernel-image-2.4.26-1-686-smp kernel-headers-2.4.26-1-686-smp
- mise à jour de grub
- téléchargement et compilation du module d'affichage NVidia histoire d'être
à jour

Résultat :

,----[ cat /proc/cpuinfo ]
| processor : 0
|
| processor : 1
`----


Essaye un dernier reboot avec ce noyau et l'option 'noacpi', pour voir...

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
ED> La hièrarchie alt.* n'est pas transportée.
Et alors? Suffit d'un lien à l'instar du Web. Vous raisonnez "dino",
sclérosés et stupidement attachés à une organisation obsolète.
-+- Rocou in Guide du Neuneu d'Usenet : Obsolète it be. -+-


Avatar
Sebastien Kirche
Le 17 sep 2004, Erwann ABALEA a formulé :

Je parle bien de l'ACPI. Dans le dmesg que j'ai fourni, ce qui me fait
penser qu'il te faut l'ACPI, ce sont les messages suivants:

-----
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [1]
Processor #0 Pentium 4(tm) XEON(tm) APIC version 20 [1]
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] disabled)
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled) [1]
Processor #1 Pentium 4(tm) XEON(tm) APIC version 20 [1]
ACPI: LAPIC (acpi_id[0x04] lapic_id[0x07] disabled)
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x04] polarity[0x1] trigger[0x1] lint[0x1])
Using ACPI for processor (LAPIC) configuration information [2]
Intel MultiProcessor Specification v1.4
-----

[...]


Essaye un dernier reboot avec ce noyau et l'option 'noacpi', pour voir...


Alors avec ou sans noacpi je ne vois pas de différence (bizarre ? en tout
cas j'ai remarqué qu'avec dmesg il manque parfois des caractères au début
par rapport à /var/log/dmesg sur les plages d'adresses ACPI...)

Mais le bloc dont tu parles indique maintenant ceci :
,----
| ACPI: Local APIC address 0xfee00000
| ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
| Processor #0 Pentium 4(tm) XEON(tm) APIC version 20
| ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
| Processor #1 Pentium 4(tm) XEON(tm) APIC version 20
| ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
| ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
| Using ACPI for processor (LAPIC) configuration information
| Intel MultiProcessor Specification v1.4
| Virtual Wire compatibility mode.
| OEM ID: OEM00000 Product ID: PROD00000000 APIC at: 0xFEE00000
| I/O APIC #2 Version 17 at 0xFEC00000.
| Enabling APIC mode: Flat. Using 1 I/O APICs
| Processors: 2
`----

Par contre j'ai un petit souci : il semble que le frame buffer ne fonctionne
plus.
Je boote habituellement avec vgay1 dans les paramètres du noyau, or là je
ne vois plus le ou les pingouins qui indiquent les processeurs et les
caractères accentués de la console (hors X11) donnent des symboles grecs[1].

Or dmesg indique aussi ceci :
,----
| vesafb: framebuffer at 0xe8000000, mapped to 0xe083b000, size 3072k
| vesafb: mode is 1024x768x16, linelength 48, pages=1
| vesafb: protected mode interface info at c000:efd0
| vesafb: scrolling: redraw
| vesafb: directcolor: size=0:5:6:5, shift=0:11:5:0
| Console: switching to colour frame buffer device 128x48
| fb0: VESA VGA frame buffer device
`----

Bizarre, bizarre.

[1] Ça me rappelle un problème passé sur la Debian-user-list, faut que je
regarde les archives...

Sébastien Kirche

1 2