kern/45558: [msdosfs] mdconfig and msdosfs make fs writes hang
bde at zeta.org.au
Sun Jan 9 12:10:24 PST 2005
The following reply was made to PR kern/45558; it has been noted by GNATS.
From: Bruce Evans <bde at zeta.org.au>
To: Kris Kennaway <kris at obsecurity.org>
Cc: Jacques Garrigue <garrigue at math.nagoya-u.ac.jp>,
freebsd-gnats-submit at freebsd.org
Subject: Re: kern/45558: [msdosfs] mdconfig and msdosfs make fs writes hang
Date: Mon, 10 Jan 2005 07:04:07 +1100 (EST)
On Wed, 5 Jan 2005, Kris Kennaway wrote:
> On Thu, Jan 06, 2005 at 02:50:31AM +0000, Jacques Garrigue wrote:
> > Good news:
> > It looks like mdconfig now works correctly on msdos partitions.
> > I built a 1G file on a 32-bit fat partition, and mounted it as ffs
> > with mdconfig, and it has been working nicely for a while, with a lot
> > of activity.
> > I'm however a bit surprised by the slow writes, considering I'm using
> > soft updates on the partition. Something in the intereaction with
> > msdosfs?
> msdosfs is not known as a high-performance filesystem ;-)
That's mainly because msdosfs is poorly implemented in FreeBSD. Its
main poornesses are random block allocation (for the first block in a
file) and non-use of VMIO. After fixing these and some non-asyncness,
it is only about 20% slower than ffs1 for copying a cached copy of
/usr/src (60 seconds instead of 50), and for the more interesting
result of reading back the copy to see if the files were layed out without
much fragmentation, it is only 10% slower than ffs1 (19 seconds instead
of 17.2). In -current the read-back takes over 400 seconds. The slow
read-back is entirely due to the poor layout from random block allocation.
The only performance problem with msdosdfs should be that it fragments
too easily. Fragmentation can be very bad in ffs too. It just takes
longer and its perfermance reduction is limited to more like a factor
of 10 than a factor of 100. In the above, 17.2 seconds for reading
400MB of files is very good -- almost half the disk bandwidth of about
40MB/sec. tar cf of my active, fragmented copy of /usr/src on a slower
(25-30MB/sec) disk today takes 94 seconds.
More information about the freebsd-bugs