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 showinstance 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;