public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: dsterba@suse.cz, Qu Wenruo <wqu@suse.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 0/3] btrfs: use btrfs_path::reada to replace the
Date: Tue, 14 Dec 2021 20:45:58 +0800	[thread overview]
Message-ID: <94148b8a-856c-3d35-5df5-dbbbcbdbc230@gmx.com> (raw)
In-Reply-To: <20211214124152.GQ28560@twin.jikos.cz>



On 2021/12/14 20:41, David Sterba wrote:
> On Mon, Dec 13, 2021 at 09:10:51PM +0800, Qu Wenruo wrote:
>> [PROBLEMS]
>> The metadata readahead code is introduced in 2011 (surprisingly, the
>> commit message even contains changelog), but now there is only one user
>> for it, and even for the only one user, the readahead mechanism can't
>> provide all it needs:
>>
>> - No support for commit tree readahead
>>    Only support readahead on current tree.
>>
>> - Bad layer separation
>>    To manage on-fly bios, btrfs_reada_add() mechanism internally manages
>>    a kinda complex zone system, and it's bind to per-device.
>>
>>    This is against the common layer separation, as metadata should all be
>>    in btrfs logical address space, should not be bound to device physical
>>    layer.
>>
>>    In fact, this is the cause of all recent reada related bugs.
>>
>> - No caller for asynchronous metadata readahead
>>    Even btrfs_reada_add() is designed to be fully asynchronous, scrub
>>    only calls it in a synchronous way (call btrfs_reada_add() and
>>    immediately call btrfs_reada_wait()).
>>    Thus rendering a lot of code unnecessary.
>
> I agree with removing the reada.c code, it's overengineered perhaps with
> intentions to use it in more places but this hasn't happened and nobody
> is interested doing the work. We have the path readahead so it's not
> we'd lose readahead capabilities at all.
>
> Thanks for benchmarking it, the drop is acceptable and we know people
> are more interested in limiting the load anyway.
>
>> [BENCHMARK]
>> The conclusion looks like this:
>>
>> For the worst case (no dirty metadata, slow HDD), there will be around 5%
>> performance drop for scrub.
>> For other cases (even SATA SSD), there is no distinguishable performance
>> difference.
>>
>> The number is reported scrub speed, in MiB/s.
>> The resolution is limited by the reported duration, which only has a
>> resolution of 1 second.
>>
>> 	Old		New		Diff
>> SSD	455.3		466.332		+2.42%
>> HDD	103.927 	98.012		-5.69%
>
> I'll copy this information to the last patch changelog.

Since I found a bug in the first patch, let me have the chance to
re-order the patches, and put this into the patch removing reada.

Thanks,
Qu

      reply	other threads:[~2021-12-14 12:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-13 13:10 [PATCH 0/3] btrfs: use btrfs_path::reada to replace the Qu Wenruo
2021-12-13 13:10 ` [PATCH 1/3] btrfs: remove the unnecessary path parameter for scrub_raid56_parity() Qu Wenruo
2021-12-14 12:44   ` Qu Wenruo
2021-12-13 13:10 ` [PATCH 2/3] btrfs: remove reada mechanism Qu Wenruo
2021-12-13 13:10 ` [PATCH 3/3] btrfs: use btrfs_path::reada for scrub extent tree readahead Qu Wenruo
2021-12-14 12:41 ` [PATCH 0/3] btrfs: use btrfs_path::reada to replace the David Sterba
2021-12-14 12:45   ` Qu Wenruo [this message]

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=94148b8a-856c-3d35-5df5-dbbbcbdbc230@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=dsterba@suse.cz \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox