New: fsync blocks concurrent writes to file
Quoted 34 lines · 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.
Quoted 9 lines
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.