You are not logged in.
Pages: 1
Hello all, long time Arch user, first time poster here
Yesterday I picked up a used RX570 (MSI Gaming X) and I'm testing it under Arch.
I'm quite satisfied with the card performance.
No matter what I do however, I can't reach the low power draw achievable under Windows.
https://i.imgur.com/94h2WD6.png
Under Windows, the card can comfortably idle at 7.25W.
This allows desktop usage with fan turned off at 2560x1440, 144Hz.
The GPU temperature never exceeds 45C doing basic web browsing etc.
In Arch, under the same conditions (2560x1440 at 144Hz), the idle desktop power usage is 38W:
~ sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info
# ... (omitted for clarity) ...
GFX Clocks and Power:
300 MHz (MCLK)
1245 MHz (SCLK)
588 MHz (PSTATE_SCLK)
1000 MHz (PSTATE_MCLK)
1137 mV (VDDGFX)
38.13 W (average GPU)
GPU Temperature: 30 C (<--- note temperature is low, but fan is turned on)
GPU Load: 0 %
# ...
At 60Hz, I can get down to 28W average:
~ sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info
# ...
GFX Clocks and Power:
1000 MHz (MCLK)
456 MHz (SCLK)
588 MHz (PSTATE_SCLK)
1000 MHz (PSTATE_MCLK)
906 mV (VDDGFX)
29.219 W (average GPU)
GPU Temperature: 30 C (<--- note temperature is low, but fan is turned on)
GPU Load: 0 %
# ...
At this power usage, the card can't be used with fans turned off.
I tried anyway:
# echo "1" > /sys/class/drm/card0/device/hwmon/hwmon3/pwm1_enable
# echo "0" > /sys/class/drm/card0/device/hwmon/hwmon3/pwm1
After 5 minutes, temperature ramped up from 30C to 55C (and kept going), after which I turned the fans back on to ~950RPM. This keeps the card cool at idle.
I read this Phoronix article about an AMDGPU bug in 4.18 and tried a few kernels hoping to see a difference:
linux (4.20.8.arch1-1)
linux-lts (4.19.21-1)
linux-mainline (5.0rc6-1)
Unfortunately, I'm getting same results with these 3 kernels.
I also tried a couple kernel parameters (without really understanding them ):
amdgpu.dc=1 and amdgpu.dc=0
amdgpu.ppfeaturemask=0xffffffff
Neither seemed to have any effect by themselves, so I moved on to:
I observed fluctuating MCLK and SCLK, so I thought this could be the culprit (maybe card trying to stay in a high-performance mode unnecessarily).
# cat /sys/class/drm/card0/device/power_dpm_force_performance_level
auto
# echo "low" > /sys/class/drm/card0/device/power_dpm_force_performance_level
This yields the following results:
at 60Hz, sets MCLK=300MHz, SCLK=300MHz, but keeps power draw at 28W
at 144Hz, sets MCLK=300MHz, SCLK=1245MHz, but keeps power draw at 38W
The MCLK and SCLK clocks no longer fluctuate under "low", but this doesn't seem to have effect on the power consumption.
There are a few things I may still try, but at this point I'm almost ready to accept that this is as good as I can get.
However, seeing people in this Phoronix thread reach as low as 6W idle (on RX560) or 4W (on Vega56) gives me... hope?
I'd love to hear any feedback from other AMD GPU users.
If you'd like to share your power draw, I'd appreciate it a lot.
If you have any ideas how to improve this further or what else to try, I'd appreciate that very much also.
Last edited by jasonwryan (2019-02-16 21:47:04)
Offline
Read the Code of Conduct and only post thumbnails http://wiki.archlinux.org/index.php/Cod … s_and_code
Offline
What desktop are you using?
I tried to compare what you report with what I'm seeing here with my setup, and I see the same. I'm using XFCE with the built-in compositor disabled, and instead use 'compton'. The card is an RX480.
In my experiments here, I noticed that the power usage goes down a lot if I stop compton. With compton running it's about 30W, and without compton it's about 12W. I then next tried starting compton like this from a terminal window:
GALLIUM_HUD=fps compton
It seems to do something all the time, the fps rarely drop below 20-30fps.
Thinking about what might be going on, I got the idea to try the "xrender" backend of compton used on top of my normal config. I started compton like this:
compton --backend xrender
When run like this, it has the same 12W power usage as without compton. This is with shadows and vsync and such still being applied to the graphics from my normal config. Visually things seem to look exactly the same as with the "glx" backend I normally use.
Adding GALLIUM_HUD=fps to the command line when using "--backend xrender" does nothing because it's not using OpenGL anymore, so I can't see what's happening to the fps.
EDIT:
I found out those 30fps that it always runs at are caused by the XFCE panel here for me. If I kill the main "xfce4-panel" process, things drop to 0fps in the GALLIUM_HUD graph. Power usage with compton's 'glx' backend also goes down to 12W in the terminal window where I'm running "sudo watch cat ..." on that kernel debug file.
Last edited by Ropid (2019-02-17 05:42:58)
Offline
Thanks for your reply Ropid!
Interesting observation with the compton backends. Also 12W seems nice.
What brand is your RX480?
What desktop are you using?
All my measurements from yesterday were on i3, no compositor.
Just now I tried a few more things
Checking power usage in the console
Using HDMI instead of DisplayPort connection
Lowering resolution
All these to no avail. The card won't go below 28W under Linux it seems
Offline
Maybe run compton with glx backend, just so that you can use that "GALLIUM_HUD=fps" thing to see what your programs are doing with regards to how often they redraw their window. You could start it like this to have it run with unlimited fps while experimenting:
GALLIUM_HUD=fps compton --config /dev/null --backend glx --vsync none
My card here is a Sapphire Nitro RX480 8G (the "Nitro" version without "+" in its name). I enabled the overclocking features of the driver and tried to reduce voltages of the higher power states because I was scared about how hot the back of the card got. That should not matter for power usage at idle because I didn't change the settings for the lower power states.
I use a 1920x1200 60Hz monitor through DisplayPort.
I have "amdgpu.dc=0" on the kernel command line because there was some sort of stutter in the mouse pointer in certain situations and this "dc=0" fixed it.
While I was researching this yesterday, I came up with a script that tries to print power usage changes in a compact way. It's supposed to be run in a terminal window in the background to check later. Here's what it says about the last few minutes while I'm thinking about what to write in this post. I have Firefox and two terminal windows open and switch between workspaces and such:
09:27:01 - 21 20 23 12 27 16 12 12 12 12 12 12 24 30 33 24 30 16 24 19 16 34 19 13 32 31 28 20 12
09:28:00 - 27 21 31 14 22 29 21 25 34 21 32 18 31 19 12 21 19 12 34 21 24 22 18 19 12 18 20 12 18 22
09:29:00 - 20 32 25 12 23 34 29 34 31 24 17 33 23 16 26 12 33 25 28 33 28 12 16 23 12 29 33 12 14 23
The script is here: http://ix.io/1Bn1
Compared to yesterday, I removed graphs for network and CPU usage from the XFCE panel. That makes power usage go down to 12W with glx backend in compton.
Last edited by Ropid (2019-02-18 08:30:57)
Offline
The FPS HUD was a good idea.
Initially I thought maybe it was Alacritty (a GPU accelerated terminal) or Firefox (where I force-enable GPU acceleration and set layout.frame_rate to 144).
But both behave nicely, the FPS only jumps when there is activity in either.
Eventually I killed Xorg and confirmed 28W in the console (with X not even running).
I don't think I can get better without understanding the driver better.
I think I will return the card while I still can and maybe try another model if I find a good price.
Thanks for your help Ropid!
Offline
Maybe this will interest someone, so I'm following up with my investigation.
I returned the RX570 and found a used RX480 instead. Same brand, same series, just an older card.
Interestingly, the RX480 responds way better to power controls.
I'm currently in the sway desktop, running 2560x1440x120Hz, and after setting performance level to "low", I'm getting a very nice <10W power draw.
$ echo "low" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level
$ sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info
[...omitted...]
GFX Clocks and Power:
300 MHz (MCLK)
300 MHz (SCLK)
300 MHz (PSTATE_SCLK)
300 MHz (PSTATE_MCLK)
800 mV (VDDGFX)
9.70 W (average GPU)
The clocks in this mode stay comfortably at 300MHz during desktop work.
Furthermore, the RX480 seems to respect the power cap better also. For instance, I can set power1_cap to 50W and the card does a very good job staying within this limit:
$ echo 50000000 | sudo tee /sys/class/drm/card0/device/hwmon/hwmon3/power1_cap
This is a very welcome behavior, as my priority is silence and my primary use case is desktop work.
So I run the card at "low" most of the time and the fan auto control keeps it at ~900RPM, which is barely audible.
When I want to play a game, I can set performance level to "auto", while still being able to cap the power draw if I want to.
Overall, I'm keeping the RX480.
If anyone finds any of this interesting or helpful, I can answer any questions.
Offline
Pages: 1