Thread (4 messages) 4 messages, 2 authors, 2021-01-14

Re: [PATCH] bcache: consider the fragmentation when update the writeback rate

From: Coly Li <hidden>
Date: 2021-01-14 10:06:35
Also in: lkml

On 1/14/21 12:45 PM, Dongdong Tao wrote:
Hi Coly,

I've got the testing data for multiple threads with larger IO depth.
Hi Dongdong,

Thanks for the testing number.
*Here is the testing steps:
*1. make-bcache -B <> -C <> --writeback

2. Open two tabs, start different fio task in them at the same time.
Tab1 run below fio command:
sudo fio --name=random-writers --filename=/dev/bcache0 --ioengine=libaio
--iodepth=32 --rw=randrw --blocksize=64k,8k  --direct=1 --runtime=24000

Tab2 run below fio command:
sudo fio --name=random-writers2 --filename=/dev/bcache0
--ioengine=libaio --iodepth=8 --rw=randwrite --bs=4k --rate_iops=150
--direct=1 --write_lat_log=rw --log_avg_msec=20

Why you limit the iodep to 8 and iops to 150 on cache device?
For cache device the limitation is small. Iosp 150 with 4KB block size,
it means every hour writing (150*4*60*60=2160000KB=) 2GB data. For 35
hours it is only 70GB.


What if the iodeps is 128 or 64, and no iops rate limitation ?

Note
- Tab1 fio will run for 24000 seconds, which is the one to cause the
fragmentation and made the cache_available_percent drops to under 40.
- Tab2 fio is the one that I'm capturing the latency and I have let it
run for about 35 hours, which is long enough to allow the
cache_available_percent drops under 30.
- This testing method utilized fio benchmark with larger read block
size/small write block size to cause the high fragmentation, However in
a real production env, there could be
   various reasons or a combination of various reasons to cause the high
fragmentation,  but I believe it should be ok to use any method to cause
the fragmentation to verify if
   bcache with this patch is responding better than the master in this
situation. 

*Below is the testing result:*

The total run time is about 35 hours, the latency points in the charts
for each run are 1.5 million

Master:
fio-lat-mater.png

Master + patch:
fio-lat-patch.png
Combine them together:
fio-lat-mix.png

Now we can see the master is even worse when we increase the iodepth,
which makes sense since the backing HDD is being stressed more hardly.

*Below are the cache stats changing during the run:*
Master:
bcache-stats-master.png

Master + the patch:
bcache-stats-patch.png

That's all the testing done with 400GB NVME with 512B block size.

Coly, do you want me to continue the same testing on 1TB nvme with
different block size ?
or is it ok to skip the 1TB testing and continue the test with 400GB
NVME but with different block size? 
feel free to let me know any other test scenarios that we should cover
here. 
Yes please, more testing is desired for performance improvement. So far
I don't see performance number for real high work load yet.

Thanks.

Coly Li
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help