lxcfs/0009-limit-stat-by-quota-period-setting.patch
wangkang101 c4b0d62eb5 update to 4.0.5
Signed-off-by: wangkang101 <873229877@qq.com>
2020-08-29 17:37:34 +08:00

38 lines
1.1 KiB
Diff

diff --git a/src/proc_fuse.c b/src/proc_fuse.c
index 3ceba73..5162a3b 100644
--- a/src/proc_fuse.c
+++ b/src/proc_fuse.c
@@ -910,6 +910,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,
@@ -958,6 +960,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;
@@ -1006,6 +1015,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;