Underclocking/Volting to Reduce Fan Spd for RX480 In Fedora 28. Do You Know Da Wei?

Hello mah bruddas.

I have a Sapphire RX480 installed in a rig that I am hoping to use as a server for an assortment of services (NextCloud, GOGs, NMS) a majority of the time. I anticipate it being powered up 24/7. My problem is that the RX480 fans are running constantly. I’m wondering if it will be safe or even possible to underclock/volt it to a point where the fans only spin up under load.

The other part of my question is how would I do this exclusively through Fedora? I’d rather not install Window$ to do this one thing.

Any input is much appreciated.

Thanks!

It’s totally safe to underclock and undervolt it, in almost all circumstances, it’s overvolting that damages a processor.

What exact model of the 480 do you have? Also, what temps do you see at idle now (and fan speeds)?

Getting the GPU to idle fanless is more about dropping your power consumption down to a level where the fans can safely shut down, rather than just undervolting and calling it a day. (although, that can help)

https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-Voltage-Sysfs

I don’t have an AMD GPU in my Linux systems at the moment, so I can’t verify if this landed. You might want to dig through the sysfs driver files to see what you’ve got in there and look at docs for that.

1 Like

`$ sensors’ output:

amdgpu-pci-0600
Adapter: PCI adapter
vddgfx:       +1.08 V  
fan1:         704 RPM
temp1:        +52.0°C  (crit = +94.0°C, hyst = -273.1°C)
power1:       41.16 W  (cap = 142.00 W)

`$ sudo lspci -v -s $(lspci | grep ’ VGA ’ | cut -d" " -f 1)’ output:

06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X] (rev c7) (prog-if 00 [VGA controller])
Subsystem: PC Partner Limited / Sapphire Technology Device e353
Flags: bus master, fast devsel, latency 0, IRQ 63
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=2M]
I/O ports at e000 [size=256]
Memory at fe900000 (32-bit, non-prefetchable) [size=256K]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Legacy Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150] Advanced Error Reporting
Capabilities: [200] #15
Capabilities: [270] #19
Capabilities: [2b0] Address Translation Service (ATS)
Capabilities: [2c0] Page Request Interface (PRI)
Capabilities: [2d0] Process Address Space ID (PASID)
Capabilities: [320] Latency Tolerance Reporting
Capabilities: [328] Alternative Routing-ID Interpretation (ARI)
Capabilities: [370] L1 PM Substates
Kernel driver in use: amdgpu
Kernel modules: amdgpu

`$ ls /sys/class/drm/card0/device/’ output:

ari_enabled               current_link_width  drm_dp_aux_dev  i2c-3        local_cpulist   numa_node                          pp_dpm_sclk            pp_table      resource2     subsystem_device
boot_vga                  d3cold_allowed      enable          i2c-4        local_cpus      power                              pp_force_state         remove        resource2_wc  subsystem_vendor
broken_parity_status      device              graphics        i2c-5        max_link_speed  power_dpm_force_performance_level  pp_mclk_od             rescan        resource4     uevent
class                     dma_mask_bits       hwmon           i2c-6        max_link_width  power_dpm_state                    pp_num_states          reset         resource5     vbios_version
config                    driver              i2c-0           iommu        modalias        pp_cur_state                       pp_od_clk_voltage      resource      revision      vendor
consistent_dma_mask_bits  driver_override     i2c-1           iommu_group  msi_bus         pp_dpm_mclk                        pp_power_profile_mode  resource0     rom
current_link_speed        drm                 i2c-2           irq          msi_irqs        pp_dpm_pcie                        pp_sclk_od             resource0_wc  subsystem

`$ uname -a’ output:

Linux "Redacted" 4.18.16-200.fc28.x86_64 #1 SMP Sat Oct 20 23:53:47 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

It appears to have dropped.

I also found this for anyone following along at home:

Thanks for the lead! So presumably I would `echo’ one of the listed values from that article into that file? I will look further into how compatible this will be with POLARIS cards.

Much appreciated. Any more input is very welcome!

Kind regards,

EDIT:

===================================================

I’ve run the following & returned the below clock speeds:

`$ sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info’

GFX Clocks and Power:
    1750 MHz (MCLK)
    928 MHz (SCLK)
    300 MHz (PSTATE_SCLK)
    300 MHz (PSTATE_MCLK)
    1000 mV (VDDGFX)
    28.50 W (average GPU)

So I’m thinking if I run $ sudo echo "1" > /sys/class/drm/card0/device/pp_sclk_od & $ sudo echo "0" > /sys/class/drm/card0/device/pp_mclk_od I should get some positive results.

While your intentions are different (undervolting vs. overclocking), I believe the same principles used in this post apply:
https://wiki.archlinux.org/index.php/AMDGPU#Overclocking

2 Likes

I’ve solved my problem with the following solution:

No underclocking necessary. Just a service that turns the fans off during idle temps.