linux/fs/xfs/xfs_stats.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000,2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#ifndef __XFS_STATS_H__
  19#define __XFS_STATS_H__
  20
  21
  22#if defined(CONFIG_PROC_FS) && !defined(XFS_STATS_OFF)
  23
  24#include <linux/percpu.h>
  25
  26/*
  27 * XFS global statistics
  28 */
  29struct xfsstats {
  30# define XFSSTAT_END_EXTENT_ALLOC       4
  31        __uint32_t              xs_allocx;
  32        __uint32_t              xs_allocb;
  33        __uint32_t              xs_freex;
  34        __uint32_t              xs_freeb;
  35# define XFSSTAT_END_ALLOC_BTREE        (XFSSTAT_END_EXTENT_ALLOC+4)
  36        __uint32_t              xs_abt_lookup;
  37        __uint32_t              xs_abt_compare;
  38        __uint32_t              xs_abt_insrec;
  39        __uint32_t              xs_abt_delrec;
  40# define XFSSTAT_END_BLOCK_MAPPING      (XFSSTAT_END_ALLOC_BTREE+7)
  41        __uint32_t              xs_blk_mapr;
  42        __uint32_t              xs_blk_mapw;
  43        __uint32_t              xs_blk_unmap;
  44        __uint32_t              xs_add_exlist;
  45        __uint32_t              xs_del_exlist;
  46        __uint32_t              xs_look_exlist;
  47        __uint32_t              xs_cmp_exlist;
  48# define XFSSTAT_END_BLOCK_MAP_BTREE    (XFSSTAT_END_BLOCK_MAPPING+4)
  49        __uint32_t              xs_bmbt_lookup;
  50        __uint32_t              xs_bmbt_compare;
  51        __uint32_t              xs_bmbt_insrec;
  52        __uint32_t              xs_bmbt_delrec;
  53# define XFSSTAT_END_DIRECTORY_OPS      (XFSSTAT_END_BLOCK_MAP_BTREE+4)
  54        __uint32_t              xs_dir_lookup;
  55        __uint32_t              xs_dir_create;
  56        __uint32_t              xs_dir_remove;
  57        __uint32_t              xs_dir_getdents;
  58# define XFSSTAT_END_TRANSACTIONS       (XFSSTAT_END_DIRECTORY_OPS+3)
  59        __uint32_t              xs_trans_sync;
  60        __uint32_t              xs_trans_async;
  61        __uint32_t              xs_trans_empty;
  62# define XFSSTAT_END_INODE_OPS          (XFSSTAT_END_TRANSACTIONS+7)
  63        __uint32_t              xs_ig_attempts;
  64        __uint32_t              xs_ig_found;
  65        __uint32_t              xs_ig_frecycle;
  66        __uint32_t              xs_ig_missed;
  67        __uint32_t              xs_ig_dup;
  68        __uint32_t              xs_ig_reclaims;
  69        __uint32_t              xs_ig_attrchg;
  70# define XFSSTAT_END_LOG_OPS            (XFSSTAT_END_INODE_OPS+5)
  71        __uint32_t              xs_log_writes;
  72        __uint32_t              xs_log_blocks;
  73        __uint32_t              xs_log_noiclogs;
  74        __uint32_t              xs_log_force;
  75        __uint32_t              xs_log_force_sleep;
  76# define XFSSTAT_END_TAIL_PUSHING       (XFSSTAT_END_LOG_OPS+10)
  77        __uint32_t              xs_try_logspace;
  78        __uint32_t              xs_sleep_logspace;
  79        __uint32_t              xs_push_ail;
  80        __uint32_t              xs_push_ail_success;
  81        __uint32_t              xs_push_ail_pushbuf;
  82        __uint32_t              xs_push_ail_pinned;
  83        __uint32_t              xs_push_ail_locked;
  84        __uint32_t              xs_push_ail_flushing;
  85        __uint32_t              xs_push_ail_restarts;
  86        __uint32_t              xs_push_ail_flush;
  87# define XFSSTAT_END_WRITE_CONVERT      (XFSSTAT_END_TAIL_PUSHING+2)
  88        __uint32_t              xs_xstrat_quick;
  89        __uint32_t              xs_xstrat_split;
  90# define XFSSTAT_END_READ_WRITE_OPS     (XFSSTAT_END_WRITE_CONVERT+2)
  91        __uint32_t              xs_write_calls;
  92        __uint32_t              xs_read_calls;
  93# define XFSSTAT_END_ATTRIBUTE_OPS      (XFSSTAT_END_READ_WRITE_OPS+4)
  94        __uint32_t              xs_attr_get;
  95        __uint32_t              xs_attr_set;
  96        __uint32_t              xs_attr_remove;
  97        __uint32_t              xs_attr_list;
  98# define XFSSTAT_END_INODE_CLUSTER      (XFSSTAT_END_ATTRIBUTE_OPS+3)
  99        __uint32_t              xs_iflush_count;
 100        __uint32_t              xs_icluster_flushcnt;
 101        __uint32_t              xs_icluster_flushinode;
 102# define XFSSTAT_END_VNODE_OPS          (XFSSTAT_END_INODE_CLUSTER+8)
 103        __uint32_t              vn_active;      /* # vnodes not on free lists */
 104        __uint32_t              vn_alloc;       /* # times vn_alloc called */
 105        __uint32_t              vn_get;         /* # times vn_get called */
 106        __uint32_t              vn_hold;        /* # times vn_hold called */
 107        __uint32_t              vn_rele;        /* # times vn_rele called */
 108        __uint32_t              vn_reclaim;     /* # times vn_reclaim called */
 109        __uint32_t              vn_remove;      /* # times vn_remove called */
 110        __uint32_t              vn_free;        /* # times vn_free called */
 111#define XFSSTAT_END_BUF                 (XFSSTAT_END_VNODE_OPS+9)
 112        __uint32_t              xb_get;
 113        __uint32_t              xb_create;
 114        __uint32_t              xb_get_locked;
 115        __uint32_t              xb_get_locked_waited;
 116        __uint32_t              xb_busy_locked;
 117        __uint32_t              xb_miss_locked;
 118        __uint32_t              xb_page_retries;
 119        __uint32_t              xb_page_found;
 120        __uint32_t              xb_get_read;
 121/* Version 2 btree counters */
 122#define XFSSTAT_END_ABTB_V2             (XFSSTAT_END_BUF+15)
 123        __uint32_t              xs_abtb_2_lookup;
 124        __uint32_t              xs_abtb_2_compare;
 125        __uint32_t              xs_abtb_2_insrec;
 126        __uint32_t              xs_abtb_2_delrec;
 127        __uint32_t              xs_abtb_2_newroot;
 128        __uint32_t              xs_abtb_2_killroot;
 129        __uint32_t              xs_abtb_2_increment;
 130        __uint32_t              xs_abtb_2_decrement;
 131        __uint32_t              xs_abtb_2_lshift;
 132        __uint32_t              xs_abtb_2_rshift;
 133        __uint32_t              xs_abtb_2_split;
 134        __uint32_t              xs_abtb_2_join;
 135        __uint32_t              xs_abtb_2_alloc;
 136        __uint32_t              xs_abtb_2_free;
 137        __uint32_t              xs_abtb_2_moves;
 138#define XFSSTAT_END_ABTC_V2             (XFSSTAT_END_ABTB_V2+15)
 139        __uint32_t              xs_abtc_2_lookup;
 140        __uint32_t              xs_abtc_2_compare;
 141        __uint32_t              xs_abtc_2_insrec;
 142        __uint32_t              xs_abtc_2_delrec;
 143        __uint32_t              xs_abtc_2_newroot;
 144        __uint32_t              xs_abtc_2_killroot;
 145        __uint32_t              xs_abtc_2_increment;
 146        __uint32_t              xs_abtc_2_decrement;
 147        __uint32_t              xs_abtc_2_lshift;
 148        __uint32_t              xs_abtc_2_rshift;
 149        __uint32_t              xs_abtc_2_split;
 150        __uint32_t              xs_abtc_2_join;
 151        __uint32_t              xs_abtc_2_alloc;
 152        __uint32_t              xs_abtc_2_free;
 153        __uint32_t              xs_abtc_2_moves;
 154#define XFSSTAT_END_BMBT_V2             (XFSSTAT_END_ABTC_V2+15)
 155        __uint32_t              xs_bmbt_2_lookup;
 156        __uint32_t              xs_bmbt_2_compare;
 157        __uint32_t              xs_bmbt_2_insrec;
 158        __uint32_t              xs_bmbt_2_delrec;
 159        __uint32_t              xs_bmbt_2_newroot;
 160        __uint32_t              xs_bmbt_2_killroot;
 161        __uint32_t              xs_bmbt_2_increment;
 162        __uint32_t              xs_bmbt_2_decrement;
 163        __uint32_t              xs_bmbt_2_lshift;
 164        __uint32_t              xs_bmbt_2_rshift;
 165        __uint32_t              xs_bmbt_2_split;
 166        __uint32_t              xs_bmbt_2_join;
 167        __uint32_t              xs_bmbt_2_alloc;
 168        __uint32_t              xs_bmbt_2_free;
 169        __uint32_t              xs_bmbt_2_moves;
 170#define XFSSTAT_END_IBT_V2              (XFSSTAT_END_BMBT_V2+15)
 171        __uint32_t              xs_ibt_2_lookup;
 172        __uint32_t              xs_ibt_2_compare;
 173        __uint32_t              xs_ibt_2_insrec;
 174        __uint32_t              xs_ibt_2_delrec;
 175        __uint32_t              xs_ibt_2_newroot;
 176        __uint32_t              xs_ibt_2_killroot;
 177        __uint32_t              xs_ibt_2_increment;
 178        __uint32_t              xs_ibt_2_decrement;
 179        __uint32_t              xs_ibt_2_lshift;
 180        __uint32_t              xs_ibt_2_rshift;
 181        __uint32_t              xs_ibt_2_split;
 182        __uint32_t              xs_ibt_2_join;
 183        __uint32_t              xs_ibt_2_alloc;
 184        __uint32_t              xs_ibt_2_free;
 185        __uint32_t              xs_ibt_2_moves;
 186/* Extra precision counters */
 187        __uint64_t              xs_xstrat_bytes;
 188        __uint64_t              xs_write_bytes;
 189        __uint64_t              xs_read_bytes;
 190};
 191
 192DECLARE_PER_CPU(struct xfsstats, xfsstats);
 193
 194/*
 195 * We don't disable preempt, not too worried about poking the
 196 * wrong CPU's stat for now (also aggregated before reporting).
 197 */
 198#define XFS_STATS_INC(v)        (per_cpu(xfsstats, current_cpu()).v++)
 199#define XFS_STATS_DEC(v)        (per_cpu(xfsstats, current_cpu()).v--)
 200#define XFS_STATS_ADD(v, inc)   (per_cpu(xfsstats, current_cpu()).v += (inc))
 201
 202extern int xfs_init_procfs(void);
 203extern void xfs_cleanup_procfs(void);
 204
 205
 206#else   /* !CONFIG_PROC_FS */
 207
 208# define XFS_STATS_INC(count)
 209# define XFS_STATS_DEC(count)
 210# define XFS_STATS_ADD(count, inc)
 211
 212static inline int xfs_init_procfs(void)
 213{
 214        return 0;
 215}
 216
 217static inline void xfs_cleanup_procfs(void)
 218{
 219}
 220
 221#endif  /* !CONFIG_PROC_FS */
 222
 223#endif /* __XFS_STATS_H__ */
 224