[GetThreadTimes] % CPU utilisé par une appli.. des précisions ?

% CPU utilisé par une appli.. des précisions ? [GetThreadTimes] - Delphi/Pascal - Programmation

Marsh Posté le 24-09-2003 à 21:39:03    

Bonjour !
 
j'ai quelques problemes avec getthreadtimes.
 
Cette fonction permet d'obtenir des stats sur le thread en question.
 
Elle me sert a monitorer le % CPU utilisé par mon thread.
 
j'utilise une fonction du type :
 

Code :
  1. function Tbenchs.GetTheThreadTimes(PID: integer) : Double;
  2. var
  3.   lpLocalFileTime : TFileTime;
  4.   lpSystemTime    : TSystemTime;
  5.   lpCreationTime,
  6.   lpExitTime,
  7.   lpKernelTime,
  8.   lpUserTime      : TFileTime;
  9.   KernelTime,
  10.   UserTime   : TDateTime;
  11.   SecRunning,SecCPU : Int64;
  12. begin
  13.       GetThreadTimes(PID, lpCreationTime, lpExitTime, lpKernelTime,
  14. lpUserTime);
  15.       FileTimeToLocalFileTime(lpCreationTime, lpLocalFileTime);
  16.       //Get the kernel time and format it
  17.       FileTimeToSystemTime(lpKernelTime, lpSystemTime);
  18.       KernelTime := SystemTimeToDateTime(lpSystemTime);
  19.       //Get the user time and format it
  20.       FileTimeToSystemTime(lpUserTime, lpSystemTime);
  21.       UserTime := SystemTimeToDateTime(lpSystemTime);
  22.       SecCPU := MilliSecondsBetween(TimeOf(Usertime+Kerneltime),0);
  23.       SecRunning := MilliSecondsBetween(TimeOf(Now()),TimeOf(StartTime));
  24.       Result  := (SecCPU / SecRunning) * 100.0;
  25. end;


 
avant de lancer le thread, la ligne juste au dessus, je fais un :  
StartTime := now();
 
Ca marche bien.
 
Mais deux questions suivent :
-Que ce passera t'il apres 24h ? ca va forcément bugguer, nan ? Sans le timeof, j'ai pas réussi a avoir une valeur correcte... une idée ?
-Y a t'il moyen de s'en sortir avec getprocesstimes pour avoir le temps CPU + GUI en meme temps ? si oui, comment ? J'ai déjà essayé d'enregistrer les valeurs de départ et de les soustraire aux valeurs que j'obtenais... sans succès.
 

Code :
  1. function Tbenchs.GetTheProcessTimes():Double;
  2. var
  3.   lpLocalFileTime : TFileTime;
  4.   lpSystemTime    : TSystemTime;
  5.   lpCreationTime,
  6.   lpExitTime,
  7.   lpKernelTime,
  8.   lpUserTime      : TFileTime;
  9.   PH : THandle;
  10.   KernelTime,
  11.   UserTime   : TDateTime;
  12.   SecRunning,SecCPU : Int64;
  13. begin
  14. PH := OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
  15.   if PH <> 0 then
  16.       GetProcessTimes(PH, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime);
  17.       FileTimeToLocalFileTime(lpCreationTime, lpLocalFileTime);
  18.       //Get the kernel time and format it
  19.       FileTimeToSystemTime(lpKernelTime, lpSystemTime);
  20.       KernelTime := SystemTimeToDateTime(lpSystemTime);
  21.       KernelTime := KernelTime - StartKernelTime;
  22.       //Get the user time and format it
  23.       FileTimeToSystemTime(lpUserTime, lpSystemTime);
  24.       UserTime := SystemTimeToDateTime(lpSystemTime);
  25.       UserTime := UserTime - StartUserTime;
  26.       SecCPU := MilliSecondsBetween(TimeOf(Usertime+Kerneltime),0);
  27.       SecRunning := MilliSecondsBetween(TimeOf(Now()),TimeOf(StartTime));
  28.       Result  := (SecCPU / SecRunning) * 100.0;
  29.       CloseHandle(PH);
  30. end;


 
des idées ? des précisions ? de l'aide ? :(


Message édité par Tetedeiench le 24-09-2003 à 21:42:11

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 24-09-2003 à 21:39:03   

Reply

Marsh Posté le 24-09-2003 à 21:41:10    

Suite a une mauvaise blague "ta fonction getthreadtimes marche mal mais nan en fait elle est bien ct du photoshop" j'edite le premier post, la seconde question est encore d'actualité, et une autre me tordslapine...


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed