Project

General

Profile

Actions

Bug #62815

closed

hybrid/avl allocators might be very ineffective when serving bluefs allocations

Added by Igor Fedotov 8 months ago. Updated 2 months ago.

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

100%

Source:
Community (dev)
Tags:
backport_processed
Backport:
reef, quincy, pacific
Regression:
No
Severity:
2 - major
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

When operating in best-fit mode these allocators perform chunk lookups through size-sorted "range_size_tree" container. This is done in two stages:

Use container's lower_bound() to search for the first available
long enough chunk.
Iterate sequentially to locate properly aligned chunk,
starting from the position obtained at step 1)
Step 2) might require significant efforts for bluefs allocations (which uses longer allocation unit than bluestore min_alloc_size, e.g. 64K vs. 4K) if space is highly fragmented. Plenty of potentially available chunks might be unaligned to 64K boundary and once aligned they aren't long enough any more.

This spreadsheet shows how dramatic could that be for hybrid allocator (real free map from a production cluster was used to build it):
https://docs.google.com/spreadsheets/d/1bh22JNqwTPSFUQPStYuuiKDEui6YSxZsusIln3tZ9t0/edit?usp=sharing


Related issues 4 (0 open4 closed)

Is duplicate of bluestore - Bug #62509: os/bluestore: suspect performance bottleneck on allocatorDuplicate

Actions
Copied to bluestore - Backport #63760: reef: hybrid/avl allocators might be very ineffective when serving bluefs allocationsResolvedIgor FedotovActions
Copied to bluestore - Backport #63761: quincy: hybrid/avl allocators might be very ineffective when serving bluefs allocationsResolvedActions
Copied to bluestore - Backport #63762: pacific: hybrid/avl allocators might be very ineffective when serving bluefs allocationsResolvedIgor FedotovActions
Actions

Also available in: Atom PDF