Skip to contentSkip to conversation

New: fsync blocks concurrent writes to file

Bugme-new Andrew Morton 1 participant 1 message Feb 8, 2008 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]/

#1 lore raw
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.