]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: use Message::get_cost() function for queueing
authorSage Weil <sage@inktank.com>
Mon, 21 Jan 2013 21:57:38 +0000 (13:57 -0800)
committerSage Weil <sage@inktank.com>
Tue, 22 Jan 2013 22:47:40 +0000 (14:47 -0800)
The data payload is a decent proxy for cost in most cases, but not all.

Signed-off-by: Sage Weil <sage@inktank.com>
src/msg/DispatchQueue.cc
src/msg/Message.h
src/osd/OSD.cc

index 04e405581a7609458585d67ce22a1aea020eb6c9..31f37cfd5f6384ac97a8b428a5e9d8708f1bc553 100644 (file)
@@ -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();
 }
index 95f165a43dd50bb3b954637ef7742edf55955c59..5bdd4d463b6dc405aebd5da9637c9ca46bf790d5 100644 (file)
@@ -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; }
index 5969c347bf12f126cb67eef622f0a90ff59ea5c9..efd9af9d0897a82c60fb6d762c7223d8a3885485 100644 (file)
@@ -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;