From: Chanyoung Park Date: Mon, 15 Sep 2025 13:08:20 +0000 (+0000) Subject: crimson/.../store-bench: fix coll_refs index error X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F65527%2Fhead;p=ceph.git crimson/.../store-bench: fix coll_refs index error Signed-off-by: Chanyoung Park --- diff --git a/src/crimson/tools/store_bench/store-bench.cc b/src/crimson/tools/store_bench/store-bench.cc index 9e062d0bd033..56d60bd31a26 100644 --- a/src/crimson/tools/store_bench/store-bench.cc +++ b/src/crimson/tools/store_bench/store-bench.cc @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -589,9 +590,6 @@ class RandomWriteWorkload : public StoreBenchWorkload { uint64_t get_obj_per_shard() const { return size_per_shard / size_per_obj; } - uint64_t get_obj_per_coll() const { - return get_obj_per_shard() / colls_per_shard; - } public: po::options_description get_options() final { po::options_description ret{"RandomWriteWorkload"}; @@ -664,7 +662,8 @@ seastar::future RandomWriteWorkload::run( ghobject_t::NO_GEN); }; - std::vector< + std::unordered_map< + uint64_t, std::pair > coll_refs; for (uint64_t collidx = 0; collidx < colls_per_shard; ++collidx) { @@ -673,13 +672,15 @@ seastar::future RandomWriteWorkload::run( ); auto ref = co_await local_store.create_new_collection( cid); - coll_refs.emplace_back(std::make_pair(cid, std::move(ref))); + coll_refs.emplace(collidx, std::make_pair(cid, std::move(ref))); } auto get_coll_id = [&](uint64_t obj_id) { - return coll_refs[obj_id % get_obj_per_coll()].first; + assert(coll_refs.contains(obj_id % colls_per_shard)); + return coll_refs.at(obj_id % colls_per_shard).first; }; auto get_coll_ref = [&](uint64_t obj_id) { - return coll_refs[obj_id % get_obj_per_coll()].second; + assert(coll_refs.contains(obj_id % colls_per_shard)); + return coll_refs.at(obj_id % colls_per_shard).second; }; unsigned running = 0; @@ -751,7 +752,8 @@ seastar::future RandomWriteWorkload::run( } INFO("writes_started {}", writes_started); - for (auto &[id, ref]: coll_refs) { + for (auto &[_, entry]: coll_refs) { + auto &[id, ref] = entry; INFO("flushing {}", id); co_await local_store.flush(ref); } @@ -791,7 +793,7 @@ int main(int argc, char **argv) { "enable debugging") ("work-load-type", po::value(&work_load_type)->required(), - "work load type: pg_log or rgw_index") + "work load type: pg_log, rgw_index or random_write") ("smp", po::value(&smp), "number of reactors");