Re: Ext3 vs NTFS performance

Jeremy Allison
2007-05-02T18:08:15Z

On Wed, May 02, 2007 at 12:16:38PM -0400, Theodore Tso wrote:
> On Tue, May 01, 2007 at 02:23:25PM -0700, Andrew Morton wrote:
> > On Tue, 1 May 2007 13:43:18 -0700
> > "Cabot, Mason B" <mason.b.cabot@intel.com> wrote:
> >
> > > I've been testing the NAS performance of ext3/Openfiler 2.2 against
> > > NTFS/WinXP and have found that NTFS significantly outperforms ext3 for
> > > video workloads. The Windows CIFS client will attempt a poor-man's
> > > pre-allocation of the file on the server by sending 1-byte writes at
> > > 128K-byte strides, breaking block allocation on ext3 and leading to
> > > fragmentation and poor performance. This will happen for many
> > > applications (including iTunes) as the CIFS client issues these
> > > pre-allocates under the application layer.
> >
> > Oh my gawd, what a stupid hack. Now we know what the MS interoperability
> > lab has been working on.
>
> I wonder if they patented this technique as well, as well as one of
> their dozen or so patents they are filing every day? "A Method of
> Screwing Over Samba's Performance So that Windows Longhorn Can Compete
> On Performance" coming soon, to a patent database near you! :-)
>
> > > I've posted a brief paper on Intel's OSS website
> > > (http://softwarecommunity.intel.com/articles/eng/1259.htm). Please give
> > > it a read and let me know what you think. In particular, I'd like to
> > > arrive at the right place to fix this problem: is it in the filesystem,
> > > VFS, or Samba?
>
> The right place is clearly Samba. I can't think of any other program
> or filesystem protocol where writing a 1 byte write at 128k strides
> would be used to signal a desire to do preallocation. In fact, it's
> hard to think of a worse way of doing things.

In fact they don't need to do this - there's an explicit CIFS
set file allocation call to pre-allocate size they could use.

There's a specific Samba VFS module that has XFS specific calls
to do this - vfs_prealloc. - but this won't work on ext3.

Jeremy.