Skip to content

Get ADL_PMLOG_THROTTLER_STATUS (and other throttling sensors) #45

Open
@crowbar27

Description

@crowbar27

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions