2021-11-27 15:55:20 +08:00
|
|
|
From b0097ee3a4b0ac445271badac153293053bd03e1 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: yangjiaqi <yangjiaqi16@huawei.com>
|
|
|
|
|
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(-)
|
|
|
|
|
|
2020-08-28 15:17:28 +08:00
|
|
|
diff --git a/src/proc_fuse.c b/src/proc_fuse.c
|
2021-11-27 15:55:20 +08:00
|
|
|
index 48c4e68..c6c32c7 100644
|
2020-08-28 15:17:28 +08:00
|
|
|
--- a/src/proc_fuse.c
|
|
|
|
|
+++ b/src/proc_fuse.c
|
2021-11-27 15:55:20 +08:00
|
|
|
@@ -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,
|
2020-08-28 15:17:28 +08:00
|
|
|
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,
|
2021-11-27 15:55:20 +08:00
|
|
|
@@ -1079,6 +1081,13 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
|
2020-08-28 15:17:28 +08:00
|
|
|
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;
|
2021-11-27 15:55:20 +08:00
|
|
|
@@ -1127,6 +1136,9 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
|
2020-08-28 15:17:28 +08:00
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (use_view && max_cpus > 0 && (curcpu + 1) == max_cpus)
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
if (sscanf(cpu_char, "%d", &physcpu) != 1)
|
|
|
|
|
continue;
|
|
|
|
|
|
2021-11-27 15:55:20 +08:00
|
|
|
--
|
|
|
|
|
2.27.0
|
|
|
|
|
|