All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: "Dāvis Mosāns" <davispuh@gmail.com>,
	"Anand Jain" <anand.jain@oracle.com>
Cc: Jingyun He <jingyun.ho@gmail.com>,
	Btrfs BTRFS <linux-btrfs@vger.kernel.org>,
	Johannes Thumshirn <Johannes.Thumshirn@wdc.com>,
	David Sterba <dsterba@suse.cz>
Subject: Re: btrfs mount takes too long time
Date: Thu, 2 Sep 2021 07:42:15 +0800	[thread overview]
Message-ID: <620763f1-2ff5-6421-47cc-96d7cc94fb96@gmx.com> (raw)
In-Reply-To: <CAOE4rSx5+9jXEE2ra5qYOiZWpVU=EcB1MadEf_35fa0M3MZyiw@mail.gmail.com>



On 2021/9/2 上午12:11, Dāvis Mosāns wrote:
> pirmd., 2021. g. 30. aug., plkst. 16:08 — lietotājs Anand Jain
> (<anand.jain@oracle.com>) rakstīja:
>>
>> open_ctree() took 228254398 us. And 98% of it that is 225418272 us
>> was taken by btrfs_read_block_groups().
>>
>> -------------------
>>    1) $ 225418272 us | } /* btrfs_read_block_groups [btrfs] */

As long as it's not zoned device, this is a known problem.

Block group items by its original design is scattered across the huge
extent tree.

Grabbing them all needs quite a lot of random IO, for large fs it's very
time consuming.

I have purposed a skinny bg tree design to put all block group items
into one tree, so that would greatly speed up the whole mount process.
And with user-space tool to do the convert.

But recently Josef is developing a completely new extent tree design,
which will include a similar design for it.

For know I'm not sure what's the way to go, either we can wait for
extent-tree-v2, or should we push for the middle ground skinny bg tree?

David, Any idea on this?

Thanks,
Qu
>>    1) * 16934.96 us | btrfs_check_rw_degradable [btrfs]();
>>    0) 0.967 us | btrfs_apply_pending_changes [btrfs]();
>>    0) 0.239 us | btrfs_read_qgroup_config [btrfs]();
>>    0) * 21017.34 us | btrfs_get_root_ref [btrfs]();
>>    0) + 15.717 us | btrfs_start_pre_rw_mount [btrfs]();
>>    0) 0.865 us | btrfs_discard_resume [btrfs]();
>>    0) $ 228254398 us | } /* open_ctree [btrfs] */
>> -------------------
>>
>> Now we need to run the same thing on btrfs_read_block_groups(),
>> could you please run.. [1] (no need of the time).
>>
>> [1]
>>     $ umount /btrfs;
>>     $./ftracegraph btrfs_read_block_groups 2 "*:mod:btrfs" "mount
>> /dev/vg/scratch0 /btrfs"
>>
>> Thanks, Anand
>>
>>
>
> Hi,
>
> I also have a btrfs filesystem that takes a while to mount.
> So I'm interested if this could be improved.
>
> $ ./ftracegraph open_ctree 2 "*:mod:btrfs" "time mount /dev/md127 -o
> space_cache=v2,compress=zstd,acl,subvol=Data /mnt/Data/"
> kernel.ftrace_enabled = 1
>
> real    1m33,638s
> user    0m0,000s
> sys     0m1,130s
>
> Here's the trace output https://dāvis.lv/files/ftracegraph.out.gz
>
> The filesystem is on top of RAID6 mdadm array which is from 9x 3TB HDDs.
>
> Best regards,
> Dāvis
>

      parent reply	other threads:[~2021-09-01 23:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-28 11:58 btrfs mount takes too long time Jingyun He
2021-08-28 23:47 ` Anand Jain
     [not found]   ` <CAHQ7scVkHp8Lcfxx2QZXv2ghkW-nYpiFGntyZa0Toz2hU3S-tQ@mail.gmail.com>
2021-08-30  1:27     ` Anand Jain
     [not found]       ` <CAHQ7scUiNLVD_4---ArBet-0DqzfmmH5Y9JgQY0grYrUv8yhiQ@mail.gmail.com>
2021-08-30 13:04         ` Anand Jain
2021-08-30 13:04         ` Anand Jain
     [not found]           ` <CAHQ7scVOYuzz58KcO_fo2rph44CCC46ef=LFVZF8XzoKYq27ig@mail.gmail.com>
2021-08-31 11:09             ` Anand Jain
2021-08-31 13:10               ` Johannes Thumshirn
2021-08-31 16:47                 ` David Sterba
2021-09-07  5:29                   ` Naohiro Aota
     [not found]               ` <CAHQ7scXp9gTANB9gWHqQgXUsnF-YvTOKrK1waUScmqvHU_0ifw@mail.gmail.com>
2021-09-07  9:52                 ` Anand Jain
2021-09-01 16:11           ` Dāvis Mosāns
2021-09-01 21:30             ` Anand Jain
2021-09-02 16:56               ` Dāvis Mosāns
2021-09-03  9:56                 ` Anand Jain
2021-09-02 17:34               ` Joshua
2021-09-01 23:42             ` 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=620763f1-2ff5-6421-47cc-96d7cc94fb96@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=Johannes.Thumshirn@wdc.com \
    --cc=anand.jain@oracle.com \
    --cc=davispuh@gmail.com \
    --cc=dsterba@suse.cz \
    --cc=jingyun.ho@gmail.com \
    --cc=linux-btrfs@vger.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.