Messages in this thread Patch in this message | | | From | Andrea Righi <> | Subject | [PATCH -mm 6/6] export per-task i/o throttling statistics to userspace | Date | Tue, 7 Oct 2008 12:03:38 +0200 |
| |
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@gmail.com> --- 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 63617ca..e8c4d5c 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> @@ -2459,6 +2460,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 */ + /* * Thread groups */ @@ -2534,6 +2546,9 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_TASK_IO_ACCOUNTING INF("io", S_IRUGO, tgid_io_accounting), #endif +#ifdef CONFIG_CGROUP_IO_THROTTLE + INF("io-throttle-stat", S_IRUGO, iothrottle_stat), +#endif }; static int proc_tgid_base_readdir(struct file * filp, @@ -2865,6 +2880,9 @@ static const struct pid_entry tid_base_stuff[] = { #ifdef CONFIG_TASK_IO_ACCOUNTING INF("io", S_IRUGO, tid_io_accounting), #endif +#ifdef CONFIG_CGROUP_IO_THROTTLE + INF("io-throttle-stat", S_IRUGO, iothrottle_stat), +#endif }; static int proc_tid_base_readdir(struct file * filp, -- 1.5.4.3
| |