From: falconlee236 Date: Tue, 17 Mar 2026 14:11:23 +0000 (+0900) Subject: add sort logic in osd perf command X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=81d43e512fe8e2ebdc274585f7c8ca7028fdfd83;p=ceph.git add sort logic in osd perf command Signed-off-by: falconlee236 --- diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index acf3061af34a..ce61adcc1beb 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -25,6 +25,8 @@ #include // for std::setw() #include +#include +#include #define dout_context g_ceph_context @@ -2101,17 +2103,24 @@ int PGMap::dump_stuck_pg_stats( void PGMap::dump_osd_perf_stats(ceph::Formatter *f) const { f->open_array_section("osd_perf_infos"); - for (auto i = osd_stat.begin(); - i != osd_stat.end(); - ++i) { - f->open_object_section("osd"); - f->dump_int("id", i->first); - { - f->open_object_section("perf_stats"); - i->second.os_perf_stat.dump(f); + std::vector sorted_osds; + for (auto i = osd_stat.begin(); i != osd_stat.end(); ++i) { + sorted_osds.push_back(i->first); + } + std::sort(sorted_osds.begin(), sorted_osds.end()); + + for (int osd_id : sorted_osds) { + auto i = osd_stat.find(osd_id); + if (i != osd_stat.end()) { + f->open_object_section("osd"); + f->dump_int("id", i->first); + { + f->open_object_section("perf_stats"); + i->second.os_perf_stat.dump(f); + f->close_section(); + } f->close_section(); } - f->close_section(); } f->close_section(); } @@ -2121,13 +2130,21 @@ void PGMap::print_osd_perf_stats(std::ostream *ss) const tab.define_column("osd", TextTable::LEFT, TextTable::RIGHT); tab.define_column("commit_latency(ms)", TextTable::LEFT, TextTable::RIGHT); tab.define_column("apply_latency(ms)", TextTable::LEFT, TextTable::RIGHT); - for (auto i = osd_stat.begin(); - i != osd_stat.end(); - ++i) { - tab << i->first; - tab << i->second.os_perf_stat.os_commit_latency_ns / 1000000ull; - tab << i->second.os_perf_stat.os_apply_latency_ns / 1000000ull; - tab << TextTable::endrow; + + std::vector sorted_osds; + for (auto i = osd_stat.begin(); i != osd_stat.end(); ++i) { + sorted_osds.push_back(i->first); + } + std::sort(sorted_osds.begin(), sorted_osds.end()); + + for (int osd_id : sorted_osds) { + auto i = osd_stat.find(osd_id); + if (i != osd_stat.end()) { + tab << i->first; + tab << i->second.os_perf_stat.os_commit_latency_ns / 1000000ull; + tab << i->second.os_perf_stat.os_apply_latency_ns / 1000000ull; + tab << TextTable::endrow; + } } (*ss) << tab; }