All of lore.kernel.org
 help / color / mirror / Atom feed
* Killing cgroups
@ 2021-04-19 15:56 Christian Brauner
  2021-04-19 16:15 ` Roman Gushchin
  2021-04-19 17:08 ` Shakeel Butt
  0 siblings, 2 replies; 7+ messages in thread
From: Christian Brauner @ 2021-04-19 15:56 UTC (permalink / raw)
  To: Tejun Heo, Zefan Li, Johannes Weiner, cgroups-u79uwXL29TY76Z2rM5mHXA

Hey,

It's not as dramatic as it sounds but I've been mulling a cgroup feature
for some time now which I would like to get some input on. :)

So in container-land assuming a conservative layout where we treat a
container as a separate machine we tend to give each container a
delegated cgroup. That has already been the case with cgroup v1 and now
even more so with cgroup v2.

So usually you will have a 1:1 mapping between container and cgroup. If
the container in addition uses a separate pid namespace then killing a
container becomes a simple kill -9 <container-init-pid> from an ancestor
pid namespace.

However, there are quite a few scenarios where one or two of those
assumptions aren't true, i.e. there are containers that share the cgroup
with other processes on purpose that are supposed to be bound to the
lifetime of the container but are not in the same pidns of the
container. Containers that are in a delegated cgroup but share the pid
namespace with the host or other containers.

This is just the container use-case. There are additional use-cases from
systemd services for example.

For such scenarios it would be helpful to have a way to kill/signal all
processes in a given cgroup.

It feels to me that conceptually this is somewhat similar to the freezer
feature. Freezer is now nicely implemented in cgroup.freeze. I would
think we could do something similar for the signal feature I'm thinking
about. So we add a file cgroup.signal which can be opened with O_RDWR
and can be used to send a signal to all processes in a given cgroup:

int fd = open("/sys/fs/cgroup/my/delegated/cgroup", O_RDWR);
write(fd, "SIGKILL", sizeof("SIGKILL") - 1);

with SIGKILL being the only signal supported for a start and we can in
the future extend this to more signals.

I'd like to hear your general thoughts about a feature like this or
similar to this before prototyping it.

Thanks!
Christian

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-04-20 12:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-19 15:56 Killing cgroups Christian Brauner
2021-04-19 16:15 ` Roman Gushchin
     [not found]   ` <YH2slGErZ7s4t6DC-cx5fftMpWqeCjSd+JxjunQ2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2021-04-20 12:28     ` Christian Brauner
2021-04-19 17:08 ` Shakeel Butt
     [not found]   ` <CALvZod6haoRmgp++9sqvZaYCo+gaK6t5MSfSZ7XFpm4p6wACwA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-04-19 17:17     ` Sargun Dhillon
     [not found]       ` <CAMp4zn9_hgKOmamdzzBy5nzLr5pAXQBbuR1sjso-Wck0_3rEfA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-04-20 12:24         ` Christian Brauner
2021-04-20 12:11     ` Christian Brauner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.