Export the throttling statistics collected for each task through /proc/PID/io-throttle-stat. Example: $ cat /proc/$$/io-throttle-stat 0 0 0 0 ^ ^ ^ ^ \ \ \ \_____global iops sleep (in clock ticks) \ \ \______global iops counter \ \_______global bandwidth sleep (in clock ticks) \________global bandwidth counter Signed-off-by: Andrea Righi <righi.andrea@xxxxxxxxx> --- fs/proc/base.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index aa763ab..94061bf 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -54,6 +54,7 @@ #include <linux/proc_fs.h> #include <linux/stat.h> #include <linux/task_io_accounting_ops.h> +#include <linux/blk-io-throttle.h> #include <linux/init.h> #include <linux/capability.h> #include <linux/file.h> @@ -2453,6 +2454,17 @@ static int proc_tgid_io_accounting(struct task_struct *task, char *buffer) } #endif /* CONFIG_TASK_IO_ACCOUNTING */ +#ifdef CONFIG_CGROUP_IO_THROTTLE +static int proc_iothrottle_stat(struct task_struct *task, char *buffer) +{ + return sprintf(buffer, "%llu %llu %llu %llu\n", + get_io_throttle_cnt(task, IOTHROTTLE_BANDWIDTH), + get_io_throttle_sleep(task, IOTHROTTLE_BANDWIDTH), + get_io_throttle_cnt(task, IOTHROTTLE_IOPS), + get_io_throttle_sleep(task, IOTHROTTLE_IOPS)); +} +#endif /* CONFIG_CGROUP_IO_THROTTLE */ + static int proc_pid_personality(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task) { @@ -2539,6 +2551,9 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_TASK_IO_ACCOUNTING INF("io", S_IRUGO, proc_tgid_io_accounting), #endif +#ifdef CONFIG_CGROUP_IO_THROTTLE + INF("io-throttle-stat", S_IRUGO, proc_iothrottle_stat), +#endif }; static int proc_tgid_base_readdir(struct file * filp, @@ -2874,6 +2889,9 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_TASK_IO_ACCOUNTING INF("io", S_IRUGO, proc_tid_io_accounting), #endif +#ifdef CONFIG_CGROUP_IO_THROTTLE + INF("io-throttle-stat", S_IRUGO, proc_iothrottle_stat), +#endif }; static int proc_tid_base_readdir(struct file * filp, -- 1.5.6.3 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers