[systemd-devel] Do not realize and migrate cgroups multiple times / test suite patch
Lennart Poettering
lennart at poettering.net
Tue Feb 3 13:49:01 PST 2015
On Sat, 13.12.14 17:15, Martin Pitt (martin.pitt at ubuntu.com) wrote:
> Hello Lennart,
>
> Lennart Poettering [2014-12-09 2:37 +0100]:
> > hashmap_put() will actually compare the string, not the pointer to
> > it. Our hashmap implementation gets a hash function pointer as well as
> > an element comparison function as input, to ensure that that works
> > correctly.
>
> Ah right. I understand how these work now, and I extended the test
> case to cover this case (equal key, but different pointer).
The patch for this has been merged, apparently.
> However, unit_create_cgroups() still seems to be quite wasteful: It
> still gets called dozens of time for -.slice for every unit that gets
> started, and thus calls cg_create_everywhere() for the already
> existing cgroup. Why doesn't this function just check if
> u->cgroup_path already exists, and if so just return right away? Are
> there situations where the same unit cgroup needs to be realized and
> pids migrated to it multiple times?
unit_create_cgroups() is invoked from unit_realize_cgroup_now(), which
exits early if the unit is already realized for all controllers
that the unit needs. Thus, unit_create_cgroups() should not be called
that often, but only when the mask of controllers to realize changes.
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list