diff options
author | Sage Weil <sage@inktank.com> | 2013-01-21 13:57:38 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-01-22 14:47:40 -0800 |
commit | e8e0da1a577e24cd4aad71fb94d8b244e2ac7300 (patch) | |
tree | 092b6998dd476c22e2d7c4db942aabc905848347 | |
parent | bec96a234c160bebd9fd295df5b431dc70a2cfb3 (diff) | |
download | ceph-e8e0da1a577e24cd4aad71fb94d8b244e2ac7300.tar.gz |
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 <sage@inktank.com>
-rw-r--r-- | src/msg/DispatchQueue.cc | 4 | ||||
-rw-r--r-- | src/msg/Message.h | 4 | ||||
-rw-r--r-- | 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 04e405581a7..31f37cfd5f6 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 95f165a43dd..5bdd4d463b6 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 5969c347bf1..efd9af9d089 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<PGRef, OpRequestRef> 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<PGRef, OpRequestRef> 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; |