display-library icon indicating copy to clipboard operation
display-library copied to clipboard

Get ADL_PMLOG_THROTTLER_STATUS (and other throttling sensors)

Open crowbar27 opened this issue 1 year ago • 0 comments

I am trying to obtain the throttling state of several AMD GPUs (6900 XT, 7900 XT and 7900 XTX). My understanding is that I request ADL_PMLOG_THROTTLER_STATUS in ADLPMLogStartInput::usSensors like for the power readings. Furthermore, I assume that for ADL_PMLOG_THROTTLER_STATUS, I would cast the respective ADLPMLogData::ulValues to ADL_THROTTLE_NOTIFICATION and if the card is throttled, the respective bit would be set.

Is that the correct way to do this?

If so, does ADL_PMLOG_THROTTLER_STATUS report the current status or does the "notification" imply that it only reports changes. In any case, I have the problem that my card (actually all of them, and I have a few) is never throttled even if reducing the current limit and running stuff like Cyberpunk for a prolonged time. Given that other tools like hwinfo show 100% for the current limit in this case, I believe the card is actually throttled and should report his.

Speaking of hwinfo, I was unable to find out which APIs would enable me to retrieve the individual limits. Specifically, none of ADL_PMLOG_THROTTLER_TEMP_EDGE_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_HOTSPOT_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_HOTSPOT_GCD_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_HOTSPOT_MCD_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_MEM_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_VR_GFX_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_VR_MEM0_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_VR_MEM1_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_VR_SOC_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_LIQUID0_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_LIQUID1_PERCENTAGE, ADL_PMLOG_THROTTLER_TEMP_PLX_PERCENTAGE, ADL_PMLOG_THROTTLER_TDC_GFX_PERCENTAGE, ADL_PMLOG_THROTTLER_TDC_SOC_PERCENTAGE, ADL_PMLOG_THROTTLER_TDC_USR_PERCENTAGE, ADL_PMLOG_THROTTLER_PPT0_PERCENTAGE, ADL_PMLOG_THROTTLER_PPT1_PERCENTAGE, ADL_PMLOG_THROTTLER_PPT2_PERCENTAGE, ADL_PMLOG_THROTTLER_PPT3_PERCENTAGE, ADL_PMLOG_THROTTLER_FIT_PERCENTAGE, ADL_PMLOG_THROTTLER_GFX_APCC_PLUS_PERCENTAGE seem to be supported on any of my card. The workaround of retrieving the configured limits via ADL2_OverdriveN_CapabilitiesX2_Get and computing the state from the actual power and temperature readings failed, because the function returns ADL_OK, but does not write anything (the debug version still shows uninitialised memory once the function returned successfully.

Long story short: how can I find out whether one of the reasonably new cards are throttled at a given point in time?

crowbar27 avatar Feb 19 '24 20:02 crowbar27