Select * from Win32_Processor
instance of Win32_Processor
show
{
AddressWidth = 64;
Architecture = 9;
AssetTag = “To Be Filled By O.E.M.”;
Availability = 3;
Caption = “Intel64 Family 6 Model 158 Stepping 9”;
Characteristics = 252;
CpuStatus = 1;
CreationClassName = “Win32_Processor”;
CurrentClockSpeed = 3600;
CurrentVoltage = 10;
DataWidth = 64;
Description = “Intel64 Family 6 Model 158 Stepping 9”;
DeviceID = “CPU0”;
ExtClock = 100;
Family = 198;
L2CacheSize = 1024;
L3CacheSize = 8192;
L3CacheSpeed = 0;
Level = 6;
LoadPercentage = 2;
Manufacturer = “GenuineIntel”;
MaxClockSpeed = 3600;
Name = “Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz”;
NumberOfCores = 4;
NumberOfEnabledCore = 4;
NumberOfLogicalProcessors = 8;
PartNumber = “To Be Filled By O.E.M.”;
PowerManagementSupported = FALSE;
ProcessorId = “BFEBFBFF000906E9”;
ProcessorType = 3;
Role = “CPU”;
SecondLevelAddressTranslationExtensions = FALSE;
SerialNumber = “To Be Filled By O.E.M.”;
SocketDesignation = “U3E1”;
Status = “OK”;
StatusInfo = 3;
SystemCreationClassName = “Win32_ComputerSystem”;
SystemName = “PC-THIERRY”;
ThreadCount = 8;
UpgradeMethod = 1;
Version = “”;
VirtualizationFirmwareEnabled = FALSE;
VMMonitorModeExtensions = FALSE;
};
Type - UInt16
La propriété LoadPercentage indique la capacité de charge de chaque processeur calculée sur la dernière seconde.
Le terme 'processor loading' réfère à la charge de traitement totale supportée par chaque processeur en une fois.
Type - String
La propriété ProcessorId contient des informations spécifiques au processeur qui décrivent ses fonctionnalités. Pour les processeurs de classe x86, le format du champ dépend de la prise en charge de l’instruction CPUID par le processeur.
Si l’instruction est prise en charge, la propriété ProcessorId contient deux valeurs au format DWORD.
Seuls les deux premiers octets de la propriété ProcessorID sont significatifs (tous les autres sont définis à 0) et contiennent (au format WORD) le contenu du registre DX à la réinitialisation du processeur.
instance of Win32_PerfFormattedData_Counters_ProcessorInformation
show
{
AverageIdleTime = “3256073”;
C1TransitionsPersec = “0”;
C2TransitionsPersec = “2398”;
C3TransitionsPersec = “0”;
ClockInterruptsPersec = 693;
DPCRate = 5;
DPCsQueuedPersec = 517;
IdleBreakEventsPersec = “2414”;
InterruptsPersec = 2948;
Name = “_Total”;
ParkingStatus = 0;
PercentC1Time = “0”;
PercentC2Time = “96”;
PercentC3Time = “0”;
PercentDPCTime = “0”;
PercentIdleTime = “100”;
PercentInterruptTime = “0”;
PercentofMaximumFrequency = 93;
PercentPerformanceLimit = 100;
PercentPriorityTime = “0”;
PercentPrivilegedTime = “1”;
PercentPrivilegedUtility = “1”;
PercentProcessorPerformance = “66”;
PercentProcessorTime = “0”;
PercentProcessorUtility = “2”;
PercentUserTime = “0”;
PerformanceLimitFlags = 0;
ProcessorFrequency = 3600;
ProcessorStateFlags = 0;
};
On peut peut être en déduire la charge du CPU en fonction de PercentIdleTime qui est le pourcentage de temps libre,
donc la charge du CPU devrait être (100-PercentIdleTime)
On peut peut être en déduire la vitesse du CPU grâce a PercentofMaximumFrequency.
Qui est censé être le pourcentage de la vitesse max.
Sachant que la vitesse du CPU est fournie par ProcessorFrequency.
Mais ce ne sont que des suppositions qui mont l'air assez bancales.
En effet le CPU peut dépasser la vitesse fournie par ProcessorFrequency.
Donc indice de fiabilité faible sur les données récupérées par Win32_PerfFormattedData_Counters_ProcessorInformation
Select * from Win32_PerfFormattedData_PerfOS_Processor WHERE Name="_Total"
Résultat → instance of Win32_PerfFormattedData_PerfOS_Processor
show
{
C1TransitionsPersec = “2974”;
C2TransitionsPersec = “971”;
C3TransitionsPersec = “0”;
DPCRate = 2;
DPCsQueuedPersec = 403;
InterruptsPersec = 5750;
Name = “_Total”;
PercentC1Time = “13”;
PercentC2Time = “30”;
PercentC3Time = “0”;
PercentDPCTime = “0”;
PercentIdleTime = “44”;
PercentInterruptTime = “0”;
PercentPrivilegedTime = “32”;
PercentProcessorTime = “52”;
PercentUserTime = “20”;
};
Select * from ProcessorPerformance
Résultat → instances of ProcessorPerformance
show
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_0”;
percentage = 48;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_1”;
percentage = 64;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_2”;
percentage = 55;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_3”;
percentage = 56;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_4”;
percentage = 66;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_5”;
percentage = 32;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_6”;
percentage = 47;
power = 1;
};
instance of ProcessorPerformance
{
Active = TRUE;
frequency = 3600;
InstanceName = “PPM_Processor_7”;
percentage = 35;
power = 1;
};
Pas grand chose intéressant a en retirer, mis a part le pourcentage de vitesse pour chaque CPU…
function GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime: LPFILETIME): BOOL; stdcall;