]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: print desc for oldest slow op to osd log
authorSage Weil <sage@redhat.com>
Fri, 27 Apr 2018 21:53:11 +0000 (16:53 -0500)
committerSage Weil <sage@redhat.com>
Tue, 1 May 2018 18:54:28 +0000 (13:54 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc

index b801b63c795a1b2a24d6f74a0970f58ce9b5f3e9..2aee59d9061c6f8a687f19e8573158d01bf781ae 100644 (file)
@@ -7009,18 +7009,26 @@ vector<DaemonHealthMetric> OSD::get_health_metrics()
     auto too_old = now;
     too_old -= cct->_conf->get_val<double>("osd_op_complaint_time");
     int slow = 0;
+    TrackedOpRef oldest_op;
     auto count_slow_ops = [&](TrackedOp& op) {
       if (op.get_initiated() < too_old) {
        lgeneric_subdout(cct,osd,20) << "slow op " << op.get_desc()
                                     << " initiated "
                                     << op.get_initiated() << dendl;
        slow++;
+       if (!oldest_op || op.get_initiated() < oldest_op->get_initiated()) {
+         oldest_op = &op;
+       }
        return true;
       } else {
        return false;
       }
     };
     if (op_tracker.visit_ops_in_flight(&oldest_secs, count_slow_ops)) {
+      if (slow) {
+       derr << __func__ << " reporting " << slow << " slow ops, oldest is "
+            << oldest_op->get_desc() << dendl;
+      }
       metrics.emplace_back(daemon_metric::SLOW_OPS, slow, oldest_secs);
     } else {
       // no news is not good news.