Project

General

Profile

Actions

Fix #6908

closed

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

Added by Greg Farnum over 10 years ago. Updated over 10 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 (v1):
Crash signature (v2):

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 1 (0 open1 closed)

Related to Ceph - Bug #6922: mon: do not allow unreasonable PG splittingResolvedGreg Farnum12/02/2013

Actions
Actions #1

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

Actions #2

Updated by Greg Farnum over 10 years ago

  • Status changed from Need More Info to Rejected
Actions

Also available in: Atom PDF