Project

General

Profile

Actions

Bug #38538

closed

Performance improvements for object-map

Added by Jason Dillaman about 5 years ago. Updated about 3 years ago.

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

0%

Source:
Tags:
Backport:
luminous,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

The "object_map_update" OSD class method has a some low-hanging improvements that can be made to increase the performance of object-map updates:

1) the std::vector BitVector used for the bitset data is zeroed before it's contents are replaced with the bitset data read from the object-map object. This is a huge unnecessary CPU hit for larger object-maps.

2) the entire footer is read into memory even though only 4 bytes might be changed for an updated CRC. For large RBD images, this could be up to 16KiB of data in the worst-case scenario.

A stress-test against librados_test_stub shows improvement from ~100 updates/sec to over 50K updates/sec. The OSD is still limited to approximately 2-3K write operations per second, so longer term refactoring of the object-map design will be required to improve it's performance by orders of magnitude.


Related issues 2 (0 open2 closed)

Copied to rbd - Backport #38673: mimic: Performance improvements for object-mapResolvedJason DillamanActions
Copied to rbd - Backport #38674: luminous: Performance improvements for object-mapResolvedJason DillamanActions
Actions #1

Updated by Jason Dillaman about 5 years ago

  • Status changed from In Progress to Fix Under Review
  • Pull request ID set to 26721
Actions #2

Updated by Mykola Golub about 5 years ago

  • Status changed from Fix Under Review to Pending Backport
Actions #3

Updated by Nathan Cutler about 5 years ago

  • Copied to Backport #38673: mimic: Performance improvements for object-map added
Actions #4

Updated by Nathan Cutler about 5 years ago

  • Copied to Backport #38674: luminous: Performance improvements for object-map added
Actions #5

Updated by Jason Dillaman over 4 years ago

  • Description updated (diff)
Actions #6

Updated by Nathan Cutler about 3 years ago

  • Status changed from Pending Backport to Resolved

While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".

Actions

Also available in: Atom PDF