LU-13799 lov: Cache stripe offset calculation
Calculating the page offset relative to the stripe (etc)
in a file is surprisingly expensive. Because i/o has
already been split up to stripes by the cl_io code,
calculating the stripe each time is unnecessary.
We cache most of the values requiring calculation.
This improves AIO/DIO page submission significantly,
improving performance by a bit over 10%.
Also remove lpg_generation, which isn't doing anything
useful. This suggests the possibility of removing
lov_page, but that's for another patch.
This patch reduces i/o time in ms/GiB by:
Write: 17 ms/GiB
Read: 22 ms/GiB
Totals:
Write: 119 ms/GiB
Read: 121 ms/GiB
mpirun -np 1 $IOR -w -r -t 64M -b 64G -o ./iorfile --posix.odirect
With previous patches in series:
write 7531 MiB/s
read 7179 MiB/s
Plus this patch:
write 8637 MiB/s
read 8488 MiB/s
Lustre-change: https://review.whamcloud.com/39445
Lustre-commit:
14db1faa0fbe813fed616435303753d390f45827
Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: I046af5eda9560da0fb8daa8ca025484851538a50
Reviewed-on: https://review.whamcloud.com/44681
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>