Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get ADL_PMLOG_THROTTLER_STATUS (and other throttling sensors) #45

Open
crowbar27 opened this issue Feb 19, 2024 · 0 comments
Open

Get ADL_PMLOG_THROTTLER_STATUS (and other throttling sensors) #45

crowbar27 opened this issue Feb 19, 2024 · 0 comments

Comments

@crowbar27
Copy link

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant