LU-14917 llite: Switch mmap readahead logic
The mmap readahead logic has shown to be badly suited for
certain workloads (kdb). Experimentation showed that for
these workloads, the standard readahead algorithm works
better.
This patch allows switching the readahead algorithm for
mmap to the 'standard' readahead algorithm.
The added tunable is:
mmap_read_ahead_logic in llite
(lctl get_param llite.*.mmap_read_ahead_logic)
It defaults to '1', which is the special mmap readahead
logic.
Setting it to 0 switches mmap readahead to use the standard
readahead logic.
This patch also fixes the existing mmap readahead test,
which was not running.
Note the results for the existing test are better with the
standard readahead logic, ie, with mmap readahead logic
disabled. This suggests we should default to non-mmap
readahead logic.
However, the mmap readahead logic was carefully tuned for
certain workloads, and this would be a large change. So,
this question is deferred until we can do a larger look at
readahead behavior.
NOTE:
Fixing the mmap readahead tests revealed that mmap
readahead is not working well currently. Fixing that is
complicated and would delay landing this patch (needed for
a customer), so this patch disables the failing portion of
the tests.
Lustre-change: https://review.whamcloud.com/44526
Lustre-commit: TBD (
7f6e16938f8d4e5dadd0594b7e1b8f4c70d79c68)
Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: I36c5a3ccfc34379d75666bb41605344a4ae70881
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/44943
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>