]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore/onode: measure onode-tree lookup cost 69670/head
authorMatan Breizman <mbreizma@redhat.com>
Tue, 23 Jun 2026 10:31:55 +0000 (10:31 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 7 Jul 2026 10:40:32 +0000 (10:40 +0000)
commit9899e7bfebd57fd74946a49e23f41080b66a06a8
tree201d7e7fdf16334142528d54fa5e3041b2a7fa52
parent767e1b6514a4aae26938a9c095404f99107c0bb7
crimson/os/seastore/onode: measure onode-tree lookup cost

Before optimizing the onode lookup paths we should measure the existing
cost if each possible optimization.

The per-node search is already binary search(see search_result_bs_t
binary_search). Possible costs are:
- per-level node traversal
- STAGE_STRING ns/oid memcmp (rbd has long shared oid prefixes)

Adding the following stats to be exposed as seastar-metrics (not logs).

Keep the new sampling per-comparison overhead out unless needed for
measurment runs.

Candidate optimization leads from the numbers:
* cross-node string/prefix dedup (marked as TODOs in stage.h) this could
  result in cheaper compares for shared (rbd) prefixes.
* shrink onode_layout_t - marked as onode.h TODO.
  stop inlining oi and ss to get more objects per leaf.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/CMakeLists.txt
src/crimson/os/seastore/onode_manager/staged-fltree/node.cc
src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore.h
src/crimson/os/seastore/transaction.h