From f8e49e321ed81d77b204af40165f9ae2d07c5986 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Fri, 3 Nov 2023 17:49:29 -0600 Subject: [PATCH] LU-10465 osd-ldiskfs: 8MiB IOs should bypass cache Changes the writethrough_max_io_mb and readcache_max_io_mb params to check for IO size >= max_io_mb instead of > max_io_mb when deciding to bypass cache. Read/write IOs that are 8MiB in size should bypass the pagecache on the OSTs, rather than requiring IOs that are slightly larger than this. 8MiB is enough to submit 1MiB to each HDD spindle in an 8+2 RAID6, and caching these writes on the OSS is not helping. Test-Parameters: trivial Fixes: 3043c6f189 ("LU-12071 osd-ldiskfs: bypass pagecache if requested") Signed-off-by: Andreas Dilger Change-Id: Iae435f5b99e2e8bc6a9458fedad65a81c2853350 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52989 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Alex Zhuravlev Reviewed-by: Li Dongyang Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_internal.h | 4 ++-- lustre/osd-ldiskfs/osd_io.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_internal.h b/lustre/osd-ldiskfs/osd_internal.h index 3051ab1..b3c3488 100644 --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -311,11 +311,11 @@ struct osd_device { * served bypassing pagecache unless already cached */ unsigned long long od_readcache_max_filesize; - /* reads > od_readcache_max_iosize will be + /* reads >= od_readcache_max_iosize will be * served bypassing pagecache unless already cached */ unsigned long od_readcache_max_iosize; - /* writes > od_writethough_max_iosize will be + /* writes >= od_writethough_max_iosize will be * served bypassing pagecache unless already cached */ unsigned long od_writethrough_max_iosize; diff --git a/lustre/osd-ldiskfs/osd_io.c b/lustre/osd-ldiskfs/osd_io.c index e8a3e0b..b90ca67 100644 --- a/lustre/osd-ldiskfs/osd_io.c +++ b/lustre/osd-ldiskfs/osd_io.c @@ -760,7 +760,7 @@ static int osd_bufs_get(const struct lu_env *env, struct dt_object *dt, cache = false; break; } - if (iosize > osd->od_writethrough_max_iosize) { + if (iosize >= osd->od_writethrough_max_iosize) { cache = false; break; } @@ -769,7 +769,7 @@ static int osd_bufs_get(const struct lu_env *env, struct dt_object *dt, cache = false; break; } - if (iosize > osd->od_readcache_max_iosize) { + if (iosize >= osd->od_readcache_max_iosize) { cache = false; break; } -- 1.8.3.1