wbt: add general throttling mechanism
authorJens Axboe <axboe@fb.com>
Wed, 7 Sep 2016 14:38:44 +0000 (08:38 -0600)
committerJens Axboe <axboe@fb.com>
Wed, 7 Sep 2016 14:39:49 +0000 (08:39 -0600)
commit496d261677f9adf95a80c5bd871b19c7f011e766
treeb98f905f39a3ff4b80c9a5af0c855dd0df2dba5e
parenta13cc5885ddd5582129869c1837821d6af6d48bb
wbt: add general throttling mechanism

We can hook this up to the block layer, to help throttle buffered
writes. Or NFS can tap into it, to accomplish the same.

wbt registers a few trace points that can be used to track what is
happening in the system:

wbt_lat: 259:0: latency 2446318
wbt_stat: 259:0: rmean=2446318, rmin=2446318, rmax=2446318, rsamples=1,
               wmean=518866, wmin=15522, wmax=5330353, wsamples=57
wbt_step: 259:0: step down: step=1, window=72727272, background=8, normal=16, max=32

This shows a sync issue event (wbt_lat) that exceeded it's time. wbt_stat
dumps the current read/write stats for that window, and wbt_step shows a
step down event where we now scale back writes. Each trace includes the
device, 259:0 in this case.

Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/wbt.h [new file with mode: 0644]
include/trace/events/wbt.h [new file with mode: 0644]
lib/Kconfig
lib/Makefile
lib/wbt.c [new file with mode: 0644]