From 3272b687e45bdf2f291eaf749dd410e8cad8c365 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Mar 2018 15:42:44 +0800 Subject: [PATCH 1/3] common: use OpHistory::duration directly in OpHistory::dump_ops_by_duration Signed-off-by: Chang Liu --- src/common/TrackedOp.cc | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index 4b7ce31ee7b..33e56f7bdff 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -117,8 +117,7 @@ void OpHistory::dump_ops(utime_t now, Formatter *f, set filters) f->dump_int("duration", history_duration); { f->open_array_section("ops"); - for (set >::const_iterator i = - arrived.begin(); + for (auto i = arrived.begin(); i != arrived.end(); ++i) { if (!i->second->filter_out(filters)) @@ -141,26 +140,12 @@ void OpHistory::dump_ops_by_duration(utime_t now, Formatter *f, set filt f->dump_int("duration", history_duration); { f->open_array_section("ops"); - if (arrived.size()) { - vector > durationvec; - durationvec.reserve(arrived.size()); - - for (set >::const_iterator i = - arrived.begin(); - i != arrived.end(); - ++i) { - if (!i->second->filter_out(filters)) - continue; - durationvec.push_back(pair(i->second->get_duration(), i->second)); - } - - sort(durationvec.begin(), durationvec.end()); - - for (auto i = durationvec.rbegin(); i != durationvec.rend(); ++i) { - f->open_object_section("op"); - i->second->dump(now, f); - f->close_section(); - } + for (auto i = duration.rbegin(); i != duration.rend(); ++i) { + f->open_object_section("op"); + if (!i->second->filter_out(filters)) + continue; + i->second->dump(now, f); + f->close_section(); } f->close_section(); } From 01ff39dc8d2357596d7182053399ac19ae595860 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Mar 2018 16:54:14 +0800 Subject: [PATCH 2/3] common: get ride of OpHistory::dump_ops_by_duration Signed-off-by: Chang Liu --- src/common/TrackedOp.cc | 49 +++++++++++++---------------------------- src/common/TrackedOp.h | 3 +-- 2 files changed, 16 insertions(+), 36 deletions(-) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index 33e56f7bdff..6d68da36280 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -108,7 +108,7 @@ void OpHistory::cleanup(utime_t now) } } -void OpHistory::dump_ops(utime_t now, Formatter *f, set filters) +void OpHistory::dump_ops(utime_t now, Formatter *f, set filters, bool by_duration) { Mutex::Locker history_lock(ops_history_lock); cleanup(now); @@ -117,35 +117,20 @@ void OpHistory::dump_ops(utime_t now, Formatter *f, set filters) f->dump_int("duration", history_duration); { f->open_array_section("ops"); - for (auto i = arrived.begin(); - i != arrived.end(); - ++i) { - if (!i->second->filter_out(filters)) - continue; - f->open_object_section("op"); - i->second->dump(now, f); - f->close_section(); - } - f->close_section(); - } - f->close_section(); -} + auto dump_fn = [&f, &now, &filters](auto begin_iter, auto end_iter) { + for (auto i=begin_iter; i!=end_iter; ++i) { + if (!i->second->filter_out(filters)) + continue; + f->open_object_section("op"); + i->second->dump(now, f); + f->close_section(); + } + }; -void OpHistory::dump_ops_by_duration(utime_t now, Formatter *f, set filters) -{ - Mutex::Locker history_lock(ops_history_lock); - cleanup(now); - f->open_object_section("op_history"); - f->dump_int("size", history_size); - f->dump_int("duration", history_duration); - { - f->open_array_section("ops"); - for (auto i = duration.rbegin(); i != duration.rend(); ++i) { - f->open_object_section("op"); - if (!i->second->filter_out(filters)) - continue; - i->second->dump(now, f); - f->close_section(); + if (by_duration) { + dump_fn(duration.rbegin(), duration.rend()); + } else { + dump_fn(arrived.begin(), arrived.end()); } f->close_section(); } @@ -188,11 +173,7 @@ bool OpTracker::dump_historic_ops(Formatter *f, bool by_duration, set fi RWLock::RLocker l(lock); utime_t now = ceph_clock_now(); - if (by_duration) { - history.dump_ops_by_duration(now, f, filters); - } else { - history.dump_ops(now, f, filters); - } + history.dump_ops(now, f, filters, by_duration); return true; } diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 511bb508a89..85cdc177f9f 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -84,8 +84,7 @@ public: } void _insert_delayed(const utime_t& now, TrackedOpRef op); - void dump_ops(utime_t now, Formatter *f, set filters = {""}); - void dump_ops_by_duration(utime_t now, Formatter *f, set filters = {""}); + void dump_ops(utime_t now, Formatter *f, set filters = {""}, bool by_duration=false); void dump_slow_ops(utime_t now, Formatter *f, set filters = {""}); void on_shutdown(); void set_size_and_duration(uint32_t new_size, uint32_t new_duration) { From e4bc25c10ea0d764356b316e91879eab53ec651c Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Mar 2018 17:36:37 +0800 Subject: [PATCH 3/3] osd: rename duplicated event 'started' to 'sub_op_started' Signed-off-by: Chang Liu Signed-off-by: ashitakasam 694240887@qq.com --- src/osd/ECBackend.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 2ad2e3563f2..a16f51840e1 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -881,7 +881,7 @@ void ECBackend::handle_sub_write( const ZTracer::Trace &trace) { if (msg) - msg->mark_started(); + msg->mark_event("sub_op_started"); trace.event("handle_sub_write"); if (!get_parent()->pgb_is_primary()) get_parent()->update_stats(op.stats);