display-library
display-library copied to clipboard
Get ADL_PMLOG_THROTTLER_STATUS (and other throttling sensors)
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?