From: Ronen Friedman Date: Mon, 23 Mar 2026 16:24:20 +0000 (+0000) Subject: Crimson/osd/run_bench(): make randomness follow Classic more closely X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=28c3b68086a3cad72c560a5be90b7f3daa06cf47;p=ceph.git Crimson/osd/run_bench(): make randomness follow Classic more closely Direct gen() calls for randomness: Crimson uses dis(gen) % onum and dis(gen) % (osize / bsize) to pick random object indices and offsets, which limits the range to 0–255. Classic uses mt19937s directly, allowing the full 32-bit range of randomness. Signed-off-by: Ronen Friedman --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 73f8be167dcc..ae3f862001e5 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -1674,17 +1674,15 @@ seastar::future OSD::run_bench(int64_t count, int64_t bsize, int64_t osi } co_await seastar::when_all_succeed(futures.begin(), futures.end()); - std::random_device rd; - std::mt19937 gen(rd()); - std::uniform_int_distribution<> dis(0, 255); + std::mt19937 gen(std::random_device{}()); std::vector> futures_bench; auto start = std::chrono::steady_clock::now(); for (int i = 0; i < count / bsize; ++i) { ceph::os::Transaction t; ceph::buffer::ptr bp(bsize); - std::generate_n(bp.c_str(), bp.length(), [&dis, &gen]() { - return static_cast(dis(gen)); + std::generate_n(bp.c_str(), bp.length(), [&gen]() { + return static_cast(gen() & 0xff); }); ceph::buffer::list bl(bsize); bl.push_back(std::move(bp)); @@ -1693,8 +1691,8 @@ seastar::future OSD::run_bench(int64_t count, int64_t bsize, int64_t osi std::string oid_str; uint64_t offset = 0; if (onum && osize) { - oid_str = fmt::format("disk_bw_test_{}", dis(gen) % onum); - offset = (dis(gen) % (osize / bsize)) * bsize; + oid_str = fmt::format("disk_bw_test_{}", (int)(gen() % onum)); + offset = gen() % (osize / bsize) * bsize; } else { oid_str = fmt::format("disk_bw_test_{}", i * bsize); }