Re: % utilisation CPU | Sujet: Re: % utilisation CPU par daniel sur 25/9/2007 21:06:41
Ci-joint le code d'une procédure pour calculer le % CPU Ce code n'est pas de moi, mais je ne retrouve plus son créateur.
GLOBAL
GP_N_LgSppInformation est un entier
GP_N_LgRetour est un entier
GP_N_TickTotal est un entier sur 8 octets
GP_N_TickIdle est un entier sur 8 octets
GP_N_DiffTotal est un entier sur 8 octets
GP_N_DiffIdle est un entier sur 8 octets
GP_N_Occupe est un réel
GP_N_MemTickTotal est un entier sur 8 octets
GP_N_MemTickIdle est un entier sur 8 octets
GP_N_Timer est un entier
SPPINFORMATION est une structure
IdleTime est un entier sur 8 octets
ValeursInutiles est une chaîne fixe de 304
FIN
GP_Sppi est une sppinformation
PROCEDURE RechercheTaux()
// SystemPerformanceInformation = 2
LOCAL
N_TailleRenvoyee est un entier
N_ValeurRetour est un entier sur 4 octets
GP_N_LgSppInformation=Dimension(GP_SPPI)
N_ValeurRetour=AppelDLL32("NTDLL.DLL","NtQuerySystemInformation",2,&gp_SPPI,GP_N_LgSppInformation,GP_N_LgRetour)
SI GP_N_LgRetour<>0 ALORS
Transfert(&N_TailleRenvoyee,GP_N_LgRetour,4)
Erreur("La structure envoyée n'a pas la taille suffisante. Elle devrait faire : "+ N_TailleRenvoyee)
FIN
// conversion du temps Idle en millisecondes
GP_N_TickIdle=GP_Sppi:IdleTime/10000
// Recherche du temps total
GP_N_TickTotal=AppelDLL32("kernel32.dll","GetTickCount")
GP_N_DiffIdle=GP_N_TickIdle-GP_N_MemTickIdle
GP_N_DiffTotal=GP_N_TickTotal-GP_N_MemTickTotal
GP_N_Occupe=100-GP_N_DiffIdle/GP_N_DiffTotal*100
SI GP_N_Occupe<0 ALORS
GP_N_Occupe=0
FIN
GP_N_MemTickIdle=GP_N_TickIdle
GP_N_MemTickTotal=GP_N_TickTotal
CH_N_PourcentageOccupe=GP_N_Occupe // champ récupérant la valeur
TimerSys(RechercheTaux,100)
|
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|