Journal Intel HyperThreading et détection sous Linux

Posté par  .
Étiquettes : aucune
0
10
mar.
2004
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  . É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  . É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  . É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  . É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  . É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  . É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  . É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  . É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  . É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  . É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  (site web personnel) . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.