mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
core: rearrange cgroup empty events a bit
So far the priorities for cgroup empty event handling were pretty weird. The raw events (on cgroupsv2 from inotify, on cgroupsv1 from the agent dgram socket) where scheduled at a lower priority than the cgroup empty queue dispatcher. Let's swap that and ensure that we can coalesce events more agressively: let's process the raw events at higher priority than the cgroup empty event (which remains at the same prio).
This commit is contained in:
parent
52efbd8f0e
commit
cbe83389d5
@ -2606,6 +2606,9 @@ int manager_setup_cgroup(Manager *m) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to create cgroup empty event source: %m");
|
||||
|
||||
/* Schedule cgroup empty checks early, but after having processed service notification messages or
|
||||
* SIGCHLD signals, so that a cgroup running empty is always just the last safety net of
|
||||
* notification, and we collected the metadata the notification and SIGCHLD stuff offers first. */
|
||||
r = sd_event_source_set_priority(m->cgroup_empty_event_source, SD_EVENT_PRIORITY_NORMAL-5);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to set priority of cgroup empty event source: %m");
|
||||
@ -2632,9 +2635,10 @@ int manager_setup_cgroup(Manager *m) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to watch control group inotify object: %m");
|
||||
|
||||
/* Process cgroup empty notifications early, but after service notifications and SIGCHLD. Also
|
||||
* see handling of cgroup agent notifications, for the classic cgroup hierarchy support. */
|
||||
r = sd_event_source_set_priority(m->cgroup_inotify_event_source, SD_EVENT_PRIORITY_NORMAL-4);
|
||||
/* Process cgroup empty notifications early. Note that when this event is dispatched it'll
|
||||
* just add the unit to a cgroup empty queue, hence let's run earlier than that. Also see
|
||||
* handling of cgroup agent notifications, for the classic cgroup hierarchy support. */
|
||||
r = sd_event_source_set_priority(m->cgroup_inotify_event_source, SD_EVENT_PRIORITY_NORMAL-9);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to set priority of inotify event source: %m");
|
||||
|
||||
|
@ -992,11 +992,10 @@ static int manager_setup_cgroups_agent(Manager *m) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate cgroups agent event source: %m");
|
||||
|
||||
/* Process cgroups notifications early, but after having processed service notification messages or
|
||||
* SIGCHLD signals, so that a cgroup running empty is always just the last safety net of notification,
|
||||
* and we collected the metadata the notification and SIGCHLD stuff offers first. Also see handling of
|
||||
* cgroup inotify for the unified cgroup stuff. */
|
||||
r = sd_event_source_set_priority(m->cgroups_agent_event_source, SD_EVENT_PRIORITY_NORMAL-4);
|
||||
/* Process cgroups notifications early. Note that when the agent notification is received
|
||||
* we'll just enqueue the unit in the cgroup empty queue, hence pick a high priority than
|
||||
* that. Also see handling of cgroup inotify for the unified cgroup stuff. */
|
||||
r = sd_event_source_set_priority(m->cgroups_agent_event_source, SD_EVENT_PRIORITY_NORMAL-9);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to set priority of cgroups agent event source: %m");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user