AMD drivers rely on TTM backpressure from the 'shrinker' subsystem to reduce
memory use under system pressure. Currently the only connection between the
pagedaemons and the linuxkpi shrinker is the vm_lowmem mechanism, which runs
far too late (it's a last resort mechanism, as opposed to the regular
PID-controller pagedaemons), far too infrequently (arbitrarily restricted to
0.1 Hz), and drops other more valuable caches at the same time.
Also, TTM defaults these pool sizes to half of RAM.
As a result, AMD drivers basically always wire half of your RAM and don't
really release it under pressure. Instead, other applications get swapped,
OOM killed, and/or their allocations fail; and the buf and UMA caches are
crunched to nothing.
In the long term, ideally we integrate the shrinker system better with the
pagedaemon system. But for now, give AMD GPU users a stop-gap measure to at
least get a usable desktop system.