]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
crimson/osd: rework OSDMap handling for multicore
authorSamuel Just <sjust@redhat.com>
Thu, 4 Aug 2022 07:17:50 +0000 (00:17 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 22 Sep 2022 21:50:00 +0000 (14:50 -0700)
commitb4b2ab171c123b6701e8c78dda6c7e20e657639a
treee5123f9f05be07a47db5500b0666e255835fb36a
parent6385b865201a568a8c2209a680baa21a815118e9
crimson/osd: rework OSDMap handling for multicore

OSDMaps can occupy significant space in memory.  Duplicating OSDMaps
across cores would multiply that memory usage as well as complicate
the internal structure sharing we do when applying OSDMap incrementals.

Because PeeringState and other interfaces expect efficient copying of
OSDMapRef objects we don't want to use foreign_ptr directly.

Instead, maintain a single cache and distribute local_shared_foreign_ptrs
to other cores.  ShardServices becomes the only OSDMapService.

Signed-off-by: Samuel Just <sjust@redhat.com>
15 files changed:
src/crimson/admin/osd_admin.cc
src/crimson/admin/pg_commands.cc
src/crimson/osd/heartbeat.cc
src/crimson/osd/ops_executer.h
src/crimson/osd/osd.cc
src/crimson/osd/osd_operations/peering_event.cc
src/crimson/osd/osd_operations/pg_advance_map.cc
src/crimson/osd/osdmap_service.h
src/crimson/osd/pg.h
src/crimson/osd/pg_backend.h
src/crimson/osd/pg_shard_manager.cc
src/crimson/osd/pg_shard_manager.h
src/crimson/osd/shard_services.cc
src/crimson/osd/shard_services.h
src/osd/OSDMap.h