Bonjour à tous,
voici 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)
# Re: Intel HyperThreading et détection sous Linux
Posté par ckyl . Évalué à 2.
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 Prae . Évalué à 1.
Je tente de faire un portage "AT&T / Linux compliant"
Mais je promet rien :(
# Re: Intel HyperThreading et détection sous Linux
Posté par Prae . Évalué à 1.
http://gcc.gnu.org/ml/gcc-help/2002-07/msg00239/Cpucount.cpp(...)
[^] # Re: Intel HyperThreading et détection sous Linux
Posté par schyzomarijks . Évalué à 1.
Essaie de le porter sous linux en utilisant wine, ca marche peut-etre ?
[^] # Re: Intel HyperThreading et détection sous Linux
Posté par Prae . Évalué à 1.
Bon! on peut faire un portage après tout ... mais bon :\
[^] # Re: Intel HyperThreading et détection sous Linux
Posté par Prae . Évalué à 1.
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
Posté par xilun . Évalué à 0.
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 Prosper . Évalué à 1.
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 . Évalué à 1.
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 . Évalué à 1.
# Re: Intel HyperThreading et détection sous Linux
Posté par Nicolas Regnault . Évalué à 2.
-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 . Évalué à 2.
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 . Évalué à 1.
[^] # Re: Intel HyperThreading et détection sous Linux
Posté par Buf (Mastodon) . Évalué à 1.
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 Prae . Évalué à 2.
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 . Évalué à 2.
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 Prae . Évalué à 1.
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 un_brice (site web personnel) . Évalué à 1.
-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.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.