Derniers journaux de prae :

Journal : Intel HyperThreading et détection sous Linux

Posté par Benjamin G. ( Prae ) (page perso, ) le 10 mars 2004
0
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)

> Lire le journal (18 commentaires, moyenne: 1,2).  

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.

Re: Intel HyperThreading et détection sous Linux

Posté par cykl (Jabber id, ) le 10/03/2004 à 13:42. (lien). Évalué à 2.

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

Posté par Benjamin G. ( Prae ) (page perso, ) le 10/03/2004 à 13:44. (lien). Évalué à 1.

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 ?

    --
    OO watching you !!!
    • [^]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 xilun () le 10/03/2004 à 14:08. (lien). Évalué à 0.

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

Posté par Nicolas Regnault () le 10/03/2004 à 14:14. (lien). Évalué à 2.

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.

Revenir en haut de page