2012-01-04 2 views
1

J'essaye de calculer une utilisation de processus sur ma machine avec l'hyper-threading d'Intel.Calculer l'utilisation des processus dans la machine à hyper-threading

J'ai un problème en essayant de faire le calcul:

Je compte les boucles mon processus fait lors de l'exécution seul sur le noyau physique et le comptage quand un autre procédé (à l'identique) est en cours d'exécution sur le autre noyau logique (même noyau physique).

Je vois qu'il y a une différence dans la quantité de boucles que fait mon processus. Je suppose que c'est lié au fait que je cours dans une machine hyper-threading.

Y a-t-il un moyen de savoir quelle est la durée exacte de mon processus, donc je pourrai l'ajouter à mon calcul lorsque j'essayerai de calculer l'utilisation du processus?

+0

haut devrait vous donner une utilisation correcte, même sur les machines hyperthreaded –

+0

mon processus fonctionne seul (presque) sur le noyau ... je veux voir comment le charger en calculant la quantité de boucles. le haut me montrera 98% tout le temps. ce n'est pas bon pour moi – user1120875

+0

Eh bien, vous utilisez 98% du cpu dans ce cas, il n'y a vraiment rien d'autre à dire. Hyperthreading peut être désactivé via le BIOS ou d'autres utilitaires, alors éteignez-le et voir si le nombre change, cela peut vous donner une meilleure vue de l'utilisation du processeur sur d'autres systèmes éventuellement. –

Répondre

2

Vous ne pouvez indiquer que la durée de l'UC logique d'un processus. Vous ne pouvez pas dire combien il utilise le processeur physique, et ce n'est pas vraiment défini.
HyperThreading (ou, au moins, le SMT plus moderne) ne fonctionne pas en divisant le temps CPU physique entre deux threads. Cela fonctionne en affectant du travail aux unités d'exécution dans la CPU (et il y en a plusieurs).
Il est donc possible que les deux threads s'exécutent en même temps - il existe plusieurs unités d'exécution entières, et d'autres (mémoire, virgule flottante). Bottom line - si un thread prend 100% de la CPU logique, il prend 100% CPU. C'est tout ce que vous pouvez dire.

Questions connexes