I am the creator of WattmanGTK on linux, and I am looking for testing with the software. The goal of the project is to offer a similar GUI as wattman on the windows side.
I simply hate that fan control, there is my feedback
Think that laptops would need RyzenMaster which would anyways be amazing to get to work in tandem with GPU profiles, gotten this kind of picture from my short laptop investigations
Then, these GPU states would need some sort of hide & lock toggles for it to be possible to test that they are stable
On my dual monitor system 2x HDMI screens with RX580 - setting the ppfeaturemask to 0xfffd7fff causes a serious problem.
The GPU starts at it’s base clocks of 300Mhz Core and memory and it seems that there is something bad relating to the VSync / blanking interval in the AMDGPU code.
I get green artefacting horizontal lines flashing down both monitors AND these lines are in sync with each other across both screens.
I’ve tired to capture it - but it’s rather difficult.
I also have amdgpu.dc=1 amdgpu.dpm=1 set, these on their own without the featuremask cause no issues. I am running a 4.19.4 linux kernel.
Overall however there is an issue that has persisted for some time.
During idle the amdgpu code forces my RX580 into a higher power state than needed - that means the memory clock is pushed to 2000Mhz always, the VCore is pushed to 0.95V and the Core jumps all over the place - completely unnecessarily - additionally the PCI-e slot very rarely goes into power saving state and always runs at full speed. This is a problem that does not occur on windows.
Overall this leads to substantial power consumption increases. At idle I measure 180W via my UPS. Granted this is a very beefy workstation system with lots of disks and monitors also attached to the UPS. But by manually downclocking the GPU to it’s 300Mhz idle state (artifacting present) or unplugging the second screen, it idles at between 112W -128W - the same as Windows does.
ROCM output below
======================== ROCm System Management Interface ========================
================================================================================================
GPU Temp AvgPwr SCLK MCLK PCLK Fan Perf PwrCap SCLK OD MCLK OD GPU%
0 38.0c 36.122W 900Mhz 2000Mhz 8.0GT/s, x16 31.76% auto 145.0W 0% 0% 0%
1 30.0c 28.102W 300Mhz 300Mhz 2.5GT/s, x8 31.76% auto 145.0W 0% 0% 0%
================================================================================================
======================== End of ROCm SMI Log ========================
Any ideas what’s happening? Bad DC code with memory and vsync handling somewhere in amdgpu codebase?
This looks like I need to make a kernel bug report.
And I know it worked in the past - since I’ve previously made my own overclocking bash script.
Do you still have the same problems when using a single screen? I also have some weird artifacts going on when using dual screens. So I believe this is a kernel driver bug.
Now however - this is a quick and dirty way of doing it for just one specific card.
Regarding the stats your are pulling for GPU monitoring - it seems you’re parsing sysfs - are you considering using ioctl in future to do it ain a more robust manner?
The radeon-profile project has got a nice example of all the amdgpu ioctl calls already
Yes, I am planning to use IOCTL’s in the future. First I want to implement applying values from the GUI (I have a dev version that works already with this). And I want to package it up into a flatpak.
I am aware of how radeon-profile works and will probably use a similar way.
I had been wanting to do a project just like this very soon now that I have free time to work on it. I’d love to contribute to your project. Where did you find documentation on all of the parts that need to be addressed. That was the hardest problem I ran in to when researching.
Hey, if you have artifacting on dual monitor the “fix” is to go single monitor, install Radeon Profile and set low powerstate. I have not had to start it on every start, although I did install the daemon, so its probably running the background.