Messages in this thread | | | Date | Fri, 15 Jun 2018 03:27:57 +1000 | From | Aleksa Sarai <> | Subject | Re: Cgroups "pids" controller does not update "pids.current" count immediately |
| |
On 2018-06-15, Aleksa Sarai <asarai@suse.de> wrote: > > I've tested this on 4.14.27 and 4.4.0-124-generic Ubuntu. > > > > If I start a couple of processes which exit very quickly (like a simple Bash > > script with many commands in it), the reported value in "pids.current" is > > not updated immediately when processes exit. This leads to too many > > processes incorrectly accounted in "pids.current" which hits the "pids.max" > > prematurely. > > One possible reason for this might be related to zombie processes. > cgroup.procs doesn't include any zombie processes (tasks are removed > when they exit(2)), but the pids controller does track zombies (tasks > are removed when the 'struct task' is put'd). This could explain why > there's a discrepancy which clears itself up after a short period of > time -- though I am not sure that your reproducer will actually produce > zombies (I only took a quick look at it).
Scratch that -- it can happen even without zombies. Basically it just depends on when the 'task struct' is freed (which could happen arbitrarily later than the process exit(2)-ed).
-- Aleksa Sarai Senior Software Engineer (Containers) SUSE Linux GmbH <https://www.cyphar.com/> [unhandled content-type:application/pgp-signature] | |