From 587e5aa8342980f761930235714add1cca80686b Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Fri, 28 May 2021 21:32:43 -0400 Subject: [PATCH] LU-13799 llite: Remove transient page counting Transient page counting is not used for anything, as already noted in the commit message, but costs something like 4% of the time in DIO page submission. Remove it. mpirun -np 1 $IOR -w -r -t 64M -b 64G -o ./iorfile --posix.odirect This patch reduces i/o time in ms/GiB by: Write: 6 ms/GiB Read: 11 ms/GiB Totals: Write: 174 ms/GiB Read: 167 ms/GiB With previous patches in series: write 5703 MiB/s read 5756 MiB/s Plus this patch: write 5900 MiB/s read 6136 MiB/s Signed-off-by: Patrick Farrell Change-Id: I825de4f1b5d1dd1476a4a711bfa51e7d24b5027a Reviewed-on: https://review.whamcloud.com/39441 Reviewed-by: Wang Shilong Reviewed-by: Alexey Lyashkov Reviewed-by: Andreas Dilger Tested-by: jenkins Tested-by: Maloo --- lustre/llite/vvp_internal.h | 6 ------ lustre/llite/vvp_object.c | 4 +--- lustre/llite/vvp_page.c | 7 +------ 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/lustre/llite/vvp_internal.h b/lustre/llite/vvp_internal.h index 49792a0..fa4f512 100644 --- a/lustre/llite/vvp_internal.h +++ b/lustre/llite/vvp_internal.h @@ -188,12 +188,6 @@ struct vvp_object { struct inode *vob_inode; /** - * Number of transient pages. This is no longer protected by i_sem, - * and needs to be atomic. This is not actually used for anything, - * and can probably be removed. - */ - atomic_t vob_transient_pages; - /** * Number of outstanding mmaps on this file. * * \see ll_vm_open(), ll_vm_close(). diff --git a/lustre/llite/vvp_object.c b/lustre/llite/vvp_object.c index 35c31e2..8fac513 100644 --- a/lustre/llite/vvp_object.c +++ b/lustre/llite/vvp_object.c @@ -66,8 +66,7 @@ static int vvp_object_print(const struct lu_env *env, void *cookie, struct inode *inode = obj->vob_inode; struct ll_inode_info *lli; - (*p)(env, cookie, "(%d %d) inode: %p ", - atomic_read(&obj->vob_transient_pages), + (*p)(env, cookie, "(%d) inode: %p ", atomic_read(&obj->vob_mmap_cnt), inode); if (inode) { @@ -234,7 +233,6 @@ static int vvp_object_init0(const struct lu_env *env, const struct cl_object_conf *conf) { vob->vob_inode = conf->coc_inode; - atomic_set(&vob->vob_transient_pages, 0); cl_object_page_init(&vob->vob_cl, sizeof(struct vvp_page)); return 0; } diff --git a/lustre/llite/vvp_page.c b/lustre/llite/vvp_page.c index d5158e7..959f668 100644 --- a/lustre/llite/vvp_page.c +++ b/lustre/llite/vvp_page.c @@ -456,10 +456,8 @@ static void vvp_transient_page_fini(const struct lu_env *env, struct pagevec *pvec) { struct vvp_page *vpg = cl2vvp_page(slice); - struct vvp_object *clobj = cl2vvp(slice->cpl_obj); vvp_page_fini_common(vpg, pvec); - atomic_dec(&clobj->vob_transient_pages); } static const struct cl_page_operations vvp_transient_page_ops = { @@ -488,11 +486,8 @@ int vvp_page_init(const struct lu_env *env, struct cl_object *obj, cl_page_slice_add(page, &vpg->vpg_cl, obj, &vvp_page_ops); } else { - struct vvp_object *clobj = cl2vvp(obj); - cl_page_slice_add(page, &vpg->vpg_cl, obj, - &vvp_transient_page_ops); - atomic_inc(&clobj->vob_transient_pages); + &vvp_transient_page_ops); } return 0; } -- 1.8.3.1