Re: Reserve resources for active users (Workstation) - Fedora 33 Self-Contained Change proposal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux