Ceci est une ancienne révision du document !


Informations sur le CPU

But

Le but est de pouvoir récupérer les mèmes informations que sur le Gestionnaire de Tâches

Via WMI

Informations générales

wql sur root/CIMV2
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;
};

Charge

Avec la requette WMI ci dessous, on récupére CurrentClockSpeed et LoadPercentage.

LoadPercentage retourne l'utilisation du processeur a l'instant T.

CurrentClockSpeed la vitesse du CPU, mais n'a pas l'air de fluctuer comme on pourrait s'y attendre quand on regarde les performances dans le Gestionnaire de Tâches.

wql sur root/CIMV2
Select CurrentClockSpeed,CurrentVoltage,LoadPercentage from Win32_Processor
instance of Win32_Processor
{
	CurrentClockSpeed = 3600;
	CurrentVoltage = 10;
	DeviceID = “CPU0”;
	LoadPercentage = 6;
};

Win32_PerfFormattedData_Counters_ProcessorInformation

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

Win32_PerfFormattedData_PerfOS_Processor

wql sur Root/CIMV2
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”;
};

root\WMI\ ProcessorPerformance

Autres pistes a étudier

  • Win32_PerfRawData_Counters_ProcessorInformation
  • Win32_PerfFormattedData_Counters_ProcessorInformation
  • Win32_PerfRawData_GPUPerformanceCounters_GPUProcessMemory
  • Win32_PerfFormattedData_PerfOS_Processor
  • Win32_PerfRawData_PerfOS_Processor
  • root\WMI\ProcessorBiosTStates
  • root\WMI\ProcessorPerformance
  • root\WMI\ProcessorBiosInfo
  • root\CIMV2\Win32_AssociatedProcessorMemory

Via PDH

Sources & Ressources

Vous pourriez laisser un commentaire si vous étiez connecté.