-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On Fri, 2020-07-10 at 15:55 -0400, Ben Cotton wrote: > https://fedoraproject.org/wiki/Changes/Reserve_resources_for_active_user_WS > > == Summary == > This proposal adds cgroup based resource protections for the active > graphical session. This is done by passing a memory protection of > 250MiB to active users (capped at 10% of system memory) and by > enabling other cgroup controllers (CPU, IO) to ensure important > session processes get the resources they need. Just curious, why 250MiB and not some other number? > See: https://pagure.io/fedora-workstation/issue/154 > > == Owner == > * Name: [[User:benzea|Benjamin Berg]] > * Email: bberg@xxxxxxxxxx > * Product: Workstation > * Responsible WG: Workstation > > > == Detailed Description == > Graphical sessions should always be responsive, even when the machine > is doing a lot work or in the extreme case has started to thrash. We > have started to ship EarlyOOM with F32, however, while it is a good > solution to this date, it is shipped with the understanding of being > superseded by other approaches in the future. Does it mean we do not ship earlyoom anymore or what is this sentence supposed to indicate? > With `uresourced` a small daemon was written that enables protection > of the graphical user session. It serves the following main purposes: > > * Safely modify existing GNOME systemd units to closer adhere to > https://systemd.io/DESKTOP_ENVIRONMENTS/ (until this is merged > upstream). > * Enables the CPU and IO cgroup controllers for users to prevent e.g. > fork bombs from taking over the system. > * Allocates a memory guarantee for any *active* user which is > distributed to core session processes. > > Precautions are in place to not negatively affect systems: > > * Active users will receive a protected memory allocation of 250MiB > allocation, but capped at 10% of system memory. So low memory systems > should not be negatively impacted. Said differently, the memory > subsystem treats the core session processes in comparison to > everything else as if they were using 250MiB less than they actually > are. > * `uresourced` detects whether the user session is using systemd to > prevent passing memory guarantees to processes that are not important > (e.g. not a GNOME session). > * Enabling the IO controller has no effect on Fedora currently. > > NOTES: > > * `uresourced` is designed to be obsoleted. Everything it does should > be absorbed by other upstreams. However, it is a good and safe > solution that eases development and permits shipping the benefits to > users now. > * Enabling the cgroup controllers may slightly increase the > scheduling > overhead that the kernel imposes. I don't have numbers right now, but > expect this to be <=1% of overall system CPU time. > > > == Benefit to Fedora == > This change proposal will improve interactivity of graphical sessions > in certain situations. It also is an important step on the path to > reap the benefits of systemd and cgroups in workstation scenarios. > > == Scope == > * Proposal owners: > * Install `uresourced` on workstations by default > * Add a preset to enable `uresourced` by default > > * Other developers: no further changes are needed > > * Release engineering: [https://pagure.io/releng/issue/9592] > * Policies and guidelines: N/A (not needed) > * Trademark approval: N/A (not needed for this Change) > > > == Upgrade/compatibility impact == > No impact. The worst case scenario is that the feature will not be > enabled. > > == How To Test == > Testing this has multiple aspects. From the technical side, a test is > as simple as: > > * Install and enable `uresourced` > * Reboot (to make absolutely sure the user session has picked up all > changes, logout may *not* be sufficient) > * Check values in `/sys/fs/cgroup/user.slice/memory.low`, > `/sys/fs/cgroup/user.slice/user-1000.slice/memory.low`, > `/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.l > ow` > and > `/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session. > slice/memory.low` > (should usually be 250MiB with the default configuration). > * Verify that the allocation is zero if the user is not active on any > seat (e.g. switch to GDM and log in via SSH or by doing a `sleep 10; > cat ...` and coming back). > * Check enabled controllers in > `/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/cgroup.c > ontrollers` > (should be `cpu io memory pids`). > > Beyond that, a test can be done to show that the cgroup kernel > controllers are actually beneficial in various scenarios. Possible > examples are: > > * Running mprime > (http://www.mersenne.org/ftp_root/gimps/p95v298b6.linux64.tar.gz); > choose local stress test, repeat by selecting 15 <br>NOTE: mcatanzaro > has reported a huge impact, with both the session remaining mostly > responsive and EarlyOOM not kicking in (this makes sense, as overall > memory pressure is much lower, i.e. the session is waiting on memory > related IO less). The proposal owners have not been able to reproduce > this corner case so far. > * Log in two user A and B (same seat), run `stress-ng -c NCPUS` in > both. Switch between them and look at `top` to verify that the active > user gets a 5 times higher CPU share overall. > > == User Experience == > See other sections. > > == Dependencies == > There are no further dependencies. > > == Contingency Plan == > * Contingency mechanism: Remove uresourced from the default install > set and possibly also remove the preset again > * Contingency deadline: Final freeze > * Blocks release? No > > == Documentation == > Upstream is identical to the change owner. The upstream repository > has > a further README https://gitlab.freedesktop.org/benzea/uresourced > (which should not contain any more information than what is here). > > > -- > Ben Cotton > He / Him / His > Senior Program Manager, Fedora & CentOS Stream > Red Hat > TZ=America/Indiana/Indianapolis > _______________________________________________ > devel-announce mailing list -- devel-announce@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to > devel-announce-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: > https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedoraproject.org/archives/list/devel-announce@xxxxxxxxxxxxxxxxxxxxxxx - -- Igor Raits <ignatenkobrain@xxxxxxxxxxxxxxxxx> -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEcwgJ58gsbV5f5dMcEV1auJxcHh4FAl8JX4MACgkQEV1auJxc Hh69cw/9EUQU5YlPWl+yjOOLvMJ05Y27Eg2bg1INzde4iZIkuIydHS/ANXj9zIlF oMIbb7d1Gzh342Spdi7ANg7FdG23EnStJXWvDJb0XRVOcnbf6NIV0xttELMnSij+ NVMrdcmF5Vl2MI2HMBNfvLeyhCJAX6W/chf5lnyEwAWsEzRfagjs8I3WAMK6ZXr8 rMH+emU8xslhlTfON8tc30uvLWPAqkh85Md0X+Wl76lA+d09eCw0VsOQkI7hODKS l7L9s6mW1cpHv3wm9RmSJ3U3kq1IPCE4WvkjLcJIVtL1xX1qigrfBNnOXOjvdP+9 z9Ln4InzpmL/jsL6u715G9s0SE7MWelilN+K9juU8e2DZsqBBHY+S1j+YO1NZYXL K3jDH9Kr157jpyZnrBNcRzYJSt9wEL+jjNXtaErlfpwUsKCiIKeC7gaLFEbNS6Re iihGhJbHaRJB8O178s7WfUMD4Z/7EQoawBENKPLnxMsPdqkNcQC+1y9EGIs+PaQ5 I6L7FzhiSlqMrc8yQTXy8ebZKCMLZYy7bhLbrlhe3jYXHNHxCowyY2STBHiIYqkr LuqM5yo7+LUj7XIi4wTYFzXMhlkR8RZkDyzfe18tIq0Qvvrc2aOxPnjeUVZzPYkt NmKZIsQpw2ePGjNqWNSEk7tI5XeskrJEA4HRO26T2ydMBdgTMLE= =sFT5 -----END PGP SIGNATURE----- _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx