summaryrefslogtreecommitdiffstats
path: root/block/blk.h
diff options
context:
space:
mode:
authorShaohua Li <shli@fb.com>2017-03-27 10:51:37 -0700
committerJens Axboe <axboe@fb.com>2017-03-28 08:02:20 -0600
commit297e3d854784821d3b8ff3ae117f20d71f125504 (patch)
tree1909a3ce719f5a434d4e4e7584424b3559738be0 /block/blk.h
parent06cceedcca67a93ac7f7aa93bbd9980c7496d14e (diff)
downloadlinux-stable-297e3d854784821d3b8ff3ae117f20d71f125504.tar.gz
linux-stable-297e3d854784821d3b8ff3ae117f20d71f125504.tar.bz2
linux-stable-297e3d854784821d3b8ff3ae117f20d71f125504.zip
blk-throttle: make throtl_slice tunable
throtl_slice is important for blk-throttling. It's called slice internally but it really is a time window blk-throttling samples data. blk-throttling will make decision based on the samplings. An example is bandwidth measurement. A cgroup's bandwidth is measured in the time interval of throtl_slice. A small throtl_slice meanse cgroups have smoother throughput but burn more CPUs. It has 100ms default value, which is not appropriate for all disks. A fast SSD can dispatch a lot of IOs in 100ms. This patch makes it tunable. Since throtl_slice isn't a time slice, the sysfs name 'throttle_sample_time' reflects its character better. Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk.h')
-rw-r--r--block/blk.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/block/blk.h b/block/blk.h
index d1ea4bd9b9a3..bcd3de6c1081 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -324,5 +324,10 @@ static inline void blk_throtl_drain(struct request_queue *q) { }
static inline int blk_throtl_init(struct request_queue *q) { return 0; }
static inline void blk_throtl_exit(struct request_queue *q) { }
#endif /* CONFIG_BLK_DEV_THROTTLING */
+#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
+extern ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page);
+extern ssize_t blk_throtl_sample_time_store(struct request_queue *q,
+ const char *page, size_t count);
+#endif
#endif /* BLK_INTERNAL_H */