Runtime Stats: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
THIS PAGE IS NOT READY - I SHOULD RECHECK FIELDS ORDER FROM KERNEL SOURCES, CUZ http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsmisc/xfs_stats.pl?rev=1.7;content-type=text%2Fplain does some reordering | |||
This page intends to describe info available from /proc/fs/xfs/stat | |||
__TOC__ | |||
== Overview == | |||
blabla | |||
== output example == | |||
for example: | |||
<pre> | <pre> | ||
extent_alloc 4260849 125170297 4618726 131131897 | extent_alloc 4260849 125170297 4618726 131131897 | ||
Line 24: | Line 36: | ||
{| style="width:75%;white-space:nowrap; text-align:center;" border="1" | {| style="width:75%;white-space:nowrap; text-align:center;" border="1" | ||
|- | |- | ||
| extent_alloc - Extent Allocation | | [[#extent_alloc|extent_alloc - Extent Allocation]] | ||
| xs_allocx | | xs_allocx | ||
| xs_allocb | | xs_allocb | ||
Line 30: | Line 42: | ||
| xs_freeb | | xs_freeb | ||
|- | |- | ||
| abt - Allocation Btree | | [[#abt|abt - Allocation Btree]] | ||
| xs_abt_lookup | | xs_abt_lookup | ||
| xs_abt_compare | | xs_abt_compare | ||
Line 36: | Line 48: | ||
| xs_abt_delrec | | xs_abt_delrec | ||
|- | |- | ||
| blk_map - Block Mapping | | [[#blk_map|blk_map - Block Mapping]] | ||
| xs_blk_mapr | | xs_blk_mapr | ||
| xs_blk_mapw | | xs_blk_mapw | ||
Line 45: | Line 57: | ||
| xs_cmp_exlist | | xs_cmp_exlist | ||
|- | |- | ||
| bmbt - Block Map Btree | | [[#bmbt|bmbt - Block Map Btree]] | ||
| xs_bmbt_lookup | | xs_bmbt_lookup | ||
| xs_bmbt_compare | | xs_bmbt_compare | ||
| xs_bmbt_insrec | | xs_bmbt_insrec | ||
| xs_bmbt_delrec | |||
|- | |- | ||
| dir - Directory Operations | | [[#dir|dir - Directory Operations]] | ||
| xs_dir_lookup | | xs_dir_lookup | ||
| xs_dir_create | | xs_dir_create | ||
Line 56: | Line 69: | ||
| xs_dir_getdents | | xs_dir_getdents | ||
|- | |- | ||
| trans - Transactions | | [[#trans|trans - Transactions]] | ||
| xs_trans_sync. | | xs_trans_sync. | ||
| xs_trans_async | | xs_trans_async | ||
Line 137: | Line 150: | ||
|} | |} | ||
== Fields description: == | |||
=== extent_alloc - Extent Allocation === | |||
<span id="extent_alloc"> | |||
xs_allocx (xfs.allocs.alloc_extent) - Number of file system extents allocated over all XFS filesystems. <br> | |||
xs_allocb (xfs.allocs.alloc_block) - Number of file system blocks allocated over all XFS filesystems. <br> | |||
xs_freex (xfs.allocs.free_extent) - Number of file system extents freed over all XFS filesystems. <br> | |||
xs_freeb (xfs.allocs.free_block) - Number of file system blocks freed over all XFS filesystems. <br> | |||
=== abt - Allocation Btree === | |||
<span id="abt"> | |||
xs_abt_lookup (xfs.alloc_btree.lookup) - Number of lookup operations in XFS filesystem allocation btrees. <br> | |||
xs_abt_compare (xfs.alloc_btree.compare) - Number of compares in XFS filesystem allocation btree lookups. <br> | |||
xs_abt_insrec (xfs.alloc_btree.insrec) - Number of extent records inserted into XFS filesystem allocation btrees. <br> | |||
xs_abt_delrec (xfs.alloc_btree.delrec) - Number of extent records deleted from XFS filesystem allocation btrees. <br> | |||
=== blk_map - Block Mapping === | |||
<span id="blk_map"> | |||
xs_blk_mapr (xfs.block_map.read_ops) - Number of block map for read operations performed on XFS files. <br> | |||
xs_blk_mapw (xfs.block_map.write_ops) - Number of block map for write operations performed on XFS files. <br> | |||
xs_blk_unmap (xfs.block_map.unmap) - Number of block unmap (delete) operations performed on XFS files. <br> | |||
xs_add_exlist (xfs.block_map.add_exlist) - Number of extent list insertion operations for XFS files. <br> | |||
xs_del_exlist (xfs.block_map.del_exlist) - Number of extent list deletion operations for XFS files. <br> | |||
xs_look_exlist (xfs.block_map.look_exlist) - Number of extent list lookup operations for XFS files. <br> | |||
xs_cmp_exlist (xfs.block_map.cmp_exlist) - Number of extent list comparisons in XFS extent list lookups. <br> | |||
=== bmbt - Block Map Btree === | |||
<span id="bmbt"> | |||
xs_bmbt_lookup (xfs.bmap_btree.lookup) - Number of block map btree lookup operations on XFS files. <br> | |||
xs_bmbt_compare (xfs.bmap_btree.compare) - Number of block map btree compare operations in XFS block map lookups. <br> | |||
xs_bmbt_insrec (xfs.bmap_btree.insrec) - Number of block map btree records inserted for XFS files. <br> | |||
xs_bmbt_delrec (xfs.bmap_btree.delrec) - Number of block map btree records deleted for XFS files. <br> | |||
=== dir - Directory Operations === | |||
<span id="dir"> | |||
xs_dir_lookup (xfs.dir_ops.lookup) | |||
This is a count of the number of file name directory lookups in XFS filesystems. It counts only those lookups which miss in the operating system's | This is a count of the number of file name directory lookups in XFS filesystems. It counts only those lookups which miss in the operating system's | ||
directory name lookup cache and must search the real directory structure for the name in question. The count is incremented once for each level | directory name lookup cache and must search the real directory structure for the name in question. The count is incremented once for each level | ||
of a pathname search that results in a directory lookup. | of a pathname search that results in a directory lookup. | ||
xs_dir_create (xfs.dir_ops.create) | |||
This is the number of times a new directory entry was created in XFS filesystems. Each time that a new file, directory, link, symbolic link, or | This is the number of times a new directory entry was created in XFS filesystems. Each time that a new file, directory, link, symbolic link, or | ||
special file is created in the directory hierarchy the count is incremented. | special file is created in the directory hierarchy the count is incremented. | ||
xs_dir_remove (xfs.dir_ops.remove) | |||
This is the number of times an existing directory entry was removed in XFS filesystems. Each time that a file, directory, link, symbolic link, or | This is the number of times an existing directory entry was removed in XFS filesystems. Each time that a file, directory, link, symbolic link, or | ||
special file is removed from the directory hierarchy the count is incremented. | special file is removed from the directory hierarchy the count is incremented. | ||
xs_dir_getdents (xfs.dir_ops.getdents) | |||
This is the number of times the XFS directory getdents operation was performed. The getdents operation is used by programs to read the contents of | This is the number of times the XFS directory getdents operation was performed. The getdents operation is used by programs to read the contents of | ||
directories in a file system independent fashion. This count corresponds exactly to the number of times the getdents(2) system call was success- | directories in a file system independent fashion. This count corresponds exactly to the number of times the getdents(2) system call was success- | ||
fully used on an XFS directory. | fully used on an XFS directory. | ||
=== trans - Transactions === | |||
<span id="trans"> | |||
xs_trans_sync (xfs.transactions.sync) | |||
This is the number of meta-data transactions which waited to be committed to the on-disk log before allowing the process performing the transac- | This is the number of meta-data transactions which waited to be committed to the on-disk log before allowing the process performing the transac- | ||
tion to continue. These transactions are slower and more expensive than asynchronous transactions, because they force the in memory log buffers to | tion to continue. These transactions are slower and more expensive than asynchronous transactions, because they force the in memory log buffers to | ||
be forced to disk more often and they wait for the completion of the log buffer writes. Synchronous transactions include file truncations and all | be forced to disk more often and they wait for the completion of the log buffer writes. Synchronous transactions include file truncations and all | ||
directory updates when the file system is mounted with the 'wsync' option. | directory updates when the file system is mounted with the 'wsync' option. | ||
xs_trans_async (xfs.transactions.async) | |||
This is the number of meta-data transactions which did not wait to be committed to the on-disk log before allowing the process performing the | This is the number of meta-data transactions which did not wait to be committed to the on-disk log before allowing the process performing the | ||
transaction to continue. These transactions are faster and more efficient than synchronous transactions, because they commit their data to the in | transaction to continue. These transactions are faster and more efficient than synchronous transactions, because they commit their data to the in | ||
memory log buffers without forcing those buffers to be written to disk. This allows multiple asynchronous transactions to be committed to disk in | memory log buffers without forcing those buffers to be written to disk. This allows multiple asynchronous transactions to be committed to disk in | ||
a single log buffer write. Most transactions used in XFS file systems are asynchronous. | a single log buffer write. Most transactions used in XFS file systems are asynchronous. | ||
xs_trans_empty (xfs.transactions.empty) | |||
This is the number of meta-data transactions which did not actually change anything. These are transactions which were started for some purpose, | This is the number of meta-data transactions which did not actually change anything. These are transactions which were started for some purpose, | ||
but in the end it turned out that no change was necessary. | but in the end it turned out that no change was necessary. | ||
=== ig - Inode Operations === | |||
<span id="ig"> | |||
xs_ig_attempts (xfs.inode_ops.ig_attempts) | |||
This is the number of times the operating system looked for an XFS inode in the inode cache. Whether the inode was found in the cache or needed to | This is the number of times the operating system looked for an XFS inode in the inode cache. Whether the inode was found in the cache or needed to | ||
be read in from the disk is not indicated here, but this can be computed from the ig_found and ig_missed counts. | be read in from the disk is not indicated here, but this can be computed from the ig_found and ig_missed counts. | ||
xs_ig_found (xfs.inode_ops.ig_found) | |||
This is the number of times the operating system looked for an XFS inode in the inode cache and found it. The closer this count is to the | This is the number of times the operating system looked for an XFS inode in the inode cache and found it. The closer this count is to the | ||
ig_attempts count the better the inode cache is performing. | ig_attempts count the better the inode cache is performing. | ||
xs_ig_frecycle (xfs.inode_ops.ig_frecycle) | |||
This is the number of times the operating system looked for an XFS inode in the inode cache and saw that it was there but was unable to use the in | This is the number of times the operating system looked for an XFS inode in the inode cache and saw that it was there but was unable to use the in | ||
memory inode because it was being recycled by another process. | memory inode because it was being recycled by another process. | ||
xs_ig_missed (xfs.inode_ops.ig_missed) | |||
This is the number of times the operating system looked for an XFS inode in the inode cache and the inode was not there. The further this count is | This is the number of times the operating system looked for an XFS inode in the inode cache and the inode was not there. The further this count is | ||
from the ig_attempts count the better. | from the ig_attempts count the better. | ||
xs_ig_dup (xfs.inode_ops.ig_dup) | |||
This is the number of times the operating system looked for an XFS inode in the inode cache and found that it was not there but upon attempting to | This is the number of times the operating system looked for an XFS inode in the inode cache and found that it was not there but upon attempting to | ||
add the inode to the cache found that another process had already inserted it. | add the inode to the cache found that another process had already inserted it. | ||
xs_ig_reclaims (xfs.inode_ops.ig_reclaims) | |||
This is the number of times the operating system recycled an XFS inode from the inode cache in order to use the memory for that inode for another | This is the number of times the operating system recycled an XFS inode from the inode cache in order to use the memory for that inode for another | ||
purpose. Inodes are recycled in order to keep the inode cache from growing without bound. If the reclaim rate is high it may be beneficial to | purpose. Inodes are recycled in order to keep the inode cache from growing without bound. If the reclaim rate is high it may be beneficial to | ||
raise the vnode_free_ratio kernel tunable variable to increase the size of the inode cache. | raise the vnode_free_ratio kernel tunable variable to increase the size of the inode cache. | ||
xs_ig_attrchg (xfs.inode_ops.ig_attrchg) | |||
This is the number of times the operating system explicitly changed the attributes of an XFS inode. For example, this could be to change the | This is the number of times the operating system explicitly changed the attributes of an XFS inode. For example, this could be to change the | ||
inode's owner, the inode's size, or the inode's timestamps. | inode's owner, the inode's size, or the inode's timestamps. | ||
=== log - Log Operations === | |||
<span id="log"> | |||
xs_log_writes (xfs.log.writes) | |||
This variable counts the number of log buffer writes going to the physical log partitions of all XFS filesystems. Log data traffic is proportional | This variable counts the number of log buffer writes going to the physical log partitions of all XFS filesystems. Log data traffic is proportional | ||
to the level of meta-data updating. Log buffer writes get generated when they fill up or external syncs occur. | to the level of meta-data updating. Log buffer writes get generated when they fill up or external syncs occur. | ||
xs_log_blocks (xfs.log.blocks) | |||
This variable counts (in 512-byte units) the information being written to the physical log partitions of all XFS filesystems. Log data traffic is | This variable counts (in 512-byte units) the information being written to the physical log partitions of all XFS filesystems. Log data traffic is | ||
proportional to the level of meta-data updating. The rate with which log data gets written depends on the size of internal log buffers and disk | proportional to the level of meta-data updating. The rate with which log data gets written depends on the size of internal log buffers and disk | ||
write speed. Therefore, filesystems with very high meta-data updating may need to stripe the log partition or put the log partition on a separate | write speed. Therefore, filesystems with very high meta-data updating may need to stripe the log partition or put the log partition on a separate | ||
drive. | drive. | ||
xs_log_noiclogs (xfs.log.noiclogs) | |||
This variable keeps track of times when a logged transaction can not get any log buffer space. When this occurs, all of the internal log buffers | This variable keeps track of times when a logged transaction can not get any log buffer space. When this occurs, all of the internal log buffers | ||
are busy flushing their data to the physical on-disk log. | are busy flushing their data to the physical on-disk log. | ||
xs_log_force (xfs.log.force) | |||
The number of times the in-core log is forced to disk. It is equivalent to the number of successful calls to the function xfs_log_force(). | The number of times the in-core log is forced to disk. It is equivalent to the number of successful calls to the function xfs_log_force(). | ||
xs_log_force_sleep (xfs.log.force_sleep) | |||
Value exported from the xs_log_force_sleep field of struct xfsstats. | Value exported from the xs_log_force_sleep field of struct xfsstats. | ||
=== push_ail - Tail-Pushing Stats === | |||
<span id="push_ail"> | |||
xs_try_logspace (xfs.log_tail.try_logspace) - Value from the xs_try_logspace field of struct xfsstats. | |||
xs_sleep_logspace (xfs.log_tail.sleep_logspace) - Value from the xs_sleep_logspace field of struct xfsstats. | |||
xs_push_ail (xfs.log_tail.push_ail.pushes) - The number of times the tail of the AIL is moved forward. It is equivalent to the number of successful calls to the function xfs_trans_push_ail(). | |||
xs_push_ail_success (xfs.log_tail.push_ail.success) - Value from xs_push_ail_success field of struct xfsstats. | |||
xs_push_ail_pushbuf (xfs.log_tail.push_ail.pushbuf) - Value from xs_push_ail_pushbuf field of struct xfsstats. | |||
xs_push_ail_pinned (xfs.log_tail.push_ail.pinned) - Value from xs_push_ail_pinned field of struct xfsstats. | |||
xs_push_ail_locked (xfs.log_tail.push_ail.locked) - Value from xs_push_ail_locked field of struct xfsstats. | |||
xs_push_ail_flushing (xfs.log_tail.push_ail.flushing) - Value from xs_push_ail_flushing field of struct xfsstats. | |||
xs_push_ail_restarts (xfs.log_tail.push_ail.restarts) - Value from xs_push_ail_restarts field of struct xfsstats. | |||
xs_push_ail_flush (xfs.log_tail.push_ail.flush) - Value from xs_push_ail_flush field of struct xfsstats. | |||
=== xstrat - IoMap Write Convert === | |||
<span id="xstrat"> | |||
xs_xstrat_quick (xfs.xstrat.quick) | |||
This is the number of buffers flushed out by the XFS flushing daemons which are written to contiguous space on disk. The buffers handled by the | This is the number of buffers flushed out by the XFS flushing daemons which are written to contiguous space on disk. The buffers handled by the | ||
XFS daemons are delayed allocation buffers, so this count gives an indication of the success of the XFS daemons in allocating contiguous disk | XFS daemons are delayed allocation buffers, so this count gives an indication of the success of the XFS daemons in allocating contiguous disk | ||
space for the data being flushed to disk. | space for the data being flushed to disk. | ||
xs_xstrat_split (xfs.xstrat.split) | |||
This is the number of buffers flushed out by the XFS flushing daemons which are written to non-contiguous space on disk. The buffers handled by | This is the number of buffers flushed out by the XFS flushing daemons which are written to non-contiguous space on disk. The buffers handled by | ||
the XFS daemons are delayed allocation buffers, so this count gives an indication of the failure of the XFS daemons in allocating contiguous disk | the XFS daemons are delayed allocation buffers, so this count gives an indication of the failure of the XFS daemons in allocating contiguous disk | ||
space for the data being flushed to disk. Large values in this counter indicate that the file system has become fragmented. | space for the data being flushed to disk. Large values in this counter indicate that the file system has become fragmented. | ||
NOTES | NOTES |
Revision as of 15:01, 8 June 2009
THIS PAGE IS NOT READY - I SHOULD RECHECK FIELDS ORDER FROM KERNEL SOURCES, CUZ http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsmisc/xfs_stats.pl?rev=1.7;content-type=text%2Fplain does some reordering
This page intends to describe info available from /proc/fs/xfs/stat
Overview
blabla
output example
for example:
extent_alloc 4260849 125170297 4618726 131131897 abt 29491162 337391304 11257328 11133039 blk_map 381213360 115456141 10903633 69612322 7448401 507596777 0 bmbt 771328 6236258 602114 86646 dir 21253907 6921870 6969079 779205554 trans 126946406 38184616 6342392 ig 17754368 2019571 102 15734797 0 15672217 3962470 log 129491915 3992515264 458018 153771989 127040250 push_ail 171473415 0 6896837 3324292 8069877 65884 1289485 0 22535 7337 xstrat 4140059 0 rw 1595677950 1046884251 attr 194724197 0 7 0 icluster 20772185 2488203 13909520 vnodes 62578 15959666 0 0 15897088 15897088 15897088 0 buf 2090581631 1972536890 118044776 225145 9486625 0 0 2000152616 809762 xpc 6908312903680 67735504884757 19760115252482 debug 0
Values shown above meanings presented as table:
extent_alloc - Extent Allocation | xs_allocx | xs_allocb | xs_freex | xs_freeb | ||||||
abt - Allocation Btree | xs_abt_lookup | xs_abt_compare | xs_abt_insrec | xs_abt_delrec | ||||||
blk_map - Block Mapping | xs_blk_mapr | xs_blk_mapw | xs_blk_unmap | xs_add_exlist | xs_del_exlist | xs_look_exlist | xs_cmp_exlist | |||
bmbt - Block Map Btree | xs_bmbt_lookup | xs_bmbt_compare | xs_bmbt_insrec | xs_bmbt_delrec | ||||||
dir - Directory Operations | xs_dir_lookup | xs_dir_create | xs_dir_remove | xs_dir_getdents | ||||||
trans - Transactions | xs_trans_sync. | xs_trans_async | xs_trans_empty | |||||||
ig - Inode Operations | xs_ig_attempts | xs_ig_found | xs_ig_frecycle | xs_ig_missed | xs_ig_dup | xs_ig_reclaims | xs_ig_attrchg | |||
log - Log Operations | xs_log_writes | xs_log_blocks | xs_log_noiclogs | xs_log_force | xs_log_force_sleep | |||||
push_ail - Tail-Pushing Stats | xs_try_logspace | xs_sleep_logspace | xs_push_ail | xs_push_ail_success | xs_push_ail_pushbuf | xs_push_ail_pinned | xs_push_ail_locked | xs_push_ail_flushing | xs_push_ail_restarts | xs_push_ail_flush |
xstrat - IoMap Write Convert | xs_xstrat_bytes | xs_xstrat_quick | xs_xstrat_split | |||||||
rw - Read/Write Stats | xs_write_calls | xs_write_bytes | xs_read_calls | xs_read_bytes | ||||||
attr - Attribute Operations | xs_attr_get | xs_attr_set | xs_attr_remove | xs_attr_list | ||||||
icluster - Inode Clustering | xs_iflush_count | xs_icluster_flushcnt | xs_icluster_flushinode | |||||||
vnodes - Vnode Statistics | vn_active | vn_alloc | vn_get | vn_hold | vn_rele | vn_reclaim | vn_remove | |||
buf - Buf Statistics | pb_get | pb_create | pb_get_locked | pb_get_locked_waited | pb_busy_locked | pb_miss_locked | pb_page_retries | pb_page_found | pb_get_read | |
xpc - eXtended Precision Counters | xs_xstrat_bytes | xs_write_bytes | xs_read_bytes |
Fields description:
extent_alloc - Extent Allocation
xs_allocx (xfs.allocs.alloc_extent) - Number of file system extents allocated over all XFS filesystems.
xs_allocb (xfs.allocs.alloc_block) - Number of file system blocks allocated over all XFS filesystems.
xs_freex (xfs.allocs.free_extent) - Number of file system extents freed over all XFS filesystems.
xs_freeb (xfs.allocs.free_block) - Number of file system blocks freed over all XFS filesystems.
abt - Allocation Btree
xs_abt_lookup (xfs.alloc_btree.lookup) - Number of lookup operations in XFS filesystem allocation btrees.
xs_abt_compare (xfs.alloc_btree.compare) - Number of compares in XFS filesystem allocation btree lookups.
xs_abt_insrec (xfs.alloc_btree.insrec) - Number of extent records inserted into XFS filesystem allocation btrees.
xs_abt_delrec (xfs.alloc_btree.delrec) - Number of extent records deleted from XFS filesystem allocation btrees.
blk_map - Block Mapping
xs_blk_mapr (xfs.block_map.read_ops) - Number of block map for read operations performed on XFS files.
xs_blk_mapw (xfs.block_map.write_ops) - Number of block map for write operations performed on XFS files.
xs_blk_unmap (xfs.block_map.unmap) - Number of block unmap (delete) operations performed on XFS files.
xs_add_exlist (xfs.block_map.add_exlist) - Number of extent list insertion operations for XFS files.
xs_del_exlist (xfs.block_map.del_exlist) - Number of extent list deletion operations for XFS files.
xs_look_exlist (xfs.block_map.look_exlist) - Number of extent list lookup operations for XFS files.
xs_cmp_exlist (xfs.block_map.cmp_exlist) - Number of extent list comparisons in XFS extent list lookups.
bmbt - Block Map Btree
xs_bmbt_lookup (xfs.bmap_btree.lookup) - Number of block map btree lookup operations on XFS files.
xs_bmbt_compare (xfs.bmap_btree.compare) - Number of block map btree compare operations in XFS block map lookups.
xs_bmbt_insrec (xfs.bmap_btree.insrec) - Number of block map btree records inserted for XFS files.
xs_bmbt_delrec (xfs.bmap_btree.delrec) - Number of block map btree records deleted for XFS files.
dir - Directory Operations
xs_dir_lookup (xfs.dir_ops.lookup)
This is a count of the number of file name directory lookups in XFS filesystems. It counts only those lookups which miss in the operating system's directory name lookup cache and must search the real directory structure for the name in question. The count is incremented once for each level of a pathname search that results in a directory lookup.
xs_dir_create (xfs.dir_ops.create)
This is the number of times a new directory entry was created in XFS filesystems. Each time that a new file, directory, link, symbolic link, or special file is created in the directory hierarchy the count is incremented.
xs_dir_remove (xfs.dir_ops.remove)
This is the number of times an existing directory entry was removed in XFS filesystems. Each time that a file, directory, link, symbolic link, or special file is removed from the directory hierarchy the count is incremented.
xs_dir_getdents (xfs.dir_ops.getdents)
This is the number of times the XFS directory getdents operation was performed. The getdents operation is used by programs to read the contents of directories in a file system independent fashion. This count corresponds exactly to the number of times the getdents(2) system call was success- fully used on an XFS directory.
trans - Transactions
xs_trans_sync (xfs.transactions.sync)
This is the number of meta-data transactions which waited to be committed to the on-disk log before allowing the process performing the transac- tion to continue. These transactions are slower and more expensive than asynchronous transactions, because they force the in memory log buffers to be forced to disk more often and they wait for the completion of the log buffer writes. Synchronous transactions include file truncations and all directory updates when the file system is mounted with the 'wsync' option.
xs_trans_async (xfs.transactions.async)
This is the number of meta-data transactions which did not wait to be committed to the on-disk log before allowing the process performing the transaction to continue. These transactions are faster and more efficient than synchronous transactions, because they commit their data to the in memory log buffers without forcing those buffers to be written to disk. This allows multiple asynchronous transactions to be committed to disk in a single log buffer write. Most transactions used in XFS file systems are asynchronous.
xs_trans_empty (xfs.transactions.empty)
This is the number of meta-data transactions which did not actually change anything. These are transactions which were started for some purpose, but in the end it turned out that no change was necessary.
ig - Inode Operations
xs_ig_attempts (xfs.inode_ops.ig_attempts)
This is the number of times the operating system looked for an XFS inode in the inode cache. Whether the inode was found in the cache or needed to be read in from the disk is not indicated here, but this can be computed from the ig_found and ig_missed counts.
xs_ig_found (xfs.inode_ops.ig_found)
This is the number of times the operating system looked for an XFS inode in the inode cache and found it. The closer this count is to the ig_attempts count the better the inode cache is performing.
xs_ig_frecycle (xfs.inode_ops.ig_frecycle)
This is the number of times the operating system looked for an XFS inode in the inode cache and saw that it was there but was unable to use the in memory inode because it was being recycled by another process.
xs_ig_missed (xfs.inode_ops.ig_missed)
This is the number of times the operating system looked for an XFS inode in the inode cache and the inode was not there. The further this count is from the ig_attempts count the better.
xs_ig_dup (xfs.inode_ops.ig_dup)
This is the number of times the operating system looked for an XFS inode in the inode cache and found that it was not there but upon attempting to add the inode to the cache found that another process had already inserted it.
xs_ig_reclaims (xfs.inode_ops.ig_reclaims)
This is the number of times the operating system recycled an XFS inode from the inode cache in order to use the memory for that inode for another purpose. Inodes are recycled in order to keep the inode cache from growing without bound. If the reclaim rate is high it may be beneficial to raise the vnode_free_ratio kernel tunable variable to increase the size of the inode cache.
xs_ig_attrchg (xfs.inode_ops.ig_attrchg)
This is the number of times the operating system explicitly changed the attributes of an XFS inode. For example, this could be to change the inode's owner, the inode's size, or the inode's timestamps.
log - Log Operations
xs_log_writes (xfs.log.writes)
This variable counts the number of log buffer writes going to the physical log partitions of all XFS filesystems. Log data traffic is proportional to the level of meta-data updating. Log buffer writes get generated when they fill up or external syncs occur.
xs_log_blocks (xfs.log.blocks)
This variable counts (in 512-byte units) the information being written to the physical log partitions of all XFS filesystems. Log data traffic is proportional to the level of meta-data updating. The rate with which log data gets written depends on the size of internal log buffers and disk write speed. Therefore, filesystems with very high meta-data updating may need to stripe the log partition or put the log partition on a separate drive.
xs_log_noiclogs (xfs.log.noiclogs)
This variable keeps track of times when a logged transaction can not get any log buffer space. When this occurs, all of the internal log buffers are busy flushing their data to the physical on-disk log.
xs_log_force (xfs.log.force)
The number of times the in-core log is forced to disk. It is equivalent to the number of successful calls to the function xfs_log_force().
xs_log_force_sleep (xfs.log.force_sleep)
Value exported from the xs_log_force_sleep field of struct xfsstats.
push_ail - Tail-Pushing Stats
xs_try_logspace (xfs.log_tail.try_logspace) - Value from the xs_try_logspace field of struct xfsstats. xs_sleep_logspace (xfs.log_tail.sleep_logspace) - Value from the xs_sleep_logspace field of struct xfsstats. xs_push_ail (xfs.log_tail.push_ail.pushes) - The number of times the tail of the AIL is moved forward. It is equivalent to the number of successful calls to the function xfs_trans_push_ail(). xs_push_ail_success (xfs.log_tail.push_ail.success) - Value from xs_push_ail_success field of struct xfsstats. xs_push_ail_pushbuf (xfs.log_tail.push_ail.pushbuf) - Value from xs_push_ail_pushbuf field of struct xfsstats. xs_push_ail_pinned (xfs.log_tail.push_ail.pinned) - Value from xs_push_ail_pinned field of struct xfsstats. xs_push_ail_locked (xfs.log_tail.push_ail.locked) - Value from xs_push_ail_locked field of struct xfsstats. xs_push_ail_flushing (xfs.log_tail.push_ail.flushing) - Value from xs_push_ail_flushing field of struct xfsstats. xs_push_ail_restarts (xfs.log_tail.push_ail.restarts) - Value from xs_push_ail_restarts field of struct xfsstats. xs_push_ail_flush (xfs.log_tail.push_ail.flush) - Value from xs_push_ail_flush field of struct xfsstats.
xstrat - IoMap Write Convert
xs_xstrat_quick (xfs.xstrat.quick)
This is the number of buffers flushed out by the XFS flushing daemons which are written to contiguous space on disk. The buffers handled by the XFS daemons are delayed allocation buffers, so this count gives an indication of the success of the XFS daemons in allocating contiguous disk space for the data being flushed to disk.
xs_xstrat_split (xfs.xstrat.split)
This is the number of buffers flushed out by the XFS flushing daemons which are written to non-contiguous space on disk. The buffers handled by the XFS daemons are delayed allocation buffers, so this count gives an indication of the failure of the XFS daemons in allocating contiguous disk space for the data being flushed to disk. Large values in this counter indicate that the file system has become fragmented.
NOTES
Many of these statistics are monotonically increasing counters, and of course are subject to counter overflow (the final three listed above are 64-bit values, all others are 32-bit values). As such they are of limited value in this raw form - if you are interested in monitoring throughput (e.g. bytes read/written per second), or other rates of change, you will be better served by investigating the PCP package more thoroughly - it contains a number of performance analysis tools which can help in this regard.