On Thu, Jun 03, 2010 at 04:58:10PM -0500, Alex Elder wrote:
> On Mon, 2010-05-31 at 09:09 +1000, Dave Chinner wrote:
> > On Fri, May 28, 2010 at 01:51:08PM -0400, Christoph Hellwig wrote:
> > > Historically XFS initializes the allocator / inode allocator per-AG
> > > lazily, that is the first time this information is required. For
> > > filesystems that use lazy superblock counters (which is the default now)
> > > we already have to walk all AGs to initialize the superblock counters
> > > on an unclean shutdown.
> > Which is not common, so isn't frequently triggered in the normal
> > mount process. The reason for the lazy initialisation is to speed
> > the mount process up when there are thousands of AGs. That is, we
> > avoid thousands of serialised IOs in the mount path. Have you
> > checked to see what the impact is on the clean mount execution time
> > is on such a filesystem?
> It's interesting that the time penalty you're talking about
> doesn't go away, it just becomes less noticeable because it's
> aggregated over subsequent access to the AG's.
Right, the penalty is currently taken at access time, rather than at
mount time. One way to test the impact is to compare the runtime
difference for xfstests with MKFS_OPTIONS="-d agsize=16m" to bump up
the AG count and see how much additional IO and time it takes...