Skip to content

Commit 12208e0

Browse files
authored
Merge pull request ceph#65527 from chanyoung/fix-coll-refs
crimson/.../store-bench: fix coll_refs index error Reviewed-by: Matan Breizman <[email protected]>
2 parents 84ac9de + 753ccb4 commit 12208e0

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/crimson/tools/store_bench/store-bench.cc

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include <random>
2828
#include <vector>
29+
#include <unordered_map>
2930
#include <experimental/random>
3031

3132
#include <boost/program_options/parsers.hpp>
@@ -589,9 +590,6 @@ class RandomWriteWorkload : public StoreBenchWorkload {
589590
uint64_t get_obj_per_shard() const {
590591
return size_per_shard / size_per_obj;
591592
}
592-
uint64_t get_obj_per_coll() const {
593-
return get_obj_per_shard() / colls_per_shard;
594-
}
595593
public:
596594
po::options_description get_options() final {
597595
po::options_description ret{"RandomWriteWorkload"};
@@ -664,7 +662,8 @@ seastar::future<results_t> RandomWriteWorkload::run(
664662
ghobject_t::NO_GEN);
665663
};
666664

667-
std::vector<
665+
std::unordered_map<
666+
uint64_t,
668667
std::pair<coll_t, crimson::os::CollectionRef>
669668
> coll_refs;
670669
for (uint64_t collidx = 0; collidx < colls_per_shard; ++collidx) {
@@ -673,13 +672,15 @@ seastar::future<results_t> RandomWriteWorkload::run(
673672
);
674673
auto ref = co_await local_store.create_new_collection(
675674
cid);
676-
coll_refs.emplace_back(std::make_pair(cid, std::move(ref)));
675+
coll_refs.emplace(collidx, std::make_pair(cid, std::move(ref)));
677676
}
678677
auto get_coll_id = [&](uint64_t obj_id) {
679-
return coll_refs[obj_id % get_obj_per_coll()].first;
678+
assert(coll_refs.contains(obj_id % colls_per_shard));
679+
return coll_refs.at(obj_id % colls_per_shard).first;
680680
};
681681
auto get_coll_ref = [&](uint64_t obj_id) {
682-
return coll_refs[obj_id % get_obj_per_coll()].second;
682+
assert(coll_refs.contains(obj_id % colls_per_shard));
683+
return coll_refs.at(obj_id % colls_per_shard).second;
683684
};
684685

685686
unsigned running = 0;
@@ -751,7 +752,8 @@ seastar::future<results_t> RandomWriteWorkload::run(
751752
}
752753

753754
INFO("writes_started {}", writes_started);
754-
for (auto &[id, ref]: coll_refs) {
755+
for (auto &[_, entry]: coll_refs) {
756+
auto &[id, ref] = entry;
755757
INFO("flushing {}", id);
756758
co_await local_store.flush(ref);
757759
}
@@ -790,7 +792,7 @@ int main(int argc, char **argv) {
790792
("debug", po::bool_switch(&debug), "enable debugging")
791793
("work-load-type",
792794
po::value<std::string>(&work_load_type)->required(),
793-
"work load type: pg_log or rgw_index")
795+
"work load type: pg_log, rgw_index or random_write")
794796
("smp", po::value<unsigned>(&smp),
795797
"number of reactors");
796798

0 commit comments

Comments
 (0)