On 2018/7/23 9:14 PM, Kai Krakow wrote: > 2018-07-22 18:13 GMT+02:00 Coly Li <colyli@xxxxxxx>: >> Commit b1092c9af9ed ("bcache: allow quick writeback when backing idle") >> allows the writeback rate to be faster if there is no I/O request on a >> bcache device. It works well if there is only one bcache device attached >> to the cache set. If there are many bcache devices attached to a cache >> set, it may introduce performance regression because multiple faster >> writeback threads of the idle bcache devices will compete the btree level >> locks with the bcache device who have I/O requests coming. >> >> This patch fixes the above issue by only permitting fast writebac when >> all bcache devices attached on the cache set are idle. And if one of the >> bcache devices has new I/O request coming, minimized all writeback >> throughput immediately and let PI controller __update_writeback_rate() >> to decide the upcoming writeback rate for each bcache device. >> >> Also when all bcache devices are idle, limited wrieback rate to a small >> number is wast of thoughput, especially when backing devices are slower >> non-rotation devices (e.g. SATA SSD). This patch sets a max writeback >> rate for each backing device if the whole cache set is idle. A faster >> writeback rate in idle time means new I/Os may have more available space >> for dirty data, and people may observe a better write performance then. >> >> Please note bcache may change its cache mode in run time, and this patch >> still works if the cache mode is switched from writeback mode and there >> is still dirty data on cache. > > Running with this patch on 4.17, I see reduced IO lags in desktop > usage during heavy writes. The reduction is minor but noticeable. The > small short IO lags seem to be fixed with this but I still see the > stalls with long lags in desktop usage. I don't address those to > bcache, tho. This seems more like an issue resulting from using bees > on btrfs. > > >> Fixes: Commit b1092c9af9ed ("bcache: allow quick writeback when backing idle") >> Cc: stable@xxxxxxxxxxxxxxx #4.16+ >> Signed-off-by: Coly Li <colyli@xxxxxxx> >> Cc: Michael Lyle <mlyle@xxxxxxxx> > Hi Kai, > Tested-by: Kai Krakow <kai@xxxxxxxxxxx> > Thank you for the testing and information sharing, very helpful :-) Coly Li > >> --- >> drivers/md/bcache/bcache.h | 9 +--- >> drivers/md/bcache/request.c | 42 ++++++++++++++- >> drivers/md/bcache/sysfs.c | 14 +++-- >> drivers/md/bcache/util.c | 2 +- >> drivers/md/bcache/util.h | 2 +- >> drivers/md/bcache/writeback.c | 98 +++++++++++++++++++++++++---------- >> 6 files changed, 126 insertions(+), 41 deletions(-) [snip]