SUMMARY Memory/RAM usage is not shown for processes owned by other users, so if one of those processes (like system services running under root or another user) ends up gobbling up memory the System Monitor would not be helpful for finding out which process is causing it. STEPS TO REPRODUCE 1. Open the Processes page 2. Make it show System Processes OBSERVED RESULT At least some of the processes should have a value for the memory usage (excluding things like kworkers of course). EXPECTED RESULT The Memory column is completely empty. SOFTWARE/OS VERSIONS Operating System: Arch Linux KDE Plasma Version: 5.23.1 KDE Frameworks Version: 5.87.0 Qt Version: 5.15.2 Kernel Version: 5.14.13-arch1-1 (64-bit) ADDITIONAL INFORMATION KSysGuard does show the memory usage for some root processes (like packagekitd for example), and so does the GNOME System Monitor for that matter.
Can reproduce.
Oh, and it appears that it's not just processes owned by other users, a few owned by my user (like kwin_wayland and org_kde_powerdevil) are affected too, not sure if it's exactly the same issue though. Again KSysGuard shows their memory usage just fine, and I'm using the systemd startup for what it's worth.
*** Bug 464191 has been marked as a duplicate of this bug. ***
So the "memory" column shows the so called "VmPSS" value that is retrieved from `/proc/$pid/smaps_rollup`. Unfortunately this file is not world-readable but only user-readable unlike some of the other files in /proc. This means that when we try to read that file for non-user owned processes, we get an access denied and cannot read that value. Additionally, some processes set a flag that tells the kernel to disallow reading that file, which ends up with the same result. Overall, I'm not really happy with how that value is exposed by the kernel, yet it is the best matching value for actual memory we can get, as it includes both the private memory usage as well as the process' share of the shared memory. So by default we use that column. The column called "Memory" in KSysGuard actually still exists but has been renamed to "Private Memory Usage" as that is what it actually is. That column reads from a file that *is* world readable so if you enable that, you get memory information for other processes as well.
*** Bug 468947 has been marked as a duplicate of this bug. ***
*** Bug 486470 has been marked as a duplicate of this bug. ***