Re: what is fsck's "slowdown"?

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Fri, 3 Sep 2004 15:52:11 -0700 (PDT)
On  4 Sep, Giorgos Keramidas wrote:
> On 2004-09-03 14:58, Don Lewis <truckman_at_freebsd.org> wrote:

>> Using two CPUs would give you at best a 2x speedup, and in this case it
>> would be quite a bit less since both CPUs would be trying to access and
>> modify the same data structure.  Just using a better data structure is
>> likely to speed things up much more than 2x.  Something as simple as
>> building the list in reverse order in pass 1 is likely to make a huge
>> difference.
> 
> Holding both a head and tail pointer to the singly-linked list should
> probably make it easier to add nodes at the end of the list instead of
> the head.  I haven't read the source of fsck_ffs at all though, so I
> don't know if I can come up with a working patch in a reasonable amount
> of time.

Yes, if fsck used the <sys/queue.h> macros, this data structure should
probably be a STAILQ.  The code if fsck is all hand rolled and it would
be trivially easy to add a tail pointer.  The head of the list in
question is
	struct zlncnt *zlnhead;
The only modifications needed would be in the initialization code in
main.c, and the code that builds the list in pass1.c.
Received on Fri Sep 03 2004 - 20:52:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:10 UTC