Taux d'occupation du processeur Centrino Duo [Résolu]

Abadianet 50 Messages postés mercredi 2 novembre 2005Date d'inscription 19 juin 2006 Dernière intervention - 22 avril 2006 à 16:06 - Dernière réponse : Abadianet 50 Messages postés mercredi 2 novembre 2005Date d'inscription 19 juin 2006 Dernière intervention
- 28 avril 2006 à 23:15
J'utilise la fonction ci-dessous pour calculer le pourcentage d’occupation du processeur
Su une machine classique, le résultat est conforme au taux d’occupation, mais la fonction retourne une valeur quasi nulle sur une machine équipée d’un processeur Centrino Duo – Ah les double-cœur !

Existe-il un remède ?

function ValeurOccupationProcesseur: double;
{ Cette fonction retourne le taux d'occupation du processeur }
var Info: TSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
Long: Cardinal;
TickTotal, TickIdle, DiffTotal, DiffIdle: Integer;
begin
NtQuerySystemInformation($2,@Info,SizeOf(Info),Long);
TickIdle := Info.IdleTime Div 10000;
TickTotal := GetTickCount;
DiffIdle := TickIdle - MemTickIdle;
DiffTotal := max(TickTotal - MemTickTotal, 1);
result := 100 - DiffIdle / DiffTotal * 100;
If result < 0 Then
result := 0;
MemTickIdle := TickIdle;
MemTickTotal := TickTotal;
end;

avec

function NtQuerySystemInformation(SystemInfoClass: Integer; Info: Pointer; InfoLength: Cardinal; var ReturnLength: Cardinal): Integer; StdCall; External 'NTDLL.DLL' Name 'NtQuerySystemInformation';

A votre bon coeur

Abadiane
Afficher la suite 

3 réponses

Répondre au sujet
jace1975 84 Messages postés mardi 31 mai 2005Date d'inscription 12 octobre 2007 Dernière intervention - 26 avril 2006 à 00:24
+3
Utile
salut,

je te conseillerai de tester via pdh.dll (ne marche pas avec W95 et W98). dans la documentation, il est en effet écrit que les stats processeurs supportent le dual core,etc...

tu trouveras sur le site un exemple d'utilisation de cette dll, mais si moi je l'utilise un peu différemment, mais qui devrait te satisfaire.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jace1975
Abadianet 50 Messages postés mercredi 2 novembre 2005Date d'inscription 19 juin 2006 Dernière intervention - 22 avril 2006 à 16:07
0
Utile
J'utilise la fonction ci-dessous pour calculer le pourcentage d’occupation du processeur
Su une machine classique, le résultat est conforme au taux d’occupation, mais la fonction retourne une valeur quasi nulle sur une machine équipée d’un processeur Centrino Duo – Ah les double-cœur !

Existe-il un remède ?

function ValeurOccupationProcesseur: double;
{ Cette fonction retourne le taux d'occupation du processeur }
var Info: TSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
Long: Cardinal;
TickTotal, TickIdle, DiffTotal, DiffIdle: Integer;
begin
NtQuerySystemInformation($2,@Info,SizeOf(Info),Long);
TickIdle := Info.IdleTime Div 10000;
TickTotal := GetTickCount;
DiffIdle := TickIdle - MemTickIdle;
DiffTotal := max(TickTotal - MemTickTotal, 1);
result := 100 - DiffIdle / DiffTotal * 100;
If result < 0 Then
result := 0;
MemTickIdle := TickIdle;
MemTickTotal := TickTotal;
end;

avec

function NtQuerySystemInformation(SystemInfoClass: Integer; Info: Pointer; InfoLength: Cardinal; var ReturnLength: Cardinal): Integer; StdCall; External 'NTDLL.DLL' Name 'NtQuerySystemInformation';

A votre bon coeur

Abadiane
Commenter la réponse de Abadianet
Abadianet 50 Messages postés mercredi 2 novembre 2005Date d'inscription 19 juin 2006 Dernière intervention - 28 avril 2006 à 23:15
0
Utile
Merci Jace1975, avec tes indications j'ai trouvé le source de jpduf : http://www.delphifr.com/codes/SURVEILLANCE-CHARGE-CPU_30227.aspx qui met en oeuvre pdh.dll
Malheureusement je n'ai plus de machine Centrino Duo pour tester !!!

Abadiane
Commenter la réponse de Abadianet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.