From d90c2f86ca7a8f6660e98da1e48c4798539b7d51 Mon Sep 17 00:00:00 2001 From: Vikas Gorur Date: Sun, 4 Apr 2010 14:11:26 +0000 Subject: core: Do internal latency measurement of FOPs. This patch adds a facility by which each translator keeps track of the average latency of a FOP from its point of view. That is, the duration between the translator handing over the call to a lower-level translator and the reply coming back. The latency measurement is off by default, and can be toggled by sending SIGUSR2 to the GlusterFS process. Latency data is printed as part of the process state dump. Signed-off-by: Vikas Gorur Signed-off-by: Anand V. Avati BUG: 268 (Add timing instrumentation code) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=268 --- libglusterfs/src/latency.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 libglusterfs/src/latency.h (limited to 'libglusterfs/src/latency.h') diff --git a/libglusterfs/src/latency.h b/libglusterfs/src/latency.h new file mode 100644 index 00000000..ba7d76cd --- /dev/null +++ b/libglusterfs/src/latency.h @@ -0,0 +1,36 @@ +/* + Copyright (c) 2009 Gluster, Inc. + This file is part of GlusterFS. + + GlusterFS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + GlusterFS is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + . +*/ + +#ifndef __LATENCY_H__ +#define __LATENCY_H__ + + +typedef struct fop_latency { + uint64_t min; /* min time for the call (microseconds) */ + uint64_t max; /* max time for the call (microseconds) */ + double total; /* total time (microseconds) */ + double std; /* standard deviation */ + double mean; /* mean (microseconds) */ + uint64_t count; +} fop_latency_t; + +void +gf_latency_toggle (int signum); + +#endif /* __LATENCY_H__ */ -- cgit