mirror of
https://github.com/troglobit/finit.git
synced 2026-10-31 13:00:32 +00:00
Refactor, clean up removed top-level cgroups
The main purpose of this patch is to remove top-level cgroups when they are remvoed from finit.conf. However, this is tricky, becasue there may still be supervised services (and children of them) running. We must postpone removal until a cgroup.events change. To make matters worse, events may arrive out-of-order, i.e. the last-child event for the parent cgroup before the sub-group. A spin-off from this patch is that we can now support arbitrarily long group names and group config. (Only applies to top-level cgroups, not run/task/services.) Limitations: - Processes in "removed" cgroups are not migrated/orphaned, the reasons are several: overhead and complexity and the fact that memory cannot be migrated - A lingering child of a moved service may prevent an old top-level cgroup from being removed. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
d77c014723
commit
a42a789d29
4 files changed
+194
-82
No files matched your search
@@ -31,15 +31,11 @@ extern int logfile_size_max;
|
||||
extern int logfile_count_max;
|
||||
|
||||
extern struct rlimit global_rlimit[];
|
||||
extern struct cgroup cgroups[];
|
||||
extern size_t cgroup_num;
|
||||
extern char cgroup_current[];
|
||||
|
||||
int str2rlim(char *str);
|
||||
char *rlim2str(int rlim);
|
||||
|
||||
struct cgroup *conf_cgfind(char *name);
|
||||
|
||||
int conf_init (uev_ctx_t *ctx);
|
||||
void conf_reload (void);
|
||||
int conf_any_change (void);
|
||||
|
||||
Reference in new issue
Block a user