This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Use the PDH API in WindowsLoadTracker
Type: enhancement Stage:
Components: Windows Versions:
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: eryksun, jkloth, paul.moore, steve.dower, tim.golden, zach.ware
Priority: normal Keywords:

Created on 2022-03-22 19:51 by eryksun, last changed 2022-04-11 14:59 by admin.

Files
File name Uploaded Description Edit
loadtracker.py eryksun, 2022-03-22 19:51
Messages (1)
msg415808 - (view) Author: Eryk Sun (eryksun) * (Python triager) Date: 2022-03-22 19:51
In bpo-44336, a new version of WindowsLoadTracker was implemented in Lib/test/libregrtest/win_utils.py. This version resolves issues with the previous implementation that spawned typeperf.exe. The new implementation uses the registry API's HKEY_PERFORMANCE_DATA pseudohandle to access the performance counters. This requires hard-coding "2" as the key name of the system object, 44 as the index of the "Processor Queue Length" counter, and also several struct definitions. 

The HKEY_PERFORMANCE_DATA 'key' just wraps the API as an alternate way to consume counter data. Instead of taking this detour through a minimalist interface just to use the API in a roundabout way, it would be better to implement a few of the Performance Data Helper functions in _winapi. I've implemented a prototype in ctypes to demonstrate this, which I'm attaching as "loadtracker.py". The functions that would need to be implemented are PdhOpenQueryW(), PdhAddEnglishCounterW(), PdhCollectQueryData(), PdhGetRawCounterValue(), and PdhCloseQuery().
History
Date User Action Args
2022-04-11 14:59:57adminsetgithub: 91252
2022-03-22 19:51:28eryksuncreate