Bug#823530: systemd 228 reduced maximum number of tasks in a cgroup to 512 by default

Antonio Terceiro terceiro at debian.org
Sat May 7 14:37:54 BST 2016


On Fri, May 06, 2016 at 06:42:53PM -0500, Martin Pitt wrote:
> Hello all,
> 
> Sebastian Schmidt [2016-05-05 20:14 +0200]:
> > Whilst debugging why Chrome would regularly fail to create new
> > threads[1] and zsh couldn’t fork I noticed that:
> > - - All affected processes run in the /system.slice/xdm.service cgroup
> > - - “systemctl status xdm.service” says “Tasks: 476 (limit: 512)”
> 
> Antonio Terceiro [2016-05-06 15:45 -0300]:
> > I am seeing some inconsistency in this. On my laptop, I don't see any
> > limits being applied, even though I am on a fully up to date unstable
> > (tried both with my main account from a terminal emulator in GNOME, and
> > from a console login with a freshly created user account):
> > 
> > $ ulimit -u 22988
> 
> Note that these are two different things:
> 
>   * TasksMax is enforced via the pids cgroups, and only applies to
>     .service units started by systemd. It should not apply to user
>     sessions (i. e. .scopes) started through libpam-systemd, but
>     as Sebastian is not using them all subprocesses of xdm.service
>     inherit xdm's limit.
> 
>  * ulimit -u is the classic ulimit which is unrelated to TaskMax=
>    (instead, it is LimitNPROC= if you want to set it in a unit).
>    systemd does not have/impose a default setting for ulimits, this
>    usually comes through /etc/security/limits.conf and is being
>    applied to PAM sessions only, not to .services.
> 
> > I do appreciate the idea of systemd imposing sane limits on tasks, but
> > this will cause A LOT of breakage in all sorts of places, and we need
> > figure out a plan forward. Will every package need to start declaring
> > higher limits explicitly?
> 
> Since we released Ubuntu 16.04 LTS with this I've also gotten reports
> about this. E. g. MySQL and RabbitMQ easily break the TasksMax=512
> limit even under moderate load.  (https://launchpad.net/bugs/1578080
> is one example) Note that this actually limits threads, not just full
> processes.
> 
> So in retrospect, having a default limit there was not such a good
> idea after all: 512 is way too much for most "simple" services, and
> it's way too little for others such as the ones mentioned above. There
> is also no particular rationale about "512", so even if we'd bump it
> to 1024 we'd just make the limit even less useful while still breaking
> software.
> 
> So I think we should disable the default limit. It is both much safer
> and also much more effective in terms of guarding against berserk
> programs/bugs/unintended fork bombs etc. to set limits in units
> individually. Once someone looks at one, this is then a great time to
> also flip on the other resource and privilege limitations that systemd
> offers, such as CapabilityBoundingSet=, SecureBits=, PrivateDevices=,
> PrivateNetwork=, ProtectSystem=, ProtectHome=, etc.
> 
> So I'm proposing to change the default to "infinity". We could do this
> with a /lib/systemd/system.conf.d/no-task-max.conf, but this would be
> confusing to someone looking at /etc/systemd/system.conf, so a patch
> might be preferable (i. e. reverting upstream commit 9ded9cd). I'll
> also raise this upstream (once I have internet again), perhaps we can
> even change the default there.
> 
> Opinions?

This sounds good to me. Thanks for the quick response.

-- 
Antonio Terceiro <terceiro at debian.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20160507/5310edfe/attachment-0002.sig>


More information about the Pkg-systemd-maintainers mailing list