From e8e0da1a577e24cd4aad71fb94d8b244e2ac7300 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 21 Jan 2013 13:57:38 -0800 Subject: [PATCH] osd: use Message::get_cost() function for queueing The data payload is a decent proxy for cost in most cases, but not all. Signed-off-by: Sage Weil --- src/msg/DispatchQueue.cc | 4 ++-- src/msg/Message.h | 4 ++++ src/osd/OSD.cc | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/msg/DispatchQueue.cc b/src/msg/DispatchQueue.cc index 04e405581a760..31f37cfd5f638 100644 --- a/src/msg/DispatchQueue.cc +++ b/src/msg/DispatchQueue.cc @@ -37,7 +37,7 @@ void DispatchQueue::enqueue(Message *m, int priority, uint64_t id) id, priority, QueueItem(m)); } else { mqueue.enqueue( - id, priority, m->get_data().length(), QueueItem(m)); + id, priority, m->get_cost(), QueueItem(m)); } cond.Signal(); } @@ -51,7 +51,7 @@ void DispatchQueue::local_delivery(Message *m, int priority) 0, priority, QueueItem(m)); } else { mqueue.enqueue( - 0, priority, m->get_data().length(), QueueItem(m)); + 0, priority, m->get_cost(), QueueItem(m)); } cond.Signal(); } diff --git a/src/msg/Message.h b/src/msg/Message.h index 95f165a43dd50..5bdd4d463b6dc 100644 --- a/src/msg/Message.h +++ b/src/msg/Message.h @@ -424,6 +424,10 @@ public: footer.data_crc = data.crc32c(0); } + virtual int get_cost() const { + return data.length(); + } + // type int get_type() const { return header.type; } void set_type(int t) { header.type = t; } diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5969c347bf12f..efd9af9d0897a 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6042,7 +6042,7 @@ void OSD::enqueue_op(PG *pg, OpRequestRef op) { utime_t latency = ceph_clock_now(g_ceph_context) - op->request->get_recv_stamp(); dout(15) << "enqueue_op " << op << " prio " << op->request->get_priority() - << " cost " << op->request->get_data().length() + << " cost " << op->request->get_cost() << " latency " << latency << " " << *(op->request) << dendl; op_wq.queue(make_pair(PGRef(pg), op)); @@ -6051,7 +6051,7 @@ void OSD::enqueue_op(PG *pg, OpRequestRef op) void OSD::OpWQ::_enqueue(pair item) { unsigned priority = item.second->request->get_priority(); - unsigned cost = item.second->request->get_data().length(); + unsigned cost = item.second->request->get_cost(); if (priority >= CEPH_MSG_PRIO_LOW) pqueue.enqueue_strict( item.second->request->get_source_inst(), @@ -6073,7 +6073,7 @@ void OSD::OpWQ::_enqueue_front(pair item) } } unsigned priority = item.second->request->get_priority(); - unsigned cost = item.second->request->get_data().length(); + unsigned cost = item.second->request->get_cost(); if (priority >= CEPH_MSG_PRIO_LOW) pqueue.enqueue_strict_front( item.second->request->get_source_inst(), @@ -6131,7 +6131,7 @@ void OSD::dequeue_op(PGRef pg, OpRequestRef op) { utime_t latency = ceph_clock_now(g_ceph_context) - op->request->get_recv_stamp(); dout(10) << "dequeue_op " << op << " prio " << op->request->get_priority() - << " cost " << op->request->get_data().length() + << " cost " << op->request->get_cost() << " latency " << latency << " " << *(op->request) << " pg " << *pg << dendl; -- 2.39.5