123 lines
3.3 KiB
ReStructuredText
123 lines
3.3 KiB
ReStructuredText
===========================================
|
|
GPU Power/Thermal Controls and Monitoring
|
|
===========================================
|
|
|
|
HWMON Interfaces
|
|
================
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: hwmon
|
|
|
|
GPU sysfs Power State Interfaces
|
|
================================
|
|
|
|
GPU power controls are exposed via sysfs files.
|
|
|
|
power_dpm_state
|
|
---------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: power_dpm_state
|
|
|
|
power_dpm_force_performance_level
|
|
---------------------------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: power_dpm_force_performance_level
|
|
|
|
pp_table
|
|
--------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: pp_table
|
|
|
|
pp_od_clk_voltage
|
|
-----------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: pp_od_clk_voltage
|
|
|
|
pp_dpm_*
|
|
--------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: pp_dpm_sclk pp_dpm_mclk pp_dpm_socclk pp_dpm_fclk pp_dpm_dcefclk pp_dpm_pcie
|
|
|
|
pp_power_profile_mode
|
|
---------------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: pp_power_profile_mode
|
|
|
|
\*_busy_percent
|
|
---------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: gpu_busy_percent
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: mem_busy_percent
|
|
|
|
gpu_metrics
|
|
-----------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
|
:doc: gpu_metrics
|
|
|
|
GFXOFF
|
|
======
|
|
|
|
GFXOFF is a feature found in most recent GPUs that saves power at runtime. The
|
|
card's RLC (RunList Controller) firmware powers off the gfx engine
|
|
dynamically when there is no workload on gfx or compute pipes. GFXOFF is on by
|
|
default on supported GPUs.
|
|
|
|
Userspace can interact with GFXOFF through a debugfs interface (all values in
|
|
`uint32_t`, unless otherwise noted):
|
|
|
|
``amdgpu_gfxoff``
|
|
-----------------
|
|
|
|
Use it to enable/disable GFXOFF, and to check if it's current enabled/disabled::
|
|
|
|
$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff
|
|
01
|
|
|
|
- Write 0 to disable it, and 1 to enable it.
|
|
- Read 0 means it's disabled, 1 it's enabled.
|
|
|
|
If it's enabled, that means that the GPU is free to enter into GFXOFF mode as
|
|
needed. Disabled means that it will never enter GFXOFF mode.
|
|
|
|
``amdgpu_gfxoff_status``
|
|
------------------------
|
|
|
|
Read it to check current GFXOFF's status of a GPU::
|
|
|
|
$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status
|
|
02
|
|
|
|
- 0: GPU is in GFXOFF state, the gfx engine is powered down.
|
|
- 1: Transition out of GFXOFF state
|
|
- 2: Not in GFXOFF state
|
|
- 3: Transition into GFXOFF state
|
|
|
|
If GFXOFF is enabled, the value will be transitioning around [0, 3], always
|
|
getting into 0 when possible. When it's disabled, it's always at 2. Returns
|
|
``-EINVAL`` if it's not supported.
|
|
|
|
``amdgpu_gfxoff_count``
|
|
-----------------------
|
|
|
|
Read it to get the total GFXOFF entry count at the time of query since system
|
|
power-up. The value is an `uint64_t` type, however, due to firmware limitations,
|
|
it can currently overflow as an `uint32_t`. *Only supported in vangogh*
|
|
|
|
``amdgpu_gfxoff_residency``
|
|
---------------------------
|
|
|
|
Write 1 to amdgpu_gfxoff_residency to start logging, and 0 to stop. Read it to
|
|
get average GFXOFF residency % multiplied by 100 during the last logging
|
|
interval. E.g. a value of 7854 means 78.54% of the time in the last logging
|
|
interval the GPU was in GFXOFF mode. *Only supported in vangogh*
|