cgroups: bring back "use unified cgroups" option (#17969)
Ilya Mashchenko committed
Jun 20, 2024 at 18:27 UTC
4b01a5a836a620d8fdc72f4ce909666bc6799260
2 files changed
+8
-3
src/collectors/cgroups.plugin/cgroup-internals.h
+1
-1
@@ -283,7 +283,7 @@ void cgroup_discovery_worker(void *ptr);
283
extern bool is_inside_k8s;
284
extern long system_page_size;
285
286
-extern bool cgroup_use_unified_cgroups;
286
+extern int cgroup_use_unified_cgroups;
287
extern bool cgroup_unified_exist;
288
289
extern bool cgroup_enable_cpuacct;
src/collectors/cgroups.plugin/sys_fs_cgroup.c
+7
-2
@@ -13,7 +13,7 @@ unsigned long long host_ram_total = 0;
13
bool is_inside_k8s = false;
14
long system_page_size = 4096; // system will be queried via sysconf() in configuration()
15
16
-bool cgroup_use_unified_cgroups = false;
16
+int cgroup_use_unified_cgroups = CONFIG_BOOLEAN_AUTO;
17
bool cgroup_unified_exist = true;
18
19
bool cgroup_enable_blkio = true;
@@ -170,6 +170,9 @@ static enum cgroups_type cgroups_try_detect_version()
170
if ((systemd_setting = cgroups_detect_systemd("systemd --version")) == SYSTEMD_CGROUP_ERR)
171
systemd_setting = cgroups_detect_systemd(SYSTEMD_CMD_RHEL);
172
173
+ if(systemd_setting == SYSTEMD_CGROUP_ERR)
174
+ return CGROUPS_AUTODETECT_FAIL;
175
+
176
if(systemd_setting == SYSTEMD_CGROUP_LEGACY || systemd_setting == SYSTEMD_CGROUP_HYBRID) {
177
// currently we prefer V1 if HYBRID is set as it seems to be more feature complete
178
// in the future we might want to continue here if SYSTEMD_CGROUP_HYBRID
@@ -230,7 +233,9 @@ void read_cgroup_plugin_configuration() {
233
if(cgroup_check_for_new_every < cgroup_update_every)
234
cgroup_check_for_new_every = cgroup_update_every;
235
233
- cgroup_use_unified_cgroups = (cgroups_try_detect_version() == CGROUPS_V2);
236
+ cgroup_use_unified_cgroups = config_get_boolean_ondemand("plugin:cgroups", "use unified cgroups", CONFIG_BOOLEAN_AUTO);
237
+ if (cgroup_use_unified_cgroups == CONFIG_BOOLEAN_AUTO)
238
+ cgroup_use_unified_cgroups = (cgroups_try_detect_version() == CGROUPS_V2);
239
collector_info("use unified cgroups %s", cgroup_use_unified_cgroups ? "true" : "false");
240
241
char filename[FILENAME_MAX + 1], *s;