diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/pmdas/gfs2/latency.h | |
download | pcp-debian/3.9.10.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/pmdas/gfs2/latency.h')
-rw-r--r-- | src/pmdas/gfs2/latency.h | 70 |
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 */ |