Re: [bcachefs] time of mounting filesystem with high number of dirs
From: Kent Overstreet <hidden>
Date: 2016-09-07 21:12:16
On Wed, Sep 07, 2016 at 10:09:58PM +0200, Marcin wrote:
Hi! I'm aware that performance doesn't have high priority, it's something for TODO. I created bcachefs on ~10GB partition, copied some files and next I created huge number of directories and files. Problem is in the total time needed for mounting filesystem. # time mount -t bcache /dev/sde1 /mnt/test/ real 12m20.880s user 0m0.000s sys 1m18.270s
Oh damn, guess it's time to start working on mount time... I knew this was going to be an issue sooner or later, but 12 minutes is impressive :)
I looked at iostat, mounting needs to read from disk 10083588 "kB_read". Device has size 10485760kB, so it looks that it reads almost the same amount of data as partition size. Maybe mount time can be lower? Maybe there can be less reads or reads could be more sequential?
So, right now we're checking i_nlinks on every mount - mainly the dirents implementation predates the transactional machinery we have now. That's almost definitely what's taking so long, but I'll send you a patch to confirm later. It shouldn't take that much work to make the relevant filesystem code transactional, I'll bump that up on the todo list...