ocfs2/cluster: Track send message timing stats for each socket
authorSunil Mushran <sunil.mushran@oracle.com>
Wed, 22 Dec 2010 20:39:40 +0000 (12:39 -0800)
committerJoel Becker <joel.becker@oracle.com>
Thu, 23 Dec 2010 02:38:09 +0000 (18:38 -0800)
Tracks total send and status times for all messages sent on a socket.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
fs/ocfs2/cluster/tcp.c
fs/ocfs2/cluster/tcp_internal.h

index efd848334052a0005411aa44f56ac3c8c0fe1d23..4d61e19d6146e7092509a86ed397bca81e98038d 100644 (file)
@@ -224,6 +224,28 @@ static inline void o2net_set_func_stop_time(struct o2net_sock_container *sc)
 # define o2net_set_func_stop_time(a)
 #endif /* CONFIG_DEBUG_FS */
 
+#ifdef CONFIG_OCFS2_FS_STATS
+static void o2net_update_send_stats(struct o2net_send_tracking *nst,
+                                   struct o2net_sock_container *sc)
+{
+       sc->sc_tv_status_total = ktime_add(sc->sc_tv_status_total,
+                                          ktime_sub(ktime_get(),
+                                                    nst->st_status_time));
+       sc->sc_tv_send_total = ktime_add(sc->sc_tv_send_total,
+                                        ktime_sub(nst->st_status_time,
+                                                  nst->st_send_time));
+       sc->sc_tv_acquiry_total = ktime_add(sc->sc_tv_acquiry_total,
+                                           ktime_sub(nst->st_send_time,
+                                                     nst->st_sock_time));
+       sc->sc_send_count++;
+}
+
+#else
+
+# define o2net_update_send_stats(a, b)
+
+#endif /* CONFIG_OCFS2_FS_STATS */
+
 static inline int o2net_reconnect_delay(void)
 {
        return o2nm_single_cluster->cl_reconnect_delay_ms;
@@ -1093,6 +1115,8 @@ int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *caller_vec,
        o2net_set_nst_status_time(&nst);
        wait_event(nsw.ns_wq, o2net_nsw_completed(nn, &nsw));
 
+       o2net_update_send_stats(&nst, sc);
+
        /* Note that we avoid overwriting the callers status return
         * variable if a system error was reported on the other
         * side. Callers beware. */
index f81576333911e61a3e13a656e9ec6ce6b830425c..640c6fcef7201ed7800365c3e160ca9e87f126e4 100644 (file)
@@ -178,6 +178,12 @@ struct o2net_sock_container {
        ktime_t                 sc_tv_advance_stop;
        ktime_t                 sc_tv_func_start;
        ktime_t                 sc_tv_func_stop;
+#endif
+#ifdef CONFIG_OCFS2_FS_STATS
+       ktime_t                 sc_tv_acquiry_total;
+       ktime_t                 sc_tv_send_total;
+       ktime_t                 sc_tv_status_total;
+       u32                     sc_send_count;
 #endif
        struct mutex            sc_send_lock;
 };
This page took 0.025995 seconds and 5 git commands to generate.