Whamcloud - gitweb
LU-9920 vvp: dirty pages with pagevec 11/28711/18
authorPatrick Farrell <pfarrell@whamcloud.com>
Fri, 13 Sep 2019 19:27:40 +0000 (15:27 -0400)
committerOleg Drokin <green@whamcloud.com>
Mon, 30 Sep 2019 23:12:12 +0000 (23:12 +0000)
commita7299cb012f8c5574a0cc07ff0e32218fb49d733
tree72bd217c34f3cfdbb2da9ba12024457a2307b060
parent67dd631e6075b37eac0472d7b83a1a55f2be915f
LU-9920 vvp: dirty pages with pagevec

When doing i/o from multiple writers to a single file, the
per-file page cache lock (the mapping lock) becomes a
bottleneck.

Most current uses are single page at a time.  This converts
one prominent use, marking page as dirty, to use a pagevec.

When many threads are writing to one file, this improves
write performance by around 25%.

This requires implementing our own version of the
set_page_dirty-->__set_page_dirty_nobuffers functions.

This was modeled on upstream tip of tree:
v5.2-rc4-224-ge01e060fe0 (7/13/2019)

The relevant code is unchanged since Linux 4.17, and has
changed only minimally since before Linux 2.6.

Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: Ifff9cd01f8b4e960bb4ebea560b9a9a01376698d
Reviewed-on: https://review.whamcloud.com/28711
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Shaun Tancheff <stancheff@cray.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
12 files changed:
lustre/autoconf/lustre-core.m4
lustre/include/cl_object.h
lustre/include/lustre_compat.h
lustre/include/lustre_osc.h
lustre/llite/llite_lib.c
lustre/llite/vvp_io.c
lustre/mdc/mdc_request.c
lustre/obdclass/cl_io.c
lustre/obdecho/echo_client.c
lustre/osc/osc_cache.c
lustre/osc/osc_io.c
lustre/osc/osc_page.c