This patchset adds an options column to cgrules config file
parsing. Within this column, a user can specify an "ignore"
option that will instruct cgrules to ignore processes that
exactly match this rule and perform no processing on these
processes. It is anticipated that a separate process - outside
of cgrulesengd - will be used to manage processes that match
ignore rules.
A couple examples:
<user> <controller> <destination> <options>
tom:http* memory TomsCgroup ignore
* memory DefaultCgroup
For the above example:
* A new process named httpd spawned in TomsCgroup within the
memory controller will be ignored by cgrulesengd. Again,
it's expected that another process will manage the processes
within TomsCgroup
* Similarly processes named http, httpX, http70, etc. within
TomsCgroup will also be ignored
* cgrulesengd will attempt to move any processes that do not
match the ignore rule into the DefaultCgroup
<user> <controller> <destination> <options>
* cpu IgnoreCG/* ignore
* cpu DefaultCgroup
For the above example:
* Any new processes spawned within the IgnoreCG or a child
cgroup within IgnoreCG will be ignored by cgrulesengd
* cgrulesengd will attempt to move any processes that do not
match the ignore rule into the DefaultCgroup
All functional tests and unit tests are passing:
https://travis-ci.com/drakenclimber/libcgroup/builds/137041317
Code coverage increased from 16% to 18%. The logic added for
this commit was fully covered with the exception of a few error
handling cases:
https://coveralls.io/builds/27059668
The code is also available on github here:
https://github.com/drakenclimber/libcgroup/tree/ignore_field_v2
Tom Hromatka (10):
tests: Add STATIC and UNIT_TEST definitions to automake files
api: Increase MAX_MNT_ELEMENTS to 16
api.c: Add options field for rules defined in cgrules conf file
tests: Add unit tests for cgroup_parse_rules_options()
api.c: Add function to read /proc/{pid}/cgroup
tests: Add unit tests for cg_get_cgroups_from_proc_cgroups()
api.c: Add logic to process ignore rules
tests: Add unit tests for cgroup_compare_ignore_rule()
cgrulesengd: Add wildcard matching for process names
tests: Add unit tests for cgroup_compare_wildcard_procname()
src/Makefile.am | 4 +-
src/api.c | 387 ++++++++++++++++++++-
src/libcgroup-internal.h | 30 +-
tests/gunit/002-cgroup_parse_rules_options.cpp | 105 ++++++
.../gunit/003-cg_get_cgroups_from_proc_cgroups.cpp | 175 ++++++++++
tests/gunit/004-cgroup_compare_ignore_rule.cpp | 285 +++++++++++++++
.../gunit/005-cgroup_compare_wildcard_procname.cpp | 97 ++++++
tests/gunit/Makefile.am | 10 +-
8 files changed, 1084 insertions(+), 9 deletions(-)
create mode 100644 tests/gunit/002-cgroup_parse_rules_options.cpp
create mode 100644 tests/gunit/003-cg_get_cgroups_from_proc_cgroups.cpp
create mode 100644 tests/gunit/004-cgroup_compare_ignore_rule.cpp
create mode 100644 tests/gunit/005-cgroup_compare_wildcard_procname.cpp
--
1.8.3.1
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel