Project

General

Profile

Actions

Feature #1836

closed

filejournal: use async directio to write to the journal

Added by Sage Weil over 12 years ago. Updated about 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.

Actions #1

Updated by Sage Weil over 12 years ago

  • Translation missing: en.field_position set to 9
Actions #2

Updated by Sage Weil over 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).

Actions #3

Updated by Greg Farnum over 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.

Actions #4

Updated by Sage Weil over 12 years ago

  • Translation missing: en.field_position deleted (30)
  • Translation missing: en.field_position set to 28
Actions #5

Updated by Sage Weil over 12 years ago

  • Translation missing: en.field_position deleted (30)
  • Translation missing: en.field_position set to 26
Actions #6

Updated by Sage Weil over 12 years ago

  • Target version set to v0.41
  • Translation missing: en.field_position deleted (28)
  • Translation missing: en.field_position set to 103
Actions #7

Updated by Sage Weil over 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
Actions #8

Updated by Sage Weil over 12 years ago

  • Target version deleted (v0.41)
  • Translation missing: en.field_position deleted (29)
  • Translation missing: en.field_position set to 1
Actions #9

Updated by Sage Weil over 12 years ago

  • Target version set to v0.41
  • Translation missing: en.field_position deleted (1)
  • Translation missing: en.field_position set to 29
Actions #10

Updated by Sage Weil over 12 years ago

  • Translation missing: en.field_position deleted (29)
  • Translation missing: en.field_position set to 27
Actions #11

Updated by Sage Weil over 12 years ago

  • Assignee set to Sage Weil
Actions #12

Updated by Sage Weil about 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
Actions #13

Updated by Sage Weil about 12 years ago

  • Status changed from New to 4
Actions #14

Updated by Sage Weil about 12 years ago

  • Status changed from 4 to 7
Actions #15

Updated by Sage Weil about 12 years ago

  • Target version changed from v0.42 to v0.43
Actions #16

Updated by Sage Weil about 12 years ago

  • Translation missing: en.field_position deleted (31)
  • Translation missing: en.field_position set to 1
Actions #17

Updated by Sage Weil about 12 years ago

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

Also available in: Atom PDF