Re: btrfs mount takes too long time
From: Anand Jain <hidden>
Date: 2021-08-30 13:04:49
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] */ 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 3 "*:mod:btrfs" "mount /dev/vg/scratch0 /btrfs" Thanks, Anand On 30/08/2021 14:44, Jingyun He wrote:
Hi, Anand, I have attached the new result. Kindly check. Thank you. On Mon, Aug 30, 2021 at 9:27 AM Anand Jain [off-list ref] wrote:quoted
Our open_ctree() took around ~223secs (~3.7mins) 1) $ 223375750 us | } /* open_ctree [btrfs] */ Unfortunately, the default trace buffer per CPU (4K) wasn't sufficient and, the trace-buffer rolled over. So we still don't know how long we spent in btrfs_read_block_groups(). Sorry for my mistake we should go 1 step at a time and, we have to do this until we narrow it down to a specific function. Could you please run with the depth = 2 (instead of 3) and use the time command prefix. Also, pull a new ftracegraph as I have updated it to display a proper time output. $ ftracegraph open_ctree 2 "*:mod:btrfs" "time mount /dev/vg/scratch0 /btrfs" Thanks, Anand On 29/08/2021 17:42, Jingyun He wrote:quoted
Hi, Anand I have attached the file. Could you kindly check this? Thank you. On Sun, Aug 29, 2021 at 7:47 AM Anand Jain [off-list ref] wrote:quoted
On 28/08/2021 19:58, Jingyun He wrote:quoted
Hello, all I'm new to btrfs, I have a HM-SMR 14TB disk, I have formatted it to btrfs to store the files. When the device is almost full, it needs about 5 mins to mount the device. Is it normal? is there any mount option that I can use to reduce the mount time?We need to figure out the function taking a longer time (maybe it is read-block-groups). I have similar reports on the non zoned device as well (with a few TB full of data). But there is no good data yet to analyse. Could you please collect the trace data from the ftracegraph from here [1] (It needs trace-cmd). [1] https://github.com/asj/btrfstrace.git Run it as in the example below: umount /btrfs; ./ftracegraph open_ctree 3 "*:mod:btrfs" "mount /dev/vg/scratch0 /btrfs" cat /tmp/ftracegraph.out Thanks, Anandquoted
Thank you.