EXT2 vs. EXT3: mount w/sync or fdatasync

brian stone skye0507 at yahoo.com
Fri Mar 23 03:44:40 UTC 2007


Ran some performance tests as suggested.

Machine A connects to machine B on a gigabit lan.  Machine A sends 
1024 1MB chucks of data; 1 GB in total. Machine B, the server, reads 
in the MB and writes it to a file.

NOTE: server and client are little test programs written in C.  

Machine B (Server) hardware:
- Single (no raid) Seagate Cheetah 70G Ultra320 15K
- Quad Opteron 870
- 16G DDR400
- Backplane: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 8)

Sync methods include:
1. mount with sync option
  - tried sync,dirsync which added no additional overhead
2. use O_SYNC open() flag
3. use fdatasync() just before closing the file
  - fsync() and fdatasync() produced the same results


EXT2 tests
==========================================
No sync                     12.3 seconds  (83 MB/Sec)
mount=sync                  44.3 seconds  (23 MB/Sec)
O_SYNC                      31.7 seconds  (32 MB/Sec)
fdatasync()                 31.3 seconds  (32 MB/Sec)


EXT3 tests
===========================================
No sync data=writeback      14.5 seconds  (70 MB/Sec)
No sync data=ordered        17 seconds    (60 MB/Sec)
No sync data=journal        65 seconds    (15 MB/Sec)
data=ordered O_SYNC         49 seconds    (20 MB/Sec)
data=ordered,sync           52 seconds    (19 MB/Sec)
data=ordered fdatasync()    45.5 seconds  (22 MB/Sec)
data=journal O_SYNC         72.5 seconds  (14 MB/Sec)
data=journal,sync           81 seconds    (12 MB/Sec)
data=journal fdatasync()    60.5 seconds  (17 MB/Sec)

thanks

Andreas Dilger <adilger at clusterfs.com> wrote: On Mar 21, 2007  16:51 -0700, brian stone wrote:
> My application always needs to sync file data after writing. I don't want anything handing around in the kernel buffers. I am wondering what is the best method to accomplish this.

>  4. Do I use EXT3 in full journaled mode, where the data and metadata are journaled? In this case, is the journaled data sync'd or async'd? When the journal commits the data to the file system, is that sync'd or dumped into kernel buffers?
>  
>  5. Since I will always be syncing the data, does it make any sense to use EXT3? It feels like the EXT3 journal would be unnecessary.

In theory, ext3 + data=journal will give you the best performance, because
sync IO will always be linear IO to the journal.  Unless your filesystem is
constantly busy, then the writes to the filesystem can happen asynchronously
after being committed to the journal without danger of being lost.

That said, nothing better than benchmarking your app with different
filesystem options to see which one is best.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.



 
---------------------------------
No need to miss a message. Get email on-the-go 
with Yahoo! Mail for Mobile. Get started.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/ext3-users/attachments/20070322/e1811773/attachment.htm>


More information about the Ext3-users mailing list