[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: EXT2 vs. EXT3: mount w/sync or fdatasync



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="" 14.5 seconds  (70 MB/Sec)
No sync data="" 17 seconds    (60 MB/Sec)
No sync data="" 65 seconds    (15 MB/Sec)
data="" O_SYNC         49 seconds    (20 MB/Sec)
data="" 52 seconds    (19 MB/Sec)
data="" fdatasync()    45.5 seconds  (22 MB/Sec)
data="" O_SYNC         72.5 seconds  (14 MB/Sec)
data="" 81 seconds    (12 MB/Sec)
data="" fdatasync()    60.5 seconds  (17 MB/Sec)

thanks

Andreas Dilger <adilger 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="" 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.
[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]