From: wangdi Date: Fri, 27 Jun 2008 18:15:16 +0000 (+0000) Subject: Branch: b1_8 X-Git-Tag: v1_8_0_110~436 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=26afc0276dd556e1e2728d5e7b97e100ebf956eb;p=fs%2Flustre-release.git Branch: b1_8 miss stride_offset in stride read-ahead. b=16172 i=Oleg,Johann --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 19d35b3..5a6189e 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -175,6 +175,15 @@ Description: ldiskfs error: XXX blocks in bitmap, YYY in gd Details : If blocks per group is less than blocksize*8, set rest of the bitmap to 1. +Severity : major +Frequency : Application do stride read on lustre +Bugzilla : 16172 +Description: The read performance will drop a lot if the application does + stride read. +Details : Because the stride_start_offset are missing in stride read-ahead, + it will cause clients read a lot of unused pages in read-ahead, + then the read-performance drops. + ------------------------------------------------------------------------------- diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index b29cbf8..2e6a71f 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -1381,13 +1381,14 @@ static int ll_readahead(struct ll_readahead_state *ras, ras->ras_next_readahead = max(end, end + 1); RAS_CDEBUG(ras); } - ria.ria_start = start; - ria.ria_end = end; - /* If stride I/O mode is detected, get stride window*/ - if (stride_io_mode(ras)) { - ria.ria_length = ras->ras_stride_length; - ria.ria_pages = ras->ras_stride_pages; - } + ria.ria_start = start; + ria.ria_end = end; + /* If stride I/O mode is detected, get stride window*/ + if (stride_io_mode(ras)) { + ria.ria_stoff = ras->ras_stride_offset; + ria.ria_length = ras->ras_stride_length; + ria.ria_pages = ras->ras_stride_pages; + } spin_unlock(&ras->ras_lock); if (end == 0) {