2008-02-08 03:13:57

by Andrew Morton

[permalink] [raw]
Subject: Re: [Bugme-new] [Bug 9911] New: fsync blocks concurrent writes to file

On Thu, 7 Feb 2008 17:40:57 -0800 (PST) [email protected] wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=9911
>
> Summary: fsync blocks concurrent writes to file
> Product: File System
> Version: 2.5
> KernelVersion: 2.6.23.8
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: ext3
> AssignedTo: [email protected]
> ReportedBy: [email protected]
>
>
> Latest working kernel version: none
> Earliest failing kernel version: 2.6.18
> Distribution: RHEL 4 & Fedora 8
> Hardware Environment: Dual Xeon & dual-core Athlon
> Software Environment: Java 1.5.0_14
> Problem Description: Multiple threads append transactions to a single file.
> When fsyncs are issued, no writes complete until the fsync completes. This has
> the effect of yielding the same write rate regardless of how many threads are
> writing to the file. Solaris 10 does not exhibit this problem and scales well
> as additional threads are added.
>
> I have confirmed this by running strace and witnessing that writes block until
> immediately after the fsync completes.
>
> When using truss on Solaris I have witnessed multiple writes completing while
> an fsync was in progress.
>
> Steps to reproduce:
>
> Open a file for writing.
> Launch multiple threads with each one writing data and followed by an fsync,
> but only if data has been written since the last fsync.
>
>
> I have googled this issue substantially and have found no answers.
>

I supposing teaching java about sync_file_range() would be all too hard.