summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-01-21 13:57:38 -0800
committerSage Weil <sage@inktank.com>2013-01-22 14:47:40 -0800
commite8e0da1a577e24cd4aad71fb94d8b244e2ac7300 (patch)
tree092b6998dd476c22e2d7c4db942aabc905848347
parentbec96a234c160bebd9fd295df5b431dc70a2cfb3 (diff)
downloadceph-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.cc4
-rw-r--r--src/msg/Message.h4
-rw-r--r--src/osd/OSD.cc8
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;