From b0097ee3a4b0ac445271badac153293053bd03e1 Mon Sep 17 00:00:00 2001 From: yangjiaqi Date: Tue, 30 Nov 2021 15:10:23 +0800 Subject: [PATCH 09/17] limit-stat-by-quota-period-setting --- src/proc_fuse.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/proc_fuse.c b/src/proc_fuse.c index 48c4e68..c6c32c7 100644 --- a/src/proc_fuse.c +++ b/src/proc_fuse.c @@ -549,7 +549,7 @@ struct devinfo* container_dev_read(pid_t pid) { memset(fpath, 0, sizeof(fpath)); snprintf(fpath, 99, "/dev/%s", ptr->d_name); stat(fpath, &dev_stat); - fprintf(stream, "%s %d ", ptr->d_name, dev_stat.st_rdev); + fprintf(stream, "%s %ld ", ptr->d_name, dev_stat.st_rdev); fflush(stream); } closedir(dir); @@ -1031,6 +1031,8 @@ static int proc_stat_read(char *buf, size_t size, off_t offset, size_t linelen = 0, total_len = 0; int curcpu = -1; /* cpu numbering starts at 0 */ int physcpu = 0; + int max_cpus = 0; + bool use_view; uint64_t user = 0, nice = 0, system = 0, idle = 0, iowait = 0, irq = 0, softirq = 0, steal = 0, guest = 0, guest_nice = 0; uint64_t user_sum = 0, nice_sum = 0, system_sum = 0, idle_sum = 0, @@ -1079,6 +1081,13 @@ static int proc_stat_read(char *buf, size_t size, off_t offset, if (!cpuset) return 0; + if (cgroup_ops->can_use_cpuview(cgroup_ops) && opts && opts->use_cfs) + use_view = true; + else + use_view = false; + if (use_view) + max_cpus = max_cpu_count(cg); + f = fopen_cached("/proc/stat", "re", &fopen_cache); if (!f) return 0; @@ -1127,6 +1136,9 @@ static int proc_stat_read(char *buf, size_t size, off_t offset, continue; } + if (use_view && max_cpus > 0 && (curcpu + 1) == max_cpus) + continue; + if (sscanf(cpu_char, "%d", &physcpu) != 1) continue; -- 2.27.0