]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
add sort logic in osd perf command
authorfalconlee236 <falconlee236@gmail.com>
Tue, 17 Mar 2026 14:11:23 +0000 (23:11 +0900)
committerfalconlee236 <falconlee236@gmail.com>
Fri, 20 Mar 2026 11:18:17 +0000 (20:18 +0900)
Signed-off-by: falconlee236 <falconlee236@gmail.com>
src/mon/PGMap.cc

index acf3061af34a2203889b8d6f485792eadc42ac3e..ce61adcc1beb2effb0942a892bb0d8c90ddcdf1e 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <iomanip> // for std::setw()
 #include <sstream>
+#include <algorithm>
+#include <vector>
 
 #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<int> 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<int32_t> 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;
 }