From: Maxim P. <MPa...@pa...> - 2013-08-23 17:10:01
|
Hi Fengguang, >> I'd like to test the patches out and take a look at its runtime >> behaviors. I've managed to setup general dd writeback tests. Do you >> happen to have some scripts that can specifically test out the fuse >> cases? > >I used ordinary dd over fuse mount for testing. But fuse setup was >tricky. I'll send a writeup of my test environment to you tomorrow. The kernel part I used for testing was Linus' 3.11.0-rc6 with patchset "fuse: An attempt to implement a write-back cache policy" v5 applied. I understand that picking up from mailing list archives and applying 16 patches may be cumbersome, so I'll email a tar-archive with them for your convenience. The userspace part is a clone of git://fuse.git.sourceforge.net/gitroot/fuse/fuse with two patches following this email applied. After compilation, 'fusexmp_fh' appears in 'example' subdir. fusexmp_fh is a trivial example fuse filesystem that passes requests backend transparently. E.g. write(2) on fuse mount leads to FUSE_WRITE request which, in turn, is processed as write(2) on host filesystem. I used the following variations of options on mounting fuse: 1. # fusexmp_fh -o writeback_cache /fuse (here some amount of dirty memory on fuse bdi coexists with that on host fs) 2. # FUSE_WB=1 fusexmp_fh -o writeback_cache /fuse (model write bandwidth equal to 1MB/s for each "data server"; here userspace fuse is capable to process many FUSE_WRITE requests simultaneously, so the situation with high degree of parallelism is modelled) 3. # FUSE_WB=100 fusexmp_fh -o writeback_cache /fuse (the same as above, but bandwidth equal to 100MB/s) 4. # FUSE_WB=1 fusexmp_fh -s -o writeback_cache /fuse (bandwidth equal to 1MB/s; userspace fuse processes all requests in serialized manner) 5. # FUSE_WB=100 fusexmp_fh -s -o writeback_cache /fuse (the same as above, but bandwidth equal to 100MB/s) For each variant I ran "dd if=/dev/zero of=/fuse/foo bs=1M count=N" to observe the behaviour of balance_dirty_pages and friends. Also, for each variant I experimented with fuse bdi max_ratio=1% (default) and 100% (set manually by echo 100 > /sys/devices/virtual/bdi/0:M/max_ratio). Thanks, Maxim -- Signature |