On 12. Aug 2019, at 18:16, Lennart Poettering mzerqung@0pointer.de wrote:
On Mo, 12.08.19 09:40, Chris Murphy (lists@colorremedies.com) wrote:
How to do this automatically? Could there be a mechanism for the system and the requesting application to negotiate resources?
Ideally, GNOME would run all its apps as systemd --user services. We could then set DefaultMemoryHigh= globally for the systemd --user instance to some percentage value (which is taken relative to the physical RAM size). This would then mean every user app individually could use — let's say — 75% of the physical RAM size and when it wants more it would be penalized during reclaim compared to apps using less.
If GNOME would run all apps as user services we could do various other nice things too. For example, it could dynamically assign the fg app more CPU/IO weight than the bg apps, if the system is starved of both.
I really like the ideas. Why isn’t this done this way anyway?
I don’t have a GNOME desktop at hand right now to investigate how GNOME starts applications and so on but aren’t new processes started by the user — GNOME or not — always children of the user.slice? Is there a difference if I start a GNOME application or a normal process from my shell?
And for the beginning, wouldn’t it be enough to differentiate between user slices and system slice and set DefaultMemoryHigh= in a way to make sure there is always some headroom left for the system?
BK
(… I definitely need to play around with Silverblue to learn what they are doing.)