#
# 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.
#
# GFS2 PMDA help file in the ASCII format
#
# lines beginning with a # are ignored
# lines beginning @ introduce a new entry of the form
#  @ metric_name oneline-text
#  help test goes
#  here over multiple lines
#  ...
#
# the metric_name is decoded against the default PMNS -- as a special case,
# a name of the form NNN.MM (for numeric NNN and MM) is interpreted as an
# instance domain identification, and the text describes the instance domain
#
# blank lines before the @ line are ignored
#
@ GFS2.0 Instance domain for mounted GFS2 filesystems

@ gfs2.glocks.total Count of total observed incore GFS2 global locks
Count of total incore GFS2 glock data structures based on parsing the contents
of the /sys/kernel/debug/gfs2/<bdev>/glocks files.

@ gfs2.glocks.shared GFS2 global locks in shared state
Count of incore GFS2 glock data structures in shared state, based on parsing
/sys/kernel/debug/gfs2/<bdev>/glocks entries with state field (s:) value "SH".

@ gfs2.glocks.unlocked GFS2 global locks in unlocked state
Count of incore GFS2 glock data structures in unlocked state, based on parsing
/sys/kernel/debug/gfs2/<bdev>/glocks entries with state field (s:) value "UN".

@ gfs2.glocks.deferred GFS2 global locks in deferred state
Count of incore GFS2 glock data structures in deferred state, based on parsing
/sys/kernel/debug/gfs2/<bdev>/glocks entries with state field (s:) value "DF".

@ gfs2.glocks.exclusive GFS2 global locks in exclusive state
Count of incore GFS2 glock data structures in exclusive state, based on parsing
/sys/kernel/debug/gfs2/<bdev>/glocks entries with state field (s:) value "EX".

# help text for gfs2.sbstats.*.* is generated dynamically

@ gfs2.glstats.total The total number of current glocks
Total count of the number of glocks which currently reside for filesystem on 
the given node. Data is based from /sys/kernel/debug/gfs2/<bdev>/glstats
counting the total number of glock entries.

@ gfs2.glstats.trans The number of transaction glocks
The count of the current number of transaction type glocks that currently exist
for the given filesystem. The data is recorded and counted from /sys/kernel/
debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.inode The number of inode (metadata and data) glocks
The count of the current number of inode metadata and data type glocks that
currently exist for the given filesystem. The data is recorded and counted from
/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.rgrp The number of resource group metadata glocks
The count of the current number of resource group metadata type glocks that
currently exist for the given filesystem. The data is recorded and counted from
/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.meta The number of superblock glocks
The count of the current number of superblock type glocks that currently exist
for the given filesystem. The data is recorded and counted from /sys/kernel/
debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.iopen The number of inode last closer detection glocks
The count of the current number of inode last closer detection type glocks that
currently exist for the given filesystem. The data is recorded and counted from
/sys/kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.flock The number of flock(2) syscall glocks
The count of the current number of flock(2) syscall type glocks that currently
exist for the given filesystem. The data is recorded and counted from /sys/
kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.quota The number of quota operations glocks
The count of the current number of quota operations type glocks that currently
exist for the given filesystem. The data is recorded and counted from /sys/
kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.glstats.journal The number of journal mutex glocks
The count of the current number of journal mutex type glocks that currently
exist for the given filesystem. The data is recorded and counted from /sys/
kernel/debug/gfs2/<bdev>glstats file entries for this type of glock.

@ gfs2.tracepoints.glock_state_change.total Total number of glock state
changes. The total number of counted glock state changes.

@ gfs2.tracepoints.glock_state_change.null_lock Number of null_lock state
changes. The total number of glock state changes to the null_lock state.

@ gfs2.tracepoints.glock_state_change.concurrent_read Number of
concurrent_read state changes. The total number of glock state changes
to current_read state.

@ gfs2.tracepoints.glock_state_change.concurrent_write Number of 
concurrent_write state changes. The total number of glock state changes
to current_write state.

@ gfs2.tracepoints.glock_state_change.protected_read Number of 
protected_read state changes. The total number of glock state changes to
protected_read state.

@ gfs2.tracepoints.glock_state_change.protected_write Number of
protected_write state changes. The total number of glock state changes to
protected_write state.

@ gfs2.tracepoints.glock_state_change.exclusive Number of exclusive state
changes. The total number of glock state changes to exclusive state.

@ gfs2.tracepoints.glock_state_change.glocks.changed_target Number of
changed locks. The number of state changes that achieved their expected
state change.

@ gfs2.tracepoints.glock_state_change.glocks.missed_target Number of 
missed locks. The number of state changes that did not achieve their
expected state change.

@ gfs2.tracepoints.glock_put.total Total number of glocks changed.
The total number of glocks that have been changed.

@ gfs2.tracepoints.glock_put.null_lock Number of released locks.
The number of glocks put into the null_lock state.

@ gfs2.tracepoints.glock_put.concurrent_read Number of glocks put
in concurrent_read. The number of glocks put into the concurrent_read
state.

@ gfs2.tracepoints.glock_put.concurrent_write Number of glocks put
in concurrent_write. The number of glocks put into the concurrent_write
state.

@ gfs2.tracepoints.glock_put.protected_read Number of glocks put
in protected_read. The number of glocks put into the protected_read
state.

@ gfs2.tracepoints.glock_put.protected_write Number of glocks put
in protected_wirte. The number of glocks put into the protected_write
state.

@ gfs2.tracepoints.glock_put.exclusive Number of glocks put
in exclusive. The number of glocks put into the exclusive
state.

@ gfs2.tracepoints.demote_rq.total Total number of lock demote requests.
The total number of lock demotion requests.

@ gfs2.tracepoints.demote_rq.null_lock Number of lock demote requests to
null_lock. The total number of lock demotion requests to the null_lock state.

@ gfs2.tracepoints.demote_rq.concurrent_read Number of lock demote requests to
concurrent_read. The total number of lock demotion requests to the 
concurrent_read state.

@ gfs2.tracepoints.demote_rq.concurrent_write Number of lock demote requests to
concurrent_write. The total number of lock demotion requests to the 
concurrent_write state.

@ gfs2.tracepoints.demote_rq.protected_read Number of lock demote requests to
protected_read. The total number of lock demotion requests to the 
protected_read state.

@ gfs2.tracepoints.demote_rq.protected_write Number of lock demote requests to
protected_write. The total number of lock demotion requests to the 
protected_write state.

@ gfs2.tracepoints.demote_rq.exclusive Number of lock demote requests to
exclusive. The total number of lock demotion requests to the 
exclusive state.

@gfs2.tracepoints.demote_rq.requested.remote Number of demote requests (remote).
The total number of demote requests which were requested by a remote node of
the cluster.

@gfs2.tracepoints.demote_rq.requested.local Number of demote requests (local).
The total number of demote requests which were requested by a local node of
the cluster

@ gfs2.tracepoints.promote.total Total number of lock state. The total number
of lock state.

@ gfs2.tracepoints.promote.first.null_lock Number of lock state to null_lock.
The total number of successful first time lock state to the null_lock state.

@ gfs2.tracepoints.promote.first.concurrent_read Number of lock state to 
concurrent_read. The total number of successful first time lock state to the 
concurrent_read state.

@ gfs2.tracepoints.promote.first.concurrent_write Number of lock state to 
concurrent_write. The total number of successful first time lock state to the 
concurrent_write state.

@ gfs2.tracepoints.promote.first.protected_read Number of lock state to 
protected_read. The total number of successful first time lock state to the 
protected_read state.

@ gfs2.tracepoints.promote.first.protected_write Number of lock state to 
protected_write. The total number of successful first time lock state to the 
protected_write state.

@ gfs2.tracepoints.promote.first.exclusive Number of lock state to 
exclusive. The total number of successful first time lock state to the 
exclusive state.

@ gfs2.tracepoints.promote.other.null_lock Number of lock state to null_lock.
The total number of successful other time lock state to the null_lock state.

@ gfs2.tracepoints.promote.other.concurrent_read Number of lock state to 
concurrent_read. The total number of successful other time lock state to the 
concurrent_read state.

@ gfs2.tracepoints.promote.other.concurrent_write Number of lock state to 
concurrent_write. The total number of successful other time lock state to the 
concurrent_write state.

@ gfs2.tracepoints.promote.other.protected_read Number of lock state to 
protected_read. The total number of successful other time lock state to the 
protected_read state.

@ gfs2.tracepoints.promote.other.protected_write Number of lock state to 
protected_write. The total number of successful other time lock state to the 
protected_write state.

@ gfs2.tracepoints.promote.other.exclusive Number of lock state to 
exclusive. The total number of successful other time lock state to the 
exclusive state.

@ gfs2.tracepoints.glock_queue.total Total numbe rof queued and dequeued
requests. The total number of both queued and dequeued requests.

@ gfs2.tracepoints.glock_queue.queue.total Total number of queued lock requests.
The total number of queued lock requests.

@ gfs2.tracepoints.glock_queue.queue.null_lock Number of null_lock requests. The
number of lock requests to the null_lock state.

@ gfs2.tracepoints.glock_queue.queue.concurrent_read Number of concurrent_read 
requests. The number of lock requests to the concurrent_read state.

@ gfs2.tracepoints.glock_queue.queue.concurrent_write Number of concurrent_write 
requests. The number of lock requests to the concurrent_write state.

@ gfs2.tracepoints.glock_queue.queue.protected_read Number of protected_read 
requests. The number of lock requests to the protected_read state.

@ gfs2.tracepoints.glock_queue.queue.protected_write Number of protected_write 
requests. The number of lock requests to the protected_write state.

@ gfs2.tracepoints.glock_queue.queue.exclusive Number of exclusive 
requests. The number of lock requests to the exclusive state.

@ gfs2.tracepoints.glock_queue.dequeue.total Total number of dequeued lock requests.
The total number of dequeued lock requests.

@ gfs2.tracepoints.glock_queue.dequeue.null_lock Number of null_lock requests. The
number of lock requests to the null_lock state.

@ gfs2.tracepoints.glock_queue.dequeue.concurrent_read Number of concurrent_read 
requests. The number of lock requests to the concurrent_read state.

@ gfs2.tracepoints.glock_queue.dequeue.concurrent_write Number of concurrent_write 
requests. The number of lock requests to the concurrent_write state.

@ gfs2.tracepoints.glock_queue.dequeue.protected_read Number of protected_read 
requests. The number of lock requests to the protected_read state.

@ gfs2.tracepoints.glock_queue.dequeue.protected_write Number of protected_write 
requests. The number of lock requests to the protected_write state.

@ gfs2.tracepoints.glock_queue.dequeue.exclusive Number of exclusive 
requests. The number of lock requests to the exclusive state.

@ gfs2.tracepoints.glock_lock_time.total Total number of lock updates.
The total number of lock updates.

@ gfs2.tracepoints.glock_lock_time.trans Number of transaction lock updates.
The number of updates for transaction based glocks.

@ gfs2.tracepoints.glock_lock_time.inode Number of inode lock updates.
The number of updates for inode based glocks.

@ gfs2.tracepoints.glock_lock_time.rgrp Number of resource group lock updates.
The number of updates for resource group based glocks.

@ gfs2.tracepoints.glock_lock_time.meta Number of metadata lock updates.
The number of updates for metadata based glocks.

@ gfs2.tracepoints.glock_lock_time.iopen Number of iopen lock updates.
The number of updates for iopen based glocks.

@ gfs2.tracepoints.glock_lock_time.flock Number of flock lock updates.
The number of updates for flock based glocks.

@ gfs2.tracepoints.glock_lock_time.quota Number of quota lock updates.
The number of updates for quota based glocks.

@ gfs2.tracepoints.glock_lock_time.journal Number of journal lock updates.
The number of updates for journal based glocks.

@ gfs2.tracepoints.pin.total Total number of Pin/Unpin requests. The total
number of requests to pin/unpin blocks on the log.

@ gfs2.tracepoints.pin.pin_total Number of pin requests. The total number of
requests to pin blocks on the log.

@ gfs2.tracepoints.pin.unpin_total Number of unpin requests. The total number
requests to unpin blocks on the log.

@ gfs2.tracepoints.pin.longest_pinned Longest pinned. The longest pinned
inode or resource group log block

@ gfs2.tracepoints.log_flush.total Total log flushes. The total number of
log flushes observed

@ gfs2.tracepoints.log_block.total Total log blocks. The total number of
blocks placed upon the log.

@ gfs2.tracepoints.ail_flush.total Total AIL flushes. The total number of
flushes back to the AIL.

@ gfs2.tracepoints.block_alloc.total Total blocks allocated/deallocated. 
The total number of allocated/freed blocks this call.

@ gfs2.tracepoints.block_alloc.free Freed blocks. The number of blocks
freed. 

@ gfs2.tracepoints.block_alloc.used Used blocks. The number of blocks
used.

@ gfs2.tracepoints.block_alloc.dinode Dinode blocks. The number of blocks
used for dinode.

@ gfs2.tracepoints.block_alloc.unlinked Unlinked blocks. The number of
unlinked blocks.

@ gfs2.tracepoints.bmap.total Total number of bmap allocations. The total
number of bmap allocations.

@ gfs2.tracepoints.bmap.create Number of create bmap allocations. The number
of create bmap allocations.

@ gfs2.tracepoints.bmap.nocreate Number of nocreate bmap allocations. The
number of nocreate bmap allocations.

@ gfs2.tracepoints.rs.total Total multi-block allocations. The total number
of multi-block allocations. 

@ gfs2.tracepoints.rs.del Number of resource group delete. The total number of
resource group delete calls.

@ gfs2.tracepoints.rs.tdel Number of resource group tree delete. The total number
of resource group tree delete calls.

@ gfs2.tracepoints.rs.ins Number of resource group insert. The total number of
resource group insert calls.

@ gfs2.tracepoints.rs.clm Number of resource group claims. The total number of 
resource group claim calls.

# help text for gfs2.worst_glock.*.* is generated dynamically

@ gfs2.latency.grant.all Average time in ms for all states. The total average
latency time in ms for all lock states for grants.

@ gfs2.latency.grant.null_lock Average time in ms to null lock state. The
total average latency time in ms to change to null lock state for grants.

@ gfs2.latency.grant.concurrent_read Average time in ms to concurrent read
lock state. The total average latency time in ms to change to concurrent read
lock state for grants.

@ gfs2.latency.grant.concurrent_write Average time in ms to concurrent write
lock state. The total average latency time in ms to change to concurrent write
lock state for grants.

@ gfs2.latency.grant.protected_read Average time in ms to protected read
lock state. The total average latency time in ms to change to protected read
lock state for grants.

@ gfs2.latency.grant.protected_write Average time in ms to protected write
lock state. The total average latency time in ms to change to protected write
lock state for grants.

@ gfs2.latency.grant.exclusive Average time in ms to exclusive lock state. The
total average latency time in ms to change to exclusive lock state for grants.

@ gfs2.latency.demote.all Average time in ms for all states. The total average
latency time in ms for all lock states for demotes.

@ gfs2.latency.demote.null_lock Average time in ms to null lock state. The
total average latency time in ms to change to null lock state for demotes.

@ gfs2.latency.demote.concurrent_read Average time in ms to concurrent read
lock state. The total average latency time in ms to change to concurrent read
lock state for demotes.

@ gfs2.latency.demote.concurrent_write Average time in ms to concurrent write
lock state. The total average latency time in ms to change to concurrent write
lock state for demotes.

@ gfs2.latency.demote.protected_read Average time in ms to protected read
lock state. The total average latency time in ms to change to protected read
lock state for demotes.

@ gfs2.latency.demote.protected_write Average time in ms to protected write
lock state. The total average latency time in ms to change to protected write
lock state for demotes.

@ gfs2.latency.demote.exclusive Average time in ms to exclusive lock state. 
The total average latency time in ms to change to exclusive lock state for
demotes.

@ gfs2.latency.queue.all Average time in ms for all states. The total average
latency time in ms for all lock states for queues.

@ gfs2.latency.queue.null_lock Average time in ms to null lock state. The
total average latency time in ms to change to null lock state for queues.

@ gfs2.latency.queue.concurrent_read Average time in ms to concurrent read
lock state. The total average latency time in ms to change to concurrent read
lock state for queues.

@ gfs2.latency.queue.concurrent_write Average time in ms to concurrent write
lock state. The total average latency time in ms to change to concurrent write
lock state for queues.

@ gfs2.latency.queue.protected_read Average time in ms to protected read
lock state. The total average latency time in ms to change to protected read
lock state for queues.

@ gfs2.latency.queue.protected_write Average time in ms to protected write
lock state. The total average latency time in ms to change to protected write
lock state for queues.

@ gfs2.latency.queue.exclusive Average time in ms to exclusive lock state.
The total average latency time in ms to change to exclusive lock state for 
queues.

@ gfs2.control.tracepoints.all Indication whether glock statistics are enabled
The gfs2 tracepoint statistics can be manually controlled using pmstore
gfs2.control.tracepoints.all 0 [off] or 1 [on]. Setting the value of the metric
controls the behavior of the PMDA to whether it tries to collect from tracepoint
metrics or not.

@ gfs2.control.tracepoints.glock_state_change Indication whether 
glock_state_change glock stats are enabled. The gfs2 tracepoint statistics
can be manually controlled using pmstore
gfs2.control.tracepoints.glock_state_change 0 [off] or 1 [on]. Setting the
value of the metric controls the behavior of the PMDA to whether it tries to
collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.glock_put Indication whether glock_put glock stats
are enabled. The gfs2 tracepoint statistics can be manually controlled using
pmstore gfs2.control.tracepoints.glock_put 0 [off] or 1 [on]. Setting the value
of the metric controls the behavior of the PMDA to whether it tries to collect 
from tracepoint metrics or not.

@ gfs2.control.tracepoints.demote_rq Indication whether glock_demote_rq glock
stats are enabled. The gfs2 tracepoint statistics can be manually controlled
using pmstore gfs2.control.tracepoints.glock_demote_rq 0 [off] or 1 [on].
Setting the value of the metric controls the behavior of the PMDA to whether
it tries to collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.promote Indication whether glock_promote glock stats
are enabled. The gfs2 tracepoint statistics can be manually controlled using
pmstore gfs2.control.tracepoints.glock_promte 0 [off] or 1 [on]. Setting the 
value of the metric controls the behavior of the PMDA to whether it tries to
collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.glock_queue Indication whether glock_queue glock
stats are enabled. The gfs2 tracepoint statistics can be manually controlled
using pmstore gfs2.control.tracepoints.glock_queue 0 [off] or 1 [on]. Setting
the value of the metric controls the behavior of the PMDA to whether it tries
to collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.glock_lock_time Indication whether glock_lock_time
glock stats are enabled. The gfs2 tracepoint statistics can be manually
controlled using pmstore gfs2.control.tracepoints.glock_lock_time 0 [off] or 1
[on]. Setting the value of the metric controls the behavior of the PMDA to
whether it tries to collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.pin Indication whether pin glock stats are enabled. 
The gfs2 tracepoint statistics can be manually controlled using pmstore 
gfs2.control.tracepoints.pin 0 [off] or 1 [on]. Setting the value of the
metric controls the behavior of the PMDA to whether it tries to collect from
tracepoint metrics or not.

@ gfs2.control.tracepoints.log_flush Indication whether log_flush glock stats
are enabled. The gfs2 tracepoint statistics can be manually controlled using
pmstore gfs2.control.tracepoints.log_flush 0 [off] or 1 [on]. Setting the
value of the metric controls the behavior of the PMDA to whether it tries to
collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.log_blocks Indication whether log_blocks glock stats
are enabled. The gfs2 tracepoint statistics can be manually controlled using
pmstore gfs2.control.tracepoints.log_blocks 0 [off] or 1 [on]. Setting the
value of the metric controls the behavior of the PMDA to whether it tries to
collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.ail_flush Indication whether ail_flush glock stats
are enabled. The gfs2 tracepoint statistics can be manually controlled using
pmstore gfs2.control.tracepoints.ail_flush 0 [off] or 1 [on]. Setting the value
of the metric controls the behavior of the PMDA to whether it tries to collect
from tracepoint metrics or not.

@ gfs2.control.tracepoints.block_alloc Indication whether block_alloc glock
stats are enabled. The gfs2 tracepoint statistics can be manually controlled 
using pmstore gfs2.control.tracepoints.block_alloc 0 [off] or 1 [on]. Setting
the value of the metric controls the behavior of the PMDA to whether it tries
to collect from tracepoint metrics or not.

@ gfs2.control.tracepoints.bmap Indication whether bmap glock stats are enabled.
The gfs2 tracepoint statistics can be manually controlled using pmstore 
gfs2.control.tracepoints.bmap 0 [off] or 1 [on]. Setting the value of the 
metric controls the behavior of the PMDA to whether it tries to collect from
tracepoint metrics or not.

@ gfs2.control.tracepoints.rs Indication whether rs glock stats are enabled.
The gfs2 tracepoint statistics can be manually controlled using pmstore 
gfs2.control.tracepoints.rs 0 [off] or 1 [on]. Setting the value of the metric
controls the behavior of the PMDA to whether it tries to collect from
tracepoint metrics or not.

@ gfs2.control.buffer_size_kb Sets the buffer size for trace_pipe (per cpu).
The size of the trace_pipe buffer can be controlled with this metrics, it
allows the increase of the trace_pipe buffer to 128MB (131072KB) per cpu
on the system. It is useful to increase the size of the buffer when there
is expected to be heavy load on the file system in order to reduce the
risk of overwritten entries in the trace_pipe before they are read (default
value is 32MB (32768KB).

@ gfs2.control.global_tracing Indication whether global tracing is enabled.
The global tracing can be controlled using pmstore gfs2.control.global_tracing
0 [off] or 1 [on]. This is required to be on for most of the gfs2 metrics to
function.

@ gfs2.control.worst_glock Indication whether gfs2.glock_lock_time statistics 
are enabled. The gfs2.glock_lock_time statistics can be manually controlled
using pmstore gfs2.control.glock_lock_time 0 [off] or 1 [on]. Setting the value
of the metric controls the behavior of the PMDA to whether it tries to collect
the lock_time metrics or not. The machine must have the gfs2 trace-points
available for the glock_lock_time based metrics to function.

@ gfs2.control.latency Indication whether gfs2.latency statistics are enabled.
The gfs2.latency statistics can be manually controlled using pmstore
gfs2.control.latency 0 [off] or 1 [on]. Setting the value of the metric
controls the behaviour of the PMDA to whether it tries to collect the latency
metrics or not. The machice must have the gfs2 trace-points available for the
latency metrics to function.

@ gfs2.control.glock_threshold Threshold for maximum number of glocks accepted
per fetch. The number of glocks that will be processed and accepted over all
ftrace read trace statistics. This number can be manually altered using pmstore
in order to tailor the number of glocks processed. This value must be positive.
