OVH Cloud OVH Cloud

Détection Hyper Treading

10 réponses
Avatar
thanat0s
J'ai trouv=E9 un bon tuto sur la d=E9tection des CPU hypertread=E9

http://or1cedar.intel.com/media/training/detect_ht_dt_v1/tutorial/index.h=
tm

Que j'ai impl=E9ment=E9

http://thanatos.trollprod.org/sousites/isht/

Mais je ne sais pas comment trouver si l'HT est actif,

Qqun aurait une id=E9e ?

Thank

10 réponses

Avatar
AMcD®
thanat0s wrote:

Mais je ne sais pas comment trouver si l'HT est actif,



Vu que l'activation/désactivation se fait dans le BIOS, peut-être ne
pourras-tu pas faire cela facilement (sans driver par exemple). Cela dit, je
n'en sais rien :-).

Mais, cependant, quand le HT est actif, tu as plusieurs processeurs
"détectés". Tu devrais regarder de ce côté là (base de registres, etc.).

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
AMcD®
Sinon, t'as ça (j'ai lu en diagonale, mais visiblement c'est l'idée que je
te donne plus haut) :

http://gcc.gnu.org/ml/gcc-help/2002-07/msg00239/Cpucount.cpp

On y lit :

// 2) To detect whether hyper-threading is enabled or not is to see
how many logical ID exist
// per single physical ID in APIC


--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:421a8d6b$0$24440$
thanat0s wrote:

> Mais je ne sais pas comment trouver si l'HT est actif,

Vu que l'activation/désactivation se fait dans le BIOS, peut-être ne
pourras-tu pas faire cela facilement (sans driver par exemple). Cela dit,


je
n'en sais rien :-).



Remarque que si le BIOS s'en occupe alors le processeur doit être au
courant. Remarque aussi que le système d'exploitation, quant aux options du
processeur, peut absolument tout changer lui même... du mode de
fonctionnement (mode 32bit protégé, au stratégies de gestion du cache, en
passant par l'activation de l'hyperthreading... )

bref, pour savoir si l'hyper threading est actif, on va faire un CPUID bien
sure.

To determine if Hyper-Threading Technology is supported, check the value
returned in EBX[23:16] after executing CPUID with EAX=1. If EBX[23:16]
contains a value >1, then the processor supports Hyper-Threading Technology.

allez voir la doc IA32 Intel pour plus d'information (document 24161827 :
Intel ® Processor Identification and the CPUID Instruction, Application Note
485 - July 2004)

A+
VB
Avatar
AMcD®
Vincent Burel wrote:
"AMcD®" wrote in message
news:421a8d6b$0$24440$
thanat0s wrote:

Mais je ne sais pas comment trouver si l'HT est actif,



Vu que l'activation/désactivation se fait dans le BIOS, peut-être ne
pourras-tu pas faire cela facilement (sans driver par exemple). Cela
dit, je n'en sais rien :-).





Remarque que si le BIOS s'en occupe alors le processeur doit être au
courant. Remarque aussi que le système d'exploitation, quant aux
options du processeur, peut absolument tout changer lui même... du
mode de fonctionnement (mode 32bit protégé, au stratégies de gestion
du cache, en passant par l'activation de l'hyperthreading... )



Oui. C'est pour cela qu'il vaudrait mieux passer par l'OS.

bref, pour savoir si l'hyper threading est actif, on va faire un
CPUID bien sure.



Non. CPUID va te dire si le HT est supporté, pas s'il est activé. Confonds
pas supported et enabled :-).

allez voir la doc IA32 Intel pour plus d'information (document
24161827 : Intel ® Processor Identification and the CPUID
Instruction, Application Note 485 - July 2004)



Je l'ai rapidement parcouru hier soir, je n'y ai rien vu sur la détection de
l'activation. Le lien que je donne au gars plus loin me semble répondre à ce
qu'il cherche. Mais, comme personne ne répond, remercie jamais, tu sais bien
qu'on ne saura jamais si ça lui a convenu :-(.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Dominique Vaufreydaz
Bonjour,

semble répondre à ce qu'il cherche. Mais, comme personne ne répond,
remercie jamais, tu sais bien qu'on ne saura jamais si ça lui a
convenu :-(.



Je te trouve bien pessimiste quand meme... Y'en a qui disent bonjour,
et merci ! Y'en a meme (si si !) qui disent, merci, ca convenait...
J'en ai vue ;-P

Doms.
Avatar
AMcD®
Dominique Vaufreydaz wrote:

Je te trouve bien pessimiste quand meme... Y'en a qui disent
bonjour, et merci ! Y'en a meme (si si !) qui disent, merci, ca
convenait... J'en ai vue ;-P



Fait une stat sur les 50 dernières aides...

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:421b2a68$0$14790$
Vincent Burel wrote:
> "AMcD®" wrote in message
> news:421a8d6b$0$24440$
>> thanat0s wrote:
>>
>>> Mais je ne sais pas comment trouver si l'HT est actif,
>>
>> Vu que l'activation/désactivation se fait dans le BIOS, peut-être ne
>> pourras-tu pas faire cela facilement (sans driver par exemple). Cela
>> dit, je n'en sais rien :-).

> Remarque que si le BIOS s'en occupe alors le processeur doit être au
> courant. Remarque aussi que le système d'exploitation, quant aux
> options du processeur, peut absolument tout changer lui même... du
> mode de fonctionnement (mode 32bit protégé, au stratégies de gestion
> du cache, en passant par l'activation de l'hyperthreading... )

Oui. C'est pour cela qu'il vaudrait mieux passer par l'OS.

> bref, pour savoir si l'hyper threading est actif, on va faire un
> CPUID bien sure.

Non. CPUID va te dire si le HT est supporté, pas s'il est activé. Confonds
pas supported et enabled :-).



et oui, il semble que la doc Intel (du bit 28 du feature flag) m'ait induit
en erreur.

alors padeproblem : j'ai une autre idée :
faire péter une instruction SSE 3 genre MWAIT dans un try/catch et si ca
catch alors l'O/S supporte pas .

VB
Avatar
thanat0s
Vincent Burel wrote:
"AMcD®" wrote in message
news:421b2a68$0$14790$

Vincent Burel wrote:

"AMcD®" wrote in message
news:421a8d6b$0$24440$

thanat0s wrote:


Mais je ne sais pas comment trouver si l'HT est actif,



Vu que l'activation/désactivation se fait dans le BIOS, peut-être ne
pourras-tu pas faire cela facilement (sans driver par exemple). Cela
dit, je n'en sais rien :-).





Remarque que si le BIOS s'en occupe alors le processeur doit être au
courant. Remarque aussi que le système d'exploitation, quant aux
options du processeur, peut absolument tout changer lui même... du
mode de fonctionnement (mode 32bit protégé, au stratégies de ges tion
du cache, en passant par l'activation de l'hyperthreading... )



Oui. C'est pour cela qu'il vaudrait mieux passer par l'OS.


bref, pour savoir si l'hyper threading est actif, on va faire un
CPUID bien sure.



Non. CPUID va te dire si le HT est supporté, pas s'il est activé. C onfonds
pas supported et enabled :-).




et oui, il semble que la doc Intel (du bit 28 du feature flag) m'ait in duit
en erreur.

alors padeproblem : j'ai une autre idée :
faire péter une instruction SSE 3 genre MWAIT dans un try/catch et si ca
catch alors l'O/S supporte pas .

VB






J'y croit pas.. hoo je bosse moi ;)...

Bon le coup du bit 28, si vous aviez suivis les liens, il est déja trou vé.

Donc je vais m'orienter vers un "trouver les cpu par cpu" et comparer
avec le nbr de cPU que Mr OS a trouvé....

Je vous tient au courant de mes recherches..

Merci
Avatar
AMcD®
> Donc je vais m'orienter vers un "trouver les cpu par cpu" et comparer
avec le nbr de cPU que Mr OS a trouvé....



Je vous tient au courant de mes recherches..



T'as rien à rechercher, c'est là je t'ai dit :-) :
http://gcc.gnu.org/ml/gcc-help/2002-07/msg00239/Cpucount.cpp

Merci



De rien.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"thanat0s" wrote in message
news:421b86fd$0$7082$
Vincent Burel wrote:
alors padeproblem : j'ai une autre idée :
faire péter une instruction SSE 3 genre MWAIT dans un try/catch et si ca
catch alors l'O/S supporte pas .






ha non, MWAIT n'est pas forcément accessible ailleurs qu'en RING0 , donc ca
va pas marcher.

Je vous tient au courant de mes recherches..



oui, je veux bien merci !
VB