]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: log perf counters for the read op
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Fri, 20 Mar 2015 07:20:37 +0000 (15:20 +0800)
committerZhiqiang Wang <zhiqiang.wang@intel.com>
Mon, 23 Mar 2015 02:45:33 +0000 (10:45 +0800)
Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/librbd/internal.cc

index 7c732b41c1796a6b9a21b1dff57e3cab934e0c66..30a0e3f6fcb1a346171be3f8cb3c989426ff10e7 100644 (file)
@@ -3020,9 +3020,23 @@ reprotect_and_return_err:
 
   ssize_t read(ImageCtx *ictx, uint64_t ofs, size_t len, char *buf, int op_flags)
   {
+    utime_t start_time, elapsed;
+    ssize_t ret;
+    ldout(ictx->cct, 20) << "read " << ictx << " off = " << ofs << " len = "
+                        << len << dendl;
+    start_time = ceph_clock_now(ictx->cct);
+
     vector<pair<uint64_t,uint64_t> > extents;
     extents.push_back(make_pair(ofs, len));
-    return read(ictx, extents, buf, NULL, op_flags);
+    ret = read(ictx, extents, buf, NULL, op_flags);
+    if (ret < 0)
+      return ret;
+
+    elapsed = ceph_clock_now(ictx->cct) - start_time;
+    ictx->perfcounter->tinc(l_librbd_rd_latency, elapsed);
+    ictx->perfcounter->inc(l_librbd_rd);
+    ictx->perfcounter->inc(l_librbd_rd_bytes, ret);
+    return ret;
   }
 
   ssize_t read(ImageCtx *ictx, const vector<pair<uint64_t,uint64_t> >& image_extents,