summaryrefslogtreecommitdiff
path: root/src/pmdas/gfs2/latency.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmdas/gfs2/latency.h')
-rw-r--r--src/pmdas/gfs2/latency.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/pmdas/gfs2/latency.h b/src/pmdas/gfs2/latency.h
new file mode 100644
index 0000000..aa2a1ef
--- /dev/null
+++ b/src/pmdas/gfs2/latency.h
@@ -0,0 +1,70 @@
+/*
+ * GFS2 latency metrics.
+ *
+ * Copyright (c) 2014 Red Hat.
+ *
+ * This program 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 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program 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.
+ */
+
+#ifndef LATENCY_H
+#define LATENCY_H
+
+#define DEFAULT_LATENCY_STATE 1
+#define NUM_LATENCY_VALUES 512
+
+enum{
+ START = 0,
+ END
+};
+
+enum {
+ LATENCY_GRANT_ALL = 0,
+ LATENCY_GRANT_NL,
+ LATENCY_GRANT_CR,
+ LATENCY_GRANT_CW,
+ LATENCY_GRANT_PR,
+ LATENCY_GRANT_PW,
+ LATENCY_GRANT_EX,
+ LATENCY_DEMOTE_ALL,
+ LATENCY_DEMOTE_NL,
+ LATENCY_DEMOTE_CR,
+ LATENCY_DEMOTE_CW,
+ LATENCY_DEMOTE_PR,
+ LATENCY_DEMOTE_PW,
+ LATENCY_DEMOTE_EX,
+ LATENCY_QUEUE_ALL,
+ LATENCY_QUEUE_NL,
+ LATENCY_QUEUE_CR,
+ LATENCY_QUEUE_CW,
+ LATENCY_QUEUE_PR,
+ LATENCY_QUEUE_PW,
+ LATENCY_QUEUE_EX,
+ NUM_LATENCY_STATS
+};
+
+struct latency_data {
+ uint32_t lock_type;
+ uint64_t number;
+ int64_t usecs;
+};
+
+struct latency {
+ struct latency_data values [NUM_LATENCY_STATS * NUM_LATENCY_VALUES * 2]; /* START and STOP values */
+ int counter [NUM_LATENCY_STATS];
+};
+
+extern int gfs2_latency_fetch(int, struct latency *, pmAtomValue *);
+extern int gfs2_extract_latency(unsigned int, unsigned int, int, char *, pmInDom);
+
+extern int latency_get_state();
+extern int latency_set_state(pmValueSet *vsp);
+
+#endif /* LATENCY_H */