Whamcloud - gitweb
LU-9618 clio: Use readahead for partial page write
When writing to a region of a file less than file size
(either an existing file or a shared file with multiple
writers), writes of less than one page in size must first
read in that page.
This results in extremely poor performance. For random I/O,
there's no easy improvements available, but the sequential
case can benefit enormously by using readahead to bring in
those pages.
This patch connects ll_prepare_partial_page to the readahead
infrastructure.
This does not affect random I/O or large unaligned writes,
where readahead does not detect I/O.
Benchmarks are from a small VM system, files are NOT in
cache when rewriting.
Write numbers are in MB/s.
File per process:
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 1 (1 per node)
repetitions = 1
blocksize = 1000 MiB
aggregate filesize = 1000 MiB
New file (best case):
xfsize ppr write
1KiB n/a 59.44
5KiB n/a 164.5
Rewrite of existing file:
xfsize ppr re-write
1KiB off 4.65
1KiB on 48.40
5KiB off 12.95
5KiB on 143.3
Shared file writing:
access = single-shared-file
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 4 (4 per node)
repetitions = 1
blocksize = 1000 MiB
aggregate filesize = 4000 MiB
xfsize ppr write
1KiB off 11.26
1KiB on 58.72
5KiB off 18.7
5KiB on 127.3
Cray-bug-id: LUS-188
Signed-off-by: Patrick Farrell <paf@cray.com>
Signed-off-by: Jinshan Xiong <jinshan.xiong@gmail.com>
Change-Id: I822395995ee23b1c9ca289ae982e5294b69a0cff
Reviewed-on: https://review.whamcloud.com/27544
Tested-by: Jenkins
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>