While I work on making gnome-shell faster, especially at 4K, I’ve noticed more than ever my system is GPU-bound. Meaning:
- performance is visibly bad
- performance is better for very small windows and worse for larger windows
topdoesn’t report any significant CPU usage (< 15%).
I use Intel GPUs so that means they depend on system RAM for everything. And it seems my corporate-style desktops only came with one stick of RAM each. This means they are only using a single channel when actually my motherboard allows two channels in parallel (see the top right of this diagram).
Querying the BIOS/motherboard confirms I am only using one channel:
sudo dmidecode -t17
So I decided to take the RAM from the two identical machines and put them in the one machine on separate channels, hoping it would improve gnome-shell memory throughput in compositing. Here are the results (milliseconds per frame on average/peak, lower is better):
|Test||Single Channel||Dual Channel|
|Rendering a maximized window||6.0 / 6.1||5.2 / 5.3|
|Rendering in Activities Overview||16 / 22||14 / 19|
So that’s a consistent performance improvement to gnome-shell of around 13%. Seems it would be worthwhile to invest in a new pair of DIMMs in my case… But this only makes sense for integrated GPUs, and only really in theory would help things that are close to being memory (bandwidth) bound like graphics compositing at high resolution.