From: David Sterba <dsterba@suse.cz>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>,
Matthew Wilcox <willy@infradead.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Suren Baghdasaryan <surenb@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>, Gao Xiang <xiang@kernel.org>,
Chao Yu <chao@kernel.org>,
linux-block@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
linux-mm@kvack.org
Subject: Re: [PATCH 3/5] btrfs: add manual PSI accounting for compressed reads
Date: Mon, 12 Sep 2022 17:28:25 +0200 [thread overview]
Message-ID: <20220912152825.GH32411@suse.cz> (raw)
In-Reply-To: <20220910065058.3303831-4-hch@lst.de>
On Sat, Sep 10, 2022 at 08:50:56AM +0200, Christoph Hellwig wrote:
> btrfs compressed reads try to always read the entire compressed chunk,
> even if only a subset is requested. Currently this is covered by the
> magic PSI accounting underneath submit_bio, but that is about to go
> away. Instead add manual psi_memstall_{enter,leave} annotations.
>
> Note that for readahead this really should be using readahead_expand,
> but the additionals reads are also done for plain ->read_folio where
> readahead_expand can't work, so this overall logic is left as-is for
> now.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
With some small fixups,
Acked-by: David Sterba <dsterba@suse.com>
> fs/btrfs/compression.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index e84d22c5c6a83..f7889a00e0055 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -15,6 +15,7 @@
> #include <linux/string.h>
> #include <linux/backing-dev.h>
> #include <linux/writeback.h>
> +#include <linux/psi.h>
> #include <linux/slab.h>
> #include <linux/sched/mm.h>
> #include <linux/log2.h>
> @@ -519,7 +520,8 @@ static u64 bio_end_offset(struct bio *bio)
> */
> static noinline int add_ra_bio_pages(struct inode *inode,
> u64 compressed_end,
> - struct compressed_bio *cb)
> + struct compressed_bio *cb,
> + unsigned long *pflags)
> {
> struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
> unsigned long end_index;
> @@ -588,6 +590,9 @@ static noinline int add_ra_bio_pages(struct inode *inode,
> continue;
> }
>
> + if (unlikely(PageWorkingset(page)))
Please drop the 'unlikely', in this case it does not seem to make much
sense.
> + psi_memstall_enter(pflags);
> +
> ret = set_page_extent_mapped(page);
> if (ret < 0) {
> unlock_page(page);
> @@ -674,6 +679,8 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> u64 em_len;
> u64 em_start;
> struct extent_map *em;
> + /* initialize to 1 to make skip psi_memstall_leave unless needed */
First letter in comment should be upper case unless it's an identifier.
> + unsigned long pflags = 1;
> blk_status_t ret;
> int ret2;
> int i;
> @@ -729,7 +736,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> goto fail;
> }
>
> - add_ra_bio_pages(inode, em_start + em_len, cb);
> + add_ra_bio_pages(inode, em_start + em_len, cb, &pflags);
>
> /* include any pages we added in add_ra-bio_pages */
> cb->len = bio->bi_iter.bi_size;
> @@ -810,6 +817,9 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> }
> }
>
> + if (!pflags)
> + psi_memstall_leave(&pflags);
> +
> if (refcount_dec_and_test(&cb->pending_ios))
> finish_compressed_bio_read(cb);
> return;
> --
> 2.30.2
>
WARNING: multiple messages have this Message-ID (diff)
From: David Sterba <dsterba@suse.cz>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-mm@kvack.org, linux-erofs@lists.ozlabs.org,
Josef Bacik <josef@toxicpanda.com>,
Matthew Wilcox <willy@infradead.org>,
linux-block@vger.kernel.org, Chris Mason <clm@fb.com>,
Johannes Weiner <hannes@cmpxchg.org>,
David Sterba <dsterba@suse.com>,
linux-fsdevel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Suren Baghdasaryan <surenb@google.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 3/5] btrfs: add manual PSI accounting for compressed reads
Date: Mon, 12 Sep 2022 17:28:25 +0200 [thread overview]
Message-ID: <20220912152825.GH32411@suse.cz> (raw)
In-Reply-To: <20220910065058.3303831-4-hch@lst.de>
On Sat, Sep 10, 2022 at 08:50:56AM +0200, Christoph Hellwig wrote:
> btrfs compressed reads try to always read the entire compressed chunk,
> even if only a subset is requested. Currently this is covered by the
> magic PSI accounting underneath submit_bio, but that is about to go
> away. Instead add manual psi_memstall_{enter,leave} annotations.
>
> Note that for readahead this really should be using readahead_expand,
> but the additionals reads are also done for plain ->read_folio where
> readahead_expand can't work, so this overall logic is left as-is for
> now.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
With some small fixups,
Acked-by: David Sterba <dsterba@suse.com>
> fs/btrfs/compression.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index e84d22c5c6a83..f7889a00e0055 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -15,6 +15,7 @@
> #include <linux/string.h>
> #include <linux/backing-dev.h>
> #include <linux/writeback.h>
> +#include <linux/psi.h>
> #include <linux/slab.h>
> #include <linux/sched/mm.h>
> #include <linux/log2.h>
> @@ -519,7 +520,8 @@ static u64 bio_end_offset(struct bio *bio)
> */
> static noinline int add_ra_bio_pages(struct inode *inode,
> u64 compressed_end,
> - struct compressed_bio *cb)
> + struct compressed_bio *cb,
> + unsigned long *pflags)
> {
> struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
> unsigned long end_index;
> @@ -588,6 +590,9 @@ static noinline int add_ra_bio_pages(struct inode *inode,
> continue;
> }
>
> + if (unlikely(PageWorkingset(page)))
Please drop the 'unlikely', in this case it does not seem to make much
sense.
> + psi_memstall_enter(pflags);
> +
> ret = set_page_extent_mapped(page);
> if (ret < 0) {
> unlock_page(page);
> @@ -674,6 +679,8 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> u64 em_len;
> u64 em_start;
> struct extent_map *em;
> + /* initialize to 1 to make skip psi_memstall_leave unless needed */
First letter in comment should be upper case unless it's an identifier.
> + unsigned long pflags = 1;
> blk_status_t ret;
> int ret2;
> int i;
> @@ -729,7 +736,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> goto fail;
> }
>
> - add_ra_bio_pages(inode, em_start + em_len, cb);
> + add_ra_bio_pages(inode, em_start + em_len, cb, &pflags);
>
> /* include any pages we added in add_ra-bio_pages */
> cb->len = bio->bi_iter.bi_size;
> @@ -810,6 +817,9 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
> }
> }
>
> + if (!pflags)
> + psi_memstall_leave(&pflags);
> +
> if (refcount_dec_and_test(&cb->pending_ios))
> finish_compressed_bio_read(cb);
> return;
> --
> 2.30.2
>
next prev parent reply other threads:[~2022-09-12 15:33 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-10 6:50 improve pagecache PSI annotations Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-10 6:50 ` [PATCH 1/5] mm: add PSI accounting around ->read_folio and ->readahead calls Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-10 11:34 ` Jens Axboe
2022-09-10 11:34 ` Jens Axboe
2022-09-12 8:35 ` Christoph Hellwig
2022-09-12 8:35 ` Christoph Hellwig
2022-09-10 18:26 ` Matthew Wilcox
2022-09-10 18:26 ` Matthew Wilcox
2022-09-12 8:33 ` Christoph Hellwig
2022-09-12 8:33 ` Christoph Hellwig
2022-09-14 11:41 ` Johannes Weiner
2022-09-14 11:41 ` Johannes Weiner
2022-09-10 6:50 ` [PATCH 2/5] sched/psi: export psi_memstall_{enter,leave} Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-14 11:42 ` Johannes Weiner
2022-09-14 11:42 ` Johannes Weiner
2022-09-10 6:50 ` [PATCH 3/5] btrfs: add manual PSI accounting for compressed reads Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-12 15:28 ` David Sterba [this message]
2022-09-12 15:28 ` David Sterba
2022-09-14 11:46 ` Johannes Weiner
2022-09-14 11:46 ` Johannes Weiner
2022-09-10 6:50 ` [PATCH 4/5] erofs: add manual PSI accounting for the compressed address space Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-14 11:47 ` Johannes Weiner
2022-09-14 11:47 ` Johannes Weiner
2022-09-14 12:47 ` Gao Xiang
2022-09-14 12:47 ` Gao Xiang
2022-09-10 6:50 ` [PATCH 5/5] block: remove PSI accounting from the bio layer Christoph Hellwig
2022-09-10 6:50 ` Christoph Hellwig
2022-09-14 11:48 ` Johannes Weiner
2022-09-14 11:48 ` Johannes Weiner
2022-09-10 11:32 ` improve pagecache PSI annotations Jens Axboe
2022-09-10 11:32 ` Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2022-09-15 9:41 improve pagecache PSI annotations v2 Christoph Hellwig
2022-09-15 9:41 ` [PATCH 3/5] btrfs: add manual PSI accounting for compressed reads Christoph Hellwig
2022-09-15 9:41 ` Christoph Hellwig
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=20220912152825.GH32411@suse.cz \
--to=dsterba@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=chao@kernel.org \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=hannes@cmpxchg.org \
--cc=hch@lst.de \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=surenb@google.com \
--cc=willy@infradead.org \
--cc=xiang@kernel.org \
/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.