All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>
To: <ceph-devel@vger.kernel.org>
Cc: <andreas.gerstmayr@gmail.com>,
	Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>,
	"Yan, Zheng" <zyan@redhat.com>, Sage Weil <sage@redhat.com>,
	Ilya Dryomov <idryomov@gmail.com>, <linux-kernel@vger.kernel.org>
Subject: [PATCH v3] ceph: set io_pages bdi hint
Date: Tue, 10 Jan 2017 13:56:42 +0100	[thread overview]
Message-ID: <1484053078-4490-1-git-send-email-andreas.gerstmayr@catalysts.cc> (raw)
In-Reply-To: <7C9D4085-7D14-4BFB-B675-8FE3C661B1C3@redhat.com>

This patch sets the io_pages bdi hint based on the rsize mount option.
Without this patch large buffered reads (request size > max readahead)
are processed sequentially in chunks of the readahead size (i.e. read
requests are sent out up to the readahead size, then the
do_generic_file_read() function waits until the first page is received).

With this patch read requests are sent out at once up to the size
specified in the rsize mount option (default: 64 MB).

Signed-off-by: Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>
---

Thanks for your input.

Changes in v3:
  - set default rsize to 64 MB
  - sanity check of the rsize mount option


(Note: This patch depends on kernel version 4.10-rc1)


 fs/ceph/super.c | 8 ++++++++
 fs/ceph/super.h | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index 6bd20d7..a0a0b6d 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -952,6 +952,14 @@ static int ceph_register_bdi(struct super_block *sb,
 		fsc->backing_dev_info.ra_pages =
 			VM_MAX_READAHEAD * 1024 / PAGE_SIZE;
 
+	if (fsc->mount_options->rsize > fsc->mount_options->rasize &&
+	    fsc->mount_options->rsize >= PAGE_SIZE)
+		fsc->backing_dev_info.io_pages =
+			(fsc->mount_options->rsize + PAGE_SIZE - 1)
+			>> PAGE_SHIFT;
+	else if (fsc->mount_options->rsize == 0)
+		fsc->backing_dev_info.io_pages = ULONG_MAX;
+
 	err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld",
 			   atomic_long_inc_return(&bdi_seq));
 	if (!err)
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 3373b61..88b2e6e 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -45,8 +45,8 @@
 #define ceph_test_mount_opt(fsc, opt) \
 	(!!((fsc)->mount_options->flags & CEPH_MOUNT_OPT_##opt))
 
-#define CEPH_RSIZE_DEFAULT             0           /* max read size */
-#define CEPH_RASIZE_DEFAULT            (8192*1024) /* readahead */
+#define CEPH_RSIZE_DEFAULT              (64*1024*1024) /* max read size */
+#define CEPH_RASIZE_DEFAULT             (8192*1024)    /* max readahead */
 #define CEPH_MAX_READDIR_DEFAULT        1024
 #define CEPH_MAX_READDIR_BYTES_DEFAULT  (512*1024)
 #define CEPH_SNAPDIRNAME_DEFAULT        ".snap"
-- 
1.8.3.1

WARNING: multiple messages have this Message-ID (diff)
From: Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>
To: ceph-devel@vger.kernel.org
Cc: andreas.gerstmayr@gmail.com,
	Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>,
	"Yan, Zheng" <zyan@redhat.com>, Sage Weil <sage@redhat.com>,
	Ilya Dryomov <idryomov@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH v3] ceph: set io_pages bdi hint
Date: Tue, 10 Jan 2017 13:56:42 +0100	[thread overview]
Message-ID: <1484053078-4490-1-git-send-email-andreas.gerstmayr@catalysts.cc> (raw)
In-Reply-To: <7C9D4085-7D14-4BFB-B675-8FE3C661B1C3@redhat.com>

This patch sets the io_pages bdi hint based on the rsize mount option.
Without this patch large buffered reads (request size > max readahead)
are processed sequentially in chunks of the readahead size (i.e. read
requests are sent out up to the readahead size, then the
do_generic_file_read() function waits until the first page is received).

With this patch read requests are sent out at once up to the size
specified in the rsize mount option (default: 64 MB).

Signed-off-by: Andreas Gerstmayr <andreas.gerstmayr@catalysts.cc>
---

Thanks for your input.

Changes in v3:
  - set default rsize to 64 MB
  - sanity check of the rsize mount option


(Note: This patch depends on kernel version 4.10-rc1)


 fs/ceph/super.c | 8 ++++++++
 fs/ceph/super.h | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index 6bd20d7..a0a0b6d 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -952,6 +952,14 @@ static int ceph_register_bdi(struct super_block *sb,
 		fsc->backing_dev_info.ra_pages =
 			VM_MAX_READAHEAD * 1024 / PAGE_SIZE;
 
+	if (fsc->mount_options->rsize > fsc->mount_options->rasize &&
+	    fsc->mount_options->rsize >= PAGE_SIZE)
+		fsc->backing_dev_info.io_pages =
+			(fsc->mount_options->rsize + PAGE_SIZE - 1)
+			>> PAGE_SHIFT;
+	else if (fsc->mount_options->rsize == 0)
+		fsc->backing_dev_info.io_pages = ULONG_MAX;
+
 	err = bdi_register(&fsc->backing_dev_info, NULL, "ceph-%ld",
 			   atomic_long_inc_return(&bdi_seq));
 	if (!err)
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 3373b61..88b2e6e 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -45,8 +45,8 @@
 #define ceph_test_mount_opt(fsc, opt) \
 	(!!((fsc)->mount_options->flags & CEPH_MOUNT_OPT_##opt))
 
-#define CEPH_RSIZE_DEFAULT             0           /* max read size */
-#define CEPH_RASIZE_DEFAULT            (8192*1024) /* readahead */
+#define CEPH_RSIZE_DEFAULT              (64*1024*1024) /* max read size */
+#define CEPH_RASIZE_DEFAULT             (8192*1024)    /* max readahead */
 #define CEPH_MAX_READDIR_DEFAULT        1024
 #define CEPH_MAX_READDIR_BYTES_DEFAULT  (512*1024)
 #define CEPH_SNAPDIRNAME_DEFAULT        ".snap"
-- 
1.8.3.1


  reply	other threads:[~2017-01-10 13:14 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-30  5:37 [PATCH] ceph: set io_pages bdi hint Andreas Gerstmayr
2017-01-04  3:25 ` Yan, Zheng
2017-01-05 13:23   ` [PATCH v2] " Andreas Gerstmayr
2017-01-07 16:31     ` Ilya Dryomov
2017-01-09  1:54       ` Yan, Zheng
2017-01-09  9:29         ` Andreas Gerstmayr
2017-01-10  6:42           ` Yan, Zheng
2017-01-10 12:56             ` Andreas Gerstmayr [this message]
2017-01-10 12:56               ` [PATCH v3] " Andreas Gerstmayr
2017-01-10 13:17             ` [PATCH v4] " Andreas Gerstmayr
2017-01-10 13:17               ` Andreas Gerstmayr
2017-01-10 16:26               ` Jeff Layton
2017-01-11  2:43               ` Yan, Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1484053078-4490-1-git-send-email-andreas.gerstmayr@catalysts.cc \
    --to=andreas.gerstmayr@catalysts.cc \
    --cc=andreas.gerstmayr@gmail.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=idryomov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sage@redhat.com \
    --cc=zyan@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.