Project

General

Profile

Fix #6908

OSD: do not do PG creates in-line with incoming request

Added by Greg Farnum about 6 years ago. Updated about 6 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
-
Target version:
% Done:

0%

Source:
Support
Tags:
Backport:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature:

Description

We got a report that splitting a pool from 8 PGs to 2040 PGs caused a number of OSDs in the cluster to go down temporarily. I checked out the code and believe I've identified the issue:
OSD::handle_pg_create() will synchronously, under the OSD lock, create every PG that is specified in a single message.

It does so by doing whatever lookups are necessary (I'm not sure how much this is) and creating a single transaction that does all the PG creation steps, then dispatching it for execution. In the case above, that meant 254 PG creates within a single transaction, which I think is a bit large. We should avoid doing the work in uninterruptible chunks and split it into reasonable sizes for processing, instead.


Related issues

Related to Ceph - Bug #6922: mon: do not allow unreasonable PG splitting Resolved 12/02/2013

History

#1 Updated by Greg Farnum about 6 years ago

  • Status changed from New to Need More Info

I'm incorrect about this; it's not a single transaction but rather one per PG. Will try and get more details.

#2 Updated by Greg Farnum about 6 years ago

  • Status changed from Need More Info to Rejected

Also available in: Atom PDF