diff options
Diffstat (limited to 'src/pmdas/gfs2/ftrace.h')
-rw-r--r-- | src/pmdas/gfs2/ftrace.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/pmdas/gfs2/ftrace.h b/src/pmdas/gfs2/ftrace.h new file mode 100644 index 0000000..7974783 --- /dev/null +++ b/src/pmdas/gfs2/ftrace.h @@ -0,0 +1,142 @@ +/* + * GFS2 ftrace based trace-point metrics. + * + * Copyright (c) 2013 - 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 FTRACE_H +#define FTRACE_H + +#define INITIAL_GLOBAL_MAX_GLOCK_THROUGHPUT 750000 + +enum { + GLOCK_STATE_CHANGE = 0, + GLOCK_PUT, + DEMOTE_RQ, + PROMOTE, + GLOCK_QUEUE, + GLOCK_LOCK_TIME, + PIN, + LOG_FLUSH, + LOG_BLOCKS, + AIL_FLUSH, + BLOCK_ALLOC, + BMAP, + RS, + NUM_FTRACE_TRACEPOINTS +}; + +enum { + FTRACE_GLOCKSTATE_TOTAL = 0, + FTRACE_GLOCKSTATE_NULLLOCK, + FTRACE_GLOCKSTATE_CONCURRENTREAD, + FTRACE_GLOCKSTATE_CONCURRENTWRITE, + FTRACE_GLOCKSTATE_PROTECTEDREAD, + FTRACE_GLOCKSTATE_PROTECTEDWRITE, + FTRACE_GLOCKSTATE_EXCLUSIVE, + FTRACE_GLOCKSTATE_GLOCK_CHANGEDTARGET, + FTRACE_GLOCKSTATE_GLOCK_MISSEDTARGET, + FTRACE_GLOCKPUT_TOTAL, + FTRACE_GLOCKPUT_NULLLOCK, + FTRACE_GLOCKPUT_CONCURRENTREAD, + FTRACE_GLOCKPUT_CONCURRENTWRITE, + FTRACE_GLOCKPUT_PROTECTEDREAD, + FTRACE_GLOCKPUT_PROTECTEDWRITE, + FTRACE_GLOCKPUT_EXCLUSIVE, + FTRACE_DEMOTERQ_TOTAL, + FTRACE_DEMOTERQ_NULLLOCK, + FTRACE_DEMOTERQ_CONCURRENTREAD, + FTRACE_DEMOTERQ_CONCURRENTWRITE, + FTRACE_DEMOTERQ_PROTECTEDREAD, + FTRACE_DEMOTERQ_PROTECTEDWRITE, + FTRACE_DEMOTERQ_EXCLUSIVE, + FTRACE_DEMOTERQ_REQUESTED_REMOTE, + FTRACE_DEMOTERQ_REQUESTED_LOCAL, + FTRACE_PROMOTE_TOTAL, + FTRACE_PROMOTE_FIRST_NULLLOCK, + FTRACE_PROMOTE_FIRST_CONCURRENTREAD, + FTRACE_PROMOTE_FIRST_CONCURRENTWRITE, + FTRACE_PROMOTE_FIRST_PROTECTEDREAD, + FTRACE_PROMOTE_FIRST_PROTECTEDWRITE, + FTRACE_PROMOTE_FIRST_EXCLUSIVE, + FTRACE_PROMOTE_OTHER_NULLLOCK, + FTRACE_PROMOTE_OTHER_CONCURRENTREAD, + FTRACE_PROMOTE_OTHER_CONCURRENTWRITE, + FTRACE_PROMOTE_OTHER_PROTECTEDREAD, + FTRACE_PROMOTE_OTHER_PROTECTEDWRITE, + FTRACE_PROMOTE_OTHER_EXCLUSIVE, + FTRACE_GLOCKQUEUE_TOTAL, + FTRACE_GLOCKQUEUE_QUEUE_TOTAL, + FTRACE_GLOCKQUEUE_QUEUE_NULLLOCK, + FTRACE_GLOCKQUEUE_QUEUE_CONCURRENTREAD, + FTRACE_GLOCKQUEUE_QUEUE_CONCURRENTWRITE, + FTRACE_GLOCKQUEUE_QUEUE_PROTECTEDREAD, + FTRACE_GLOCKQUEUE_QUEUE_PROTECTEDWRITE, + FTRACE_GLOCKQUEUE_QUEUE_EXCLUSIVE, + FTRACE_GLOCKQUEUE_DEQUEUE_TOTAL, + FTRACE_GLOCKQUEUE_DEQUEUE_NULLLOCK, + FTRACE_GLOCKQUEUE_DEQUEUE_CONCURRENTREAD, + FTRACE_GLOCKQUEUE_DEQUEUE_CONCURRENTWRITE, + FTRACE_GLOCKQUEUE_DEQUEUE_PROTECTEDREAD, + FTRACE_GLOCKQUEUE_DEQUEUE_PROTECTEDWRITE, + FTRACE_GLOCKQUEUE_DEQUEUE_EXCLUSIVE, + FTRACE_GLOCKLOCKTIME_TOTAL, + FTRACE_GLOCKLOCKTIME_TRANS, + FTRACE_GLOCKLOCKTIME_INDOE, + FTRACE_GLOCKLOCKTIME_RGRP, + FTRACE_GLOCKLOCKTIME_META, + FTRACE_GLOCKLOCKTIME_IOPEN, + FTRACE_GLOCKLOCKTIME_FLOCK, + FTRACE_GLOCKLOCKTIME_QUOTA, + FTRACE_GLOCKLOCKTIME_JOURNAL, + FTRACE_PIN_TOTAL, + FTRACE_PIN_PINTOTAL, + FTRACE_PIN_UNPINTOTAL, + FTRACE_PIN_LONGESTPINNED, + FTRACE_LOGFLUSH_TOTAL, + FTRACE_LOGBLOCKS_TOTAL, + FTRACE_AILFLUSH_TOTAL, + FTRACE_BLOCKALLOC_TOTAL, + FTRACE_BLOCKALLOC_FREE, + FTRACE_BLOCKALLOC_USED, + FTRACE_BLOCKALLOC_DINODE, + FTRACE_BLOCKALLOC_UNLINKED, + FTRACE_BMAP_TOTAL, + FTRACE_BMAP_CREATE, + FTRACE_BMAP_NOCREATE, + FTRACE_RS_TOTAL, + FTRACE_RS_DEL, + FTRACE_RS_TDEL, + FTRACE_RS_INS, + FTRACE_RS_CLM, + NUM_TRACEPOINT_STATS +}; + +struct ftrace { + uint64_t values[NUM_TRACEPOINT_STATS]; +}; + +struct ftrace_data { + dev_t dev_id; + int tracepoint; + char data[512]; +}; + +extern void ftrace_increase_num_accepted_entries(); +extern int gfs2_ftrace_fetch(int, struct ftrace *, pmAtomValue *); +extern int gfs2_refresh_ftrace_stats(pmInDom); + +extern int ftrace_get_threshold(); +extern int ftrace_set_threshold(pmValueSet *vsp); + +#endif /*FTRACE_H*/ |