Whamcloud - gitweb
LU-12142 clio: fix hang on urgent cached pages
Few problems addressed by this patch:
1) We try to reserve cl_pages in batch, but we don't do
that for append IO, there is no reason to skip that.
2) IO might be not page aligned, calculate reserved pages
correctly for this case.
3) If we issue one large IO block size which is larger
than max_cached_mb, IO will never be finished, because
we don't have enough cl pages to finish it, split IO
in this case.
4) Readahead should fail if we are short of LRU page
slots to avoid deadlock.
After above adjustment, LRU slots are guranteed for normal
buffer write before IO starts, if block size is too large
for max LRU slots, IO will be split.
For extra readahead, don't try hard and quit if we
are short of LRU pages, since readahead could tolerate
errors, applications won't be aware of it.
besides newly added tests, following command with 64M
max_cached_mb setting and don't see client hang any more.
/usr/lib64/openmpi/bin/mpirun --allow-run-as-root -np 12
-wd /mnt/lustre ior -g -e -w -r -b 1g -T 10 -F -C -t 64m
Todo:
Performance benchmark for readahead
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I5c85454a40daeefb4fb97609d6aa28df2eafb99c
Reviewed-on: https://review.whamcloud.com/40237
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>