Project

General

Profile

Feature #1836

filejournal: use async directio to write to the journal

Added by Sage Weil almost 12 years ago. Updated almost 12 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
OSD
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

Currently we're doing a sync direct io write, which means we pay a full rotation between each io.

History

#1 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_position set to 9

#2 Updated by Sage Weil almost 12 years ago

Say we have a cap of N aio ops, to prevent a stream of small ops resulting in a stream of tiny aio writes to the journal. (Okay, actually, is that actually bad? Maybe not!)

Anyway, assuming it is, and we implement a cap, we can do something like wait a minimum of (bytes_in_flight / max_journal_tput / N) seconds before dispatching the next aio write, which will make each write, on average, (current_throughput / N) bytes. This would avoid dispatching N 4k writes, hitting our max, and waiting until the first completes, but not having enough time to get the next io to the controller before the disk rotates again (since all N writes were small and right next to each other).

#3 Updated by Greg Farnum almost 12 years ago

Presumably AIO writes can be combined or reordered by the block device/interfaces, right? So having a bunch of them in-flight would be more likely to increase than decrease performance.

#4 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_position deleted (30)
  • translation missing: en.field_position set to 28

#5 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_position deleted (30)
  • translation missing: en.field_position set to 26

#6 Updated by Sage Weil almost 12 years ago

  • Target version set to v0.41
  • translation missing: en.field_position deleted (28)
  • translation missing: en.field_position set to 103

#7 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_story_points set to 8
  • translation missing: en.field_position deleted (103)
  • translation missing: en.field_position set to 28

#8 Updated by Sage Weil almost 12 years ago

  • Target version deleted (v0.41)
  • translation missing: en.field_position deleted (29)
  • translation missing: en.field_position set to 1

#9 Updated by Sage Weil almost 12 years ago

  • Target version set to v0.41
  • translation missing: en.field_position deleted (1)
  • translation missing: en.field_position set to 29

#10 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_position deleted (29)
  • translation missing: en.field_position set to 27

#11 Updated by Sage Weil almost 12 years ago

  • Assignee set to Sage Weil

#12 Updated by Sage Weil almost 12 years ago

  • Target version changed from v0.41 to v0.42
  • translation missing: en.field_position deleted (30)
  • translation missing: en.field_position set to 1

#13 Updated by Sage Weil almost 12 years ago

  • Status changed from New to 4

#14 Updated by Sage Weil almost 12 years ago

  • Status changed from 4 to 7

#15 Updated by Sage Weil almost 12 years ago

  • Target version changed from v0.42 to v0.43

#16 Updated by Sage Weil almost 12 years ago

  • translation missing: en.field_position deleted (31)
  • translation missing: en.field_position set to 1

#17 Updated by Sage Weil almost 12 years ago

  • Status changed from 7 to Resolved
  • Target version deleted (v0.43)

Also available in: Atom PDF