Derniers journaux de prae :
- [29/01@11:32] Sco :: Next day
- [26/06@15:51] Système de votes
- [17/10@22:37] Processus Init et "Kernel panic: Attempted to kill init"
- [14/10@16:20] testing
Journal : Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10 mars 2004voici ma problématique du jour, je cherche à detecter si mon processeur fonctionne en tant qu'HyperThreading;
Ou plus généralement, combien de processeurs physiques existent sur une architecture donnée.
Bon, pour vous evitez de partir dans des voies qui ne seraient pas les bonnes voici le topo :
- Dmesg et le nombre de processeur : dmesg n'affiche que les processeurs dit "virtuel" donc si l'hyperthreading est activité, on en verra deux, alors que physiquement il n'en existe qu'un.
- Le processeur ID : je cherche une solution sans cette "option kernel".
ma problématique étant de découvrir combien il existe de procs physiques sans avoir à redémarrer la machine (qui pourrait être en prod ou bien à 1000 km de ma position)
- Cat /proc/irq/*/smp_affinity | uniq : ne marche pas, si un HT et un bi-proc il n'existe qu'une seule adresse physique visibile, donc la solution est ailleurs (de toute facon, la vérité est ailleurs ;)
- Voir le "cpu_sibling_map" : le CPU Sibling Map indique le nombre de processeur virtuel. avec de l'HT on voit deux processeurs sur un seul.
- Dans /proc/cpuinfo, y'a le flags avec "ht" : le flags est positionné, mais est-ce que le processeur le supporte-il ? et est-il actif en ce moment ? ;-)
- Et dmidecode ? : affiche aussi deux processeurs sur un HT
Voila un peu près, j'en oublie car j'ai fait pas mal de test par-ci, par-là;
Je suis ouvert à toute proposition.
N'oubliez pas : l'objectif est de découvrir le nombre de processeur physique sans avoir à rédemarrer la machine ni même à la démonter.
Bonne chance aux participants :-)
(pour ma je suis dans la partie : je regarde carrément dans le /proc/kcore)
> Lire le journal (18 commentaires, moyenne: 1,2).
Re: Intel HyperThreading et détection sous Linux
J'ai pas eu le temps de relire mais regarde de ce cote la :
http://www.intel.com/cd/ids/developer/asmo-na/eng/technologies/thre(...)
Je pense qu'il y aura ce que tu cherches (perso j'ai pas ce genre de bete la)
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 15:25. (lien). Évalué à 1.Ton information est la plus avancée, cependant, le code source proposé par Intel est au format "intel" et donc légèrement énervante à compiler ;-)
Je tente de faire un portage "AT&T / Linux compliant"
Mais je promet rien :(
Re: Intel HyperThreading et détection sous Linux
Je m'autorépond, il existe cela mais seulement sous windows :
http://gcc.gnu.org/ml/gcc-help/2002-07/msg00239/Cpucount.cpp(...)
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par schyzomarijks () le 10/03/2004 à 13:56. (lien). Évalué à 1.ca n'a pas l'air très dépendant de windows.(au moins GetSystemInfo )
Essaie de le porter sous linux en utilisant wine, ca marche peut-etre ?-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 15:03. (lien). Évalué à 1.Installer wine sur une machine de prod ?
Bon! on peut faire un portage après tout ... mais bon :\-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 15:38. (lien). Évalué à 1.Nan, c'est trop galère, y'a trop de fonction Windows API pour faire le portage rapidement.
http://www.google.fr/search?q=dwSystemAffinity(...)
Je préfère encore tenter de porter le prog Intel que celui-ci.
-
-
Re: Intel HyperThreading et détection sous Linux
Si le flag ht est présent et que ton noyeau est SMP, alors je pense que l'hyper threading est actif et que deux processeurs virtuels -> un processeur physique.
Si pas de flag ht, il y a identité entre les deux nombres.
Si pas de smp tu ne verra jamais plus d'un seul processeur.
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par PasChauve PasOunet () le 10/03/2004 à 14:17. (lien). Évalué à 1.le flag ht ca veut un peu rien dire , j ai un celeron4 2ghz et le flag ht apparait , pourtant aucuns des celerons n est censé supporté l hyperthreading.
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Celeron(R) CPU 2.00GHz
stepping : 7
cpu MHz : 2017.975
cache size : 128 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 : 4023.91-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par xilun () le 10/03/2004 à 16:07. (lien). Évalué à 1.Merde, si Intel se met a inventer des systèmes pour detecter les capacités de ses processeurs et les utilise n'importe comment, où va-t-on ?
D'un autre coté les celeron ne supportent pas le SMP donc il ne peut y en avoir qu'un seul.-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par pasBill pasGates () le 10/03/2004 à 22:12. (lien). Évalué à 1.J'ai une carte mere Abit BP6 avec 2 Celeron dessus...
-
-
Re: Intel HyperThreading et détection sous Linux
Petites questions:
-que donnent /proc/stat et /proc/cpuinfo sur une machine avec l'HT active? si /proc/stat donne le nombre de processeurs virtuels c'est gagne...
- n'y-a-t-il pas une difference entre les kernels 2.4 et 2.6? Il me semble qu'au niveau du scheduler le 2.6 doit (devait) faire la difference entre un vrai multiprocesseurs et du simple HT pour une meilleure repartition des taches.
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par xilun () le 10/03/2004 à 14:22. (lien). Évalué à 2."- n'y-a-t-il pas une difference entre les kernels 2.4 et 2.6? Il me semble qu'au niveau du scheduler le 2.6 doit (devait) faire la difference entre un vrai multiprocesseurs et du simple HT pour une meilleure repartition des taches."
Je crois qu'il y a un patch pour faire ca.
Le truc c'est que l'utilisation d'un processeur virtuel par une tache en nice 20 ralenti les taches de priorités normales qui tournent sur le second processeur virtuel du même processeur physique.
De toute facon sur un monoproc, une nice 20 utilise quand meme du cpu quand d'autres taches tournent (d'ailleurs si quelqu'un connait un patch pour faire un vrai mode idle à la win, je suis preneur)-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Nicolas Regnault () le 10/03/2004 à 14:51. (lien). Évalué à 1.Donc ce n'est pas dans la version officiel du 2.6. Merci pour l'info.
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Laurent Buffler (Jabber id, ) le 10/03/2004 à 14:55. (lien). Évalué à 1.d'ailleurs si quelqu'un connait un patch pour faire un vrai mode idle à la win, je suis preneur
Tu peux essayer le patch "Batch scheduling" qui doit faire à peu près ce que tu veux.
http://members.optusnet.com.au/ckolivas/kernel/(...) (il y a aussi le patch gérer correctement l'hyperthreading avec les tâches basse priorité)
-
-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 15:12. (lien). Évalué à 2.1. il me donne le nombre de processeurs virtuels (même en HT)
en vérifiant les données, cela ne donne rien de probant;
les mêmes «types» de données apparaissent sur un bi-proc comme sur un mono-proc HT.
2. surement, le seul problème c'est qu'il doit bien exister une méthode pour un 2.4 (et précédent).
On m'a dit (j'ai pas pu le tester sur la machine en elle-même) que sur BSD, le nombre de processeurs physiques etaient affichés avec les processeurs virtuels.-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Nicolas Regnault () le 10/03/2004 à 15:29. (lien). Évalué à 2.Ce que je n'avais pas capte c'est que /proc/cpuinfo donne aussi deux procs pour un proc physique en HT (poutant je savais que tu as deux petits pingouins au demarrage avec le SMP et l'HT actives :).
Il te reste sinon une solution simple: tu peux faire un test de performance en lancant deux jobs en parallele travaillant princalement dans le cache (genre l'exemple du calcul d'une integrale comme dans le HOWTO sur la parallelisation). L'HT est loin des perfs d'un vrai bi-pro, tu dois assez vite te rendre compte sur quel type de systeme tu tu trouves. C'est pas satisfaisant intellectuellement, ca depend des perfs de l'HT et de ses futures evolutions mais c'est simple et facilement portable.-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 15:42. (lien). Évalué à 1.j'ai fait aussi :)
c'est pas probant non plus et c'est plutôt aléatoire.
Ma démarche est de savoir précisement comment détecter le nombre de CPU physique pour - peut-etre - les packagers (ca peut interesser tout le monde après tout)
Jusqu'a maintenant, tout le monde s'est cassé les dents dessus avec les outils habituels.
Maintenant il me reste plus que le prog fourni par intel pour détecter si le HT est actif ou pas et le nombre de CPU physique.
Je continue mon aventure ;)-
[^]Re: Intel HyperThreading et détection sous Linux
Posté par Brice Arnould ( un_brice ) (page perso, ) le 10/03/2004 à 20:00. (lien). Évalué à 1.Peut être une ou deux zidés. Je dit probablement des conneries :
-regarde le contenu de "/proc/acpi/processor/CPU1/info" et compare le à "/proc/acpi/processor/CPU2/info".
-regarde /proc/interrupts
Sinon, j'ai "CPU: After all inits, caps: 0383fbff c1c3fbff 00000000 00000020" dans le dmesg. Peut être que ça décrit le fameux ID ACPI dont ils parlent dans le site ?
Enfin, j'en sais rien : j'ai jammais testé le SMP.--
Respect à RMS.
-
-
-

Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.