D27883: Register spawned applications as an independent cgroups

David Edmundson noreply at phabricator.kde.org
Fri Mar 6 09:02:37 GMT 2020


davidedmundson created this revision.
Herald added a project: Frameworks.
Herald added a subscriber: kde-frameworks-devel.
davidedmundson requested review of this revision.

REVISION SUMMARY
  Having each application in it's own scope brings numerous advantages:
  
  - PIDs are very yesteryear, a modern application has a tonne of
  
  processes. We want some sort of logical grouping in ksysguard.
  We have a working version of this.
  
  It also can resolve the case of correctly matching the
  audio indicator to the correct application in the task manager.
  Something that has been proven to not work reliably by tracking parent
  PIDs.
  
  - We can use the cgroup freezer controller on plasma-mobile to suspend
  
  background processes.
  
  - We want to put things into the correct slice.
  
  Future systemd will split user.slice into 3 subslices, background
  services, apps and chrome (with chrome being plasmashell and kwin in our
  case). Putting applications in the correct slice will bring pre-bumped
  niceness levels.
  
  - We also can expose cgroup resources limits
  - Things get cleaned up logout without relying on xsmp.
  
  This is analogous to Gnome's recent change:
  https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/863/diffs
  
  It was also discussed in person at a very-mini meeting at FOSDEM with
  both systemd and gnome people.
  
  Task T12678 <https://phabricator.kde.org/T12678>
  
  If a relevant cgroup controller (systemd) is not running, this simply
  no-ops without issue.
  
  In addition things are guarded by an environment variable so we don't
  introduce any behavioural changes to released Plasma's.
  
  -----
  
  This change is incredibly minimal by launching as normal and then
  tagging afterwards. It's a bit of a chicken and egg scenario as we merge
  the intended usages of this change.
  
  After things are established we will want to move spawning the
  application to be responsiblity of the cgroup controller as transient
  services rather than transient scopes. It will be more "technically
  correct" and allow even more features such as improved logging.

TEST PLAN
  Ran app from kickoff, started systemd-cgls
  I've been using some variant of this on a private work project for months
  Also ran against pending ksysguard modifications that showed applications grouped nicely

REPOSITORY
  R241 KIO

BRANCH
  systemd_start

REVISION DETAIL
  https://phabricator.kde.org/D27883

AFFECTED FILES
  src/widgets/kprocessrunner.cpp
  src/widgets/kprocessrunner_p.h

To: davidedmundson
Cc: kde-frameworks-devel, LeGast00n, cblack, GB_2, michaelh, ngraham, bruns
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20200306/9e6fc43e/attachment.html>


More information about the Kde-frameworks-devel mailing list