diff options
author | Sage Weil <sage@inktank.com> | 2013-01-21 15:59:07 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-01-22 14:47:42 -0800 |
commit | 24d0d7eb0165c8b8f923f2d8896b156bfb5e0e60 (patch) | |
tree | e07f93340663d66d2914cbf114fe1dcb0386b3a7 | |
parent | 33efe32151e04beaafd9435d7f86dc2eb046214d (diff) | |
download | ceph-24d0d7eb0165c8b8f923f2d8896b156bfb5e0e60.tar.gz |
osd: dump op priority queue state via admin socket
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osd/OSD.cc | 9 | ||||
-rw-r--r-- | src/osd/OSD.h | 5 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 67bc52b114b..b28cace35b4 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -865,6 +865,12 @@ bool OSD::asok_command(string command, string args, ostream& ss) op_tracker.dump_ops_in_flight(ss); } else if (command == "dump_historic_ops") { op_tracker.dump_historic_ops(ss); + } else if (command == "dump_op_pq_state") { + JSONFormatter f(true); + f.open_object_section("pq"); + op_wq.dump(&f); + f.close_section(); + f.flush(ss); } else { assert(0 == "broken asok registration"); } @@ -970,6 +976,8 @@ int OSD::init() "show the ops currently in flight"); r = admin_socket->register_command("dump_historic_ops", asok_hook, "show slowest recent ops"); + r = admin_socket->register_command("dump_op_pq_state", asok_hook, + "dump op priority queue state"); assert(r == 0); service.init(); @@ -1124,6 +1132,7 @@ int OSD::shutdown() cct->get_admin_socket()->unregister_command("dump_ops_in_flight"); cct->get_admin_socket()->unregister_command("dump_historic_ops"); + cct->get_admin_socket()->unregister_command("dump_op_pq_state"); delete asok_hook; asok_hook = NULL; diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 4b9e0e0b192..c9b408a2747 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -644,6 +644,11 @@ private: o->cct->_conf->osd_op_pq_min_cost) {} + void dump(Formatter *f) { + Mutex::Locker l(qlock); + pqueue.dump(f); + } + void _enqueue_front(pair<PGRef, OpRequestRef> item); void _enqueue(pair<PGRef, OpRequestRef> item); PGRef _dequeue(); |