miss stride_offset in stride read-ahead.
b=16172
i=Oleg,Johann
Details : If blocks per group is less than blocksize*8, set rest of the
bitmap to 1.
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.
+
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
ras->ras_next_readahead = max(end, end + 1);
RAS_CDEBUG(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) {
spin_unlock(&ras->ras_lock);
if (end == 0) {