Whamcloud - gitweb
b=14184
authorkomaln <komaln>
Thu, 17 Jan 2008 07:47:44 +0000 (07:47 +0000)
committerkomaln <komaln>
Thu, 17 Jan 2008 07:47:44 +0000 (07:47 +0000)
r=Nathan, Wangdi

To add ptlrpc stats on client side.

lustre/ptlrpc/client.c
lustre/ptlrpc/niobuf.c

index ba49a3f..55a5ee2 100644 (file)
@@ -636,10 +636,14 @@ static int ptlrpc_check_status(struct ptlrpc_request *req)
 static int after_reply(struct ptlrpc_request *req)
 {
         struct obd_import *imp = req->rq_import;
+        struct obd_device *obd = req->rq_import->imp_obd;
         int rc;
+        struct timeval work_start;
+        long timediff;
         ENTRY;
 
         LASSERT(!req->rq_receiving_reply);
+        LASSERT(obd);
         LASSERT(req->rq_nob_received <= req->rq_repbuf_len);
 
         /* NB Until this point, the whole of the incoming message,
@@ -670,6 +674,12 @@ static int after_reply(struct ptlrpc_request *req)
                 RETURN(-EPROTO);
         }
 
+        do_gettimeofday(&work_start);
+        timediff = cfs_timeval_sub(&work_start, &req->rq_arrival_time, NULL);
+        if (obd->obd_svc_stats != NULL)
+                lprocfs_counter_add(obd->obd_svc_stats, PTLRPC_REQWAIT_CNTR,
+                                    timediff);
+
         if (lustre_msg_get_type(req->rq_repmsg) != PTL_RPC_MSG_REPLY &&
             lustre_msg_get_type(req->rq_repmsg) != PTL_RPC_MSG_ERR) {
                 DEBUG_REQ(D_ERROR, req, "invalid packet received (type=%u)",
index 726cae0..7d92ba6 100644 (file)
@@ -402,6 +402,7 @@ int ptl_send_rpc(struct ptlrpc_request *request, int noreply)
         struct ptlrpc_connection *connection;
         lnet_handle_me_t  reply_me_h;
         lnet_md_t         reply_md;
+        struct obd_device *obd = request->rq_import->imp_obd;
         ENTRY;
 
         if (OBD_FAIL_CHECK(OBD_FAIL_PTLRPC_DROP_RPC))
@@ -501,10 +502,14 @@ int ptl_send_rpc(struct ptlrpc_request *request, int noreply)
         /* add references on request and import for request_out_callback */
         ptlrpc_request_addref(request);
         atomic_inc(&request->rq_import->imp_inflight);
+        if (obd->obd_svc_stats != NULL)
+                lprocfs_counter_add(obd->obd_svc_stats, PTLRPC_REQACTIVE_CNTR,
+                                    request->rq_import->imp_inflight.counter);
 
         OBD_FAIL_TIMEOUT(OBD_FAIL_PTLRPC_DELAY_SEND, request->rq_timeout + 5);
 
         request->rq_sent = CURRENT_SECONDS;
+        do_gettimeofday(&request->rq_arrival_time);
         ptlrpc_pinger_sending_on_import(request->rq_import);
         rc = ptl_send_buf(&request->rq_req_md_h,
                           request->rq_reqbuf, request->rq_reqdata_len,