From: Benjamin Xiao <ben.r.xiao@gmail.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: Still seeing high autodefrag IO with kernel 5.16.5
Date: Thu, 03 Feb 2022 20:32:29 -0800 [thread overview]
Message-ID: <5AJR6R.7DWSX2SE14RN3@gmail.com> (raw)
In-Reply-To: <88b6fe3e-8317-8070-cb27-0aee4dc72cfb@gmx.com>
Okay, I just compiled a custom Arch kernel with your patches applied.
Will test soon. Besides enabling autodefrag and redownloading a game
from Steam, what other sorts of tests should I do?
Ben
On Fri, Feb 4 2022 at 09:54:19 AM +0800, Qu Wenruo
<quwenruo.btrfs@gmx.com> wrote:
>
>
> On 2022/2/4 09:17, Qu Wenruo wrote:
>>
>>
>> On 2022/2/4 04:05, Benjamin Xiao wrote:
>>> Hello all,
>>>
>>> Even after the defrag patches that landed in 5.16.5, I am still
>>> seeing
>>> lots of cpu usage and disk writes to my SSD when autodefrag is
>>> enabled.
>>> I kinda expected slightly more IO during writes compared to 5.15,
>>> but
>>> what I am actually seeing is massive amounts of btrfs-cleaner i/o
>>> even
>>> when no programs are actively writing to the disk.
>>>
>>> I can reproduce it quite reliably on my 2TB Btrfs Steam library
>>> partition. In my case, I was downloading Strange Brigade, which is a
>>> roughly 25GB download and 33.65GB on disk. Somewhere during the
>>> download, iostat will start reporting disk writes around 300 MB/s,
>>> even
>>> though Steam itself reports disk usage of 40-45MB/s. After the
>>> download
>>> finishes and nothing else is being written to disk, I still see
>>> around
>>> 90-150MB/s worth of disk writes. Checking in iotop, I can see btrfs
>>> cleaner and other btrfs processes writing a lot of data.
>>>
>>> I left it running for a while to see if it was just some maintenance
>>> tasks that Btrfs needed to do, but it just kept going. I tried to
>>> reboot, but it actually prevented me from properly rebooting. After
>>> systemd timed out, my system finally shutdown.
>>>
>>> Here are my mount options:
>>> rw,relatime,compress-force=zstd:2,ssd,autodefrag,space_cache=v2,subvolid=5,subvol=/
>>>
>>
>> Compression, I guess that's the reason.
>>
>> From the very beginning, btrfs defrag doesn't handle compressed
>> extent
>> well.
>>
>> Even if a compressed extent is already at its maximum capacity, btrfs
>> will still try to defrag it.
>>
>> I believe the behavior is masked by other problems in older kernels
>> thus
>> not that obvious.
>>
>> But after rework of defrag in v5.16, this behavior is more exposed.
>
> And if possible, please try this diff on v5.15.x, and see if v5.15 is
> really doing less IO than v5.16.x.
>
> The diff will solve a problem in the old code, where autodefrag is
> almost not working.
>
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index cc61813213d8..f6f2468d4883 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -1524,13 +1524,8 @@ int btrfs_defrag_file(struct inode *inode,
> struct
> file *file,
> continue;
> }
>
> - if (!newer_than) {
> - cluster = (PAGE_ALIGN(defrag_end) >>
> - PAGE_SHIFT) - i;
> - cluster = min(cluster, max_cluster);
> - } else {
> - cluster = max_cluster;
> - }
> + cluster = (PAGE_ALIGN(defrag_end) >> PAGE_SHIFT) - i;
> + cluster = min(cluster, max_cluster);
>
> if (i + cluster > ra_index) {
> ra_index = max(i, ra_index);
>
>>
>> There are patches to address the compression related problem, but not
>> yet merged:
>>
>> https://patchwork.kernel.org/project/linux-btrfs/list/?series=609387
>>
>> Mind to test them to see if that's the case?
>>
>> Thanks,
>> Qu
>>>
>>>
>>> I've disabled autodefrag again for now to save my SSD, but just
>>> wanted
>>> to say that there is still an issue. Have the defrag issues been
>>> fully
>>> fixed or are there more patches incoming despite what Reddit and
>>> Phoronix say? XD
>>>
>>> Thanks!
>>> Ben
>>>
>>>
next prev parent reply other threads:[~2022-02-04 4:32 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-03 20:05 Still seeing high autodefrag IO with kernel 5.16.5 Benjamin Xiao
2022-02-04 1:17 ` Qu Wenruo
2022-02-04 1:54 ` Qu Wenruo
2022-02-04 4:32 ` Benjamin Xiao [this message]
2022-02-04 6:20 ` Qu Wenruo
2022-02-04 17:36 ` Benjamin Xiao
2022-02-04 19:34 ` Benjamin Xiao
2022-02-04 23:51 ` Qu Wenruo
[not found] ` <SL2P216MB11112B447FB0400149D320C1AC2B9@SL2P216MB1111.KORP216.PROD.OUTLOOK.COM>
2022-02-06 9:26 ` Qu Wenruo
2022-02-06 17:43 ` Jean-Denis Girard
2022-02-07 1:16 ` Qu Wenruo
2022-02-07 1:45 ` Jean-Denis Girard
2022-02-09 1:56 ` Jean-Denis Girard
2022-02-09 2:51 ` Qu Wenruo
2022-02-07 3:05 ` Qu Wenruo
[not found] ` <SL2P216MB1111994F81CE0006D495511DAC2C9@SL2P216MB1111.KORP216.PROD.OUTLOOK.COM>
2022-02-07 5:23 ` Qu Wenruo
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=5AJR6R.7DWSX2SE14RN3@gmail.com \
--to=ben.r.xiao@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=quwenruo.btrfs@gmx.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