[GUIDE] eGPU performance tests using AMD RX 580 on Linux

I recently set up an RX 580 in a Razer Core X Thunderbolt 3 enclosure on my 1135g7 Framework using an external display, and ran some benchmarks in Fedora 37 and Windows 10. Here are some of my results, as well as a simple fix I discovered to improve performance on Linux.

The first thing I discovered is that the Framework won’t post with the eGPU attached, this seems to be a known issue and the workaround is simply to plug it in after posting. Once I figured this out, I moved on to testing in both Fedora and Windows.

Update: I also noticed that if I either unplug the HDMI cable, or power off the monitor, the Framework posts successfully.

Fedora 37 (Silverblue)

Once I got it to boot, I noticed that the external display connected to the eGPU was quite laggy. This is because the compositor was still on the iGPU, so I used all-ways-egpu to switch to the eGPU:

# Install all-ways-egpu
# See github repo for instructions

# Configure all-ways-egpu
all-ways-egpu setup

# Switch to egpu
all-ways-egpu switch egpu

This restarts the display manager and disables the iGPU for maximum performance.

Now things were looking promising, so I ran a few benchmarks and rebooted into Windows 10.

Windows 10

I simply installed the AMD driver package, and everything worked including hotplug.

Initial Results

Basemark GPU Benchmark (OpenGL)

OS Score Avg FPS
Windows 10 4324 43
Fedora 37 (wayland) 3787 38
Fedora 37 (xorg) 3749 37

Performance difference: ~ 12.5% slower on Linux :pensive:

Performance Fix

This seemed like a bigger than expected difference to me, then I noticed that running lspci -vv showed LnkSta: Speed 2.5GT/s (downgraded) for the RX 580.

The eGPU was being restricted to 2.5 GT/s (PCI-E 1x speed) when the theoretical performance of Thunderbolt 3 is 8 GT/s!

I did some searching and discovered this helpful post from a user of a GPD Win 3 device who experienced the same problem, which appears to be a bug in the amdgpu driver. This can be fixed by adding a kernel argument forcing it to the correct speed.

Since I am using Fedora Silverblue, I added the kernel arguments using:

rpm-ostree kargs --append=amdgpu.pcie_gen_cap=0x40000

Then after a reboot, I switched to the eGPU again using all-ways-egpu and re-ran the benchmark:

Post Fix Results

Basemark GPU Benchmark (OpenGL)

OS Score Avg FPS
Windows 10 4324 43
Fedora 37 (wayland) 4023 40

Performance difference: ~ 6.9% slower on Linux.

Still a bit slower but a worthwhile gain in performance. I would imagine that this might explain the poor performance reported by some newer cards which are probably more bottlenecked by PCI bandwidth than my old RX 580. (I have seen a few reports from owners of RX 6xxx cards that Linux performance is significantly worse).

Gaming Experience

I don’t have an extensive library of AAA games to test with, but performance is more than acceptable for me. I have tested some older classics like Portal 2 which runs at 4K on maximum settings, as well as some games using Proton: Subnautica runs great at 1080p, so does Alien: Isolation. More than enough for a casual gamer!

12 Likes

Marking this as an eGPU guide for Fedora/AMD GPU.

3 Likes

Awesome guide and great to see some well documented results.

Got an Rx 580 in my desktop I may decommission soon so will keep this in mind!

3 Likes

I have a Razer Core X with a AsRock RX 6600 and my score without tweaking a thing is:

Overall score: C10435
Resolution: 2560x1440
Content Quality: High
Graphics API: Vulkan 1.0
Texture Compression: bc7
Average FPS: 104
Minimum FPS: 66
Maximum FPS: 208
2 Likes

I’ve been testing this setup a little bit more and I get quite satisfying results.

Played some DotA 2 and got ultra details on 1440p and around 70-110fps.
I’ve capped it to 60 since my monitor doesn’t support more and while the CPU gets around 80°C the GPU is pretty cool with a maximum of 60°C. But so far, no GPU fans…

Based on radeontop & htop the CPU is pretty much around 35-50% and the GPU hits highs on 35%. This means that this combination is working well. However, the CPU temps are pretty high, but then again, the fans are still only going fast, not super fast.

All together I am not going to max out both of them. It’s very playable, even though FPS drops to 35 lows every once in a while.

2 Likes

When the Zen 4 boards drop, I’m going to give eGPU testing another shot with my CoolerMaster EG200. Last time I did/wrote about that was here or here.

1 Like

I am currently running an RX7700XT with the TH3P4 DIY unit with the FW13 AMD and the performance is remarkable. Satisfactory 8 runs with solid 40-60fps on 4K UHD with Ultra settings and looks really beautiful. The Framework won’t charge the battery if it is turned on after connecting the eGPU. if the battery of the FRamework is drained so it won’t boot, you have to put some charge into it first, using another charger. The workaround is to turn it on, wait for the screen to turn on, show the RAM test(i have quick boot turned off) and then connect the egPU. That works a 100%. Performance comparison with Windows 11 isn’t really possible for me as it is very inconsistent. On one day, Win11 will perform absolutely amazing and then the next day, without changing anything, it is unstable and a 5fps slideshow. On Linux i can’t recommend the all-ways-egpu script enough. It’s the only way i got it to work at all. Expecially the performance on Walynd is horrible if both GPUs are active.