From 69b5c72cbea2b3fa8c22eb374022f2243aa08b38 Mon Sep 17 00:00:00 2001 From: Loic Dachary Date: Thu, 16 Oct 2014 16:23:17 -0700 Subject: [PATCH] doc: updates on Backfill Reservation The logic was changed by: 0985ae71bce32c4d9e0e9e9f68bed38eb3c26897 osd: prioritize backfill based on *how* degraded Signed-off-by: Loic Dachary --- .../osd_internals/backfill_reservation.rst | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/dev/osd_internals/backfill_reservation.rst b/doc/dev/osd_internals/backfill_reservation.rst index 1fa2d07414721..cf9dab4d4a0b8 100644 --- a/doc/dev/osd_internals/backfill_reservation.rst +++ b/doc/dev/osd_internals/backfill_reservation.rst @@ -4,8 +4,11 @@ Backfill Reservation When a new osd joins a cluster, all pgs containing it must eventually backfill to it. If all of these backfills happen simultaneously, it would put excessive -load on the osd. osd_num_concurrent_backfills limits the number of outgoing or -incoming backfills on a single node. +load on the osd. osd_max_backfills limits the number of outgoing or +incoming backfills on a single node. The maximum number of outgoing backfills is +osd_max_backfills. The maximum number of incoming backfills is +osd_max_backfills. Therefore there can be a maximum of osd_max_backfills * 2 +simultaneous backfills on one osd. Each OSDService now has two AsyncReserver instances: one for backfills going from the osd (local_reserver) and one for backfills going to the osd @@ -26,9 +29,10 @@ ReplicaActive. It's important that we always grab the local reservation before the remote reservation in order to prevent a circular dependency. -We want to minimize the risk of data loss by prioritizing the order in which -PGs are recovered. We use 3 AsyncReserver priorities to hand out reservations. -The highest priority is log based recovery (RECOVERY) since this must always -complete before backfill can start. The next priority is backfill of degraded -PGs (BACKFILL_HIGH). The lowest priority is backfill of non-degraded PGs -(BACKFILL_LOW). +We want to minimize the risk of data loss by prioritizing the order in +which PGs are recovered. The highest priority is log based recovery +(OSD_RECOVERY_PRIORITY_MAX) since this must always complete before +backfill can start. The next priority is backfill of degraded PGs and +is a function of the degradation. A backfill for a PG missing two +replicas will have a priority higher than a backfill for a PG missing +one replica. The lowest priority is backfill of non-degraded PGs. -- 2.39.5