J'ai un Intel i7 2700k ici, et j'aimerais savoir comment je peux savoir quels processeurs sont physiques et lesquels sont virtuels (c'est-à-dire: hyperthreading). J'exécute actuellement un script Conky pour afficher les températures, les fréquences et les charges de mon processeur, mais je ne suis pas sûr de l'avoir fait correctement:
J'ai écrit mon propre script pour obtenir des températures et des fréquences i7z
, mais celles-ci ne correspondent qu'à des cœurs physiques. J'affiche actuellement chaque noyau comme ceci:
${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...
Je ne suis pas sûr que ce soit vrai, à cause des charges et des températures que je vois parfois. Dans /proc/cpuinfo
, comment les noyaux sont-ils triés? Tout d'abord physique puis virtuel? Chaque noyau physique puis son ou ses noyaux virtuels? Comment sont-ils triés?
ht
indicateur indique uniquement que le multithread (HTT) est pris en charge par le processeur - pas s'il est activé ou non. Même alors, il ne peut pas toujours être invoqué, par exemple, il indique à tort qu'un i5 i5-6500 prend en charge HTT: ark.intel.com/content/www/us/en/ark/products/88184/…La réponse précédente est très intéressante.
Après quelques recherches sur Google, j'ai trouvé des sujets connexes:
/server/235825/disable-hyperthreading-from-within-linux-no-access-to-bios
/programming/7274585/linux-find-out-hyper-threaded-core-id
Vérifier si HyperThreading est activé ou non?
Sur le dernier lien, le script python ne fonctionne pas lorsque votre hôte possède de nombreux ID physiques. J'ai essayé de le modifier avec une condition différente à la fin:
En changeant:
à
Mais cela ne fonctionne pas comme prévu, sur la base du message précédent. Soit dit en passant, vous pouvez faire quelque chose de plus complet que:
avec:
[...]
Ce qui est intéressant sur un hôte à plusieurs cœurs avec activation d'hyperthreading, c'est la distribution des cœurs logiques sur le matériel.
Par exemple, sur l'un de mes ordinateurs (48 cœurs logiques, 2 processeurs physiques, 24 (12 * 2) «cœurs réels» (donc, également 24 cœurs virtuels)):
Cela signifie que cpu0 et cpu24 partagent la même "adresse" matérielle physique. Même chose pour cpu1 et cpu25 ...
Donc, fondamentalement, si je souhaite désactiver l'hyperthreading à partir de mon système d'exploitation Linux, je devrais mettre "0" dans cpu {24..47} / en ligne avec
Vous remarquerez à quel point mon système numérote les cœurs.
la source
vous pouvez également utiliser lscpu:
ici les cœurs logiques 0 et 4 vont au cœur 0
la source