linux/include/linux/nfs_iostat.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 *  User-space visible declarations for NFS client per-mount
   4 *  point statistics
   5 *
   6 *  Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com>
   7 *
   8 *  NFS client per-mount statistics provide information about the
   9 *  health of the NFS client and the health of each NFS mount point.
  10 *  Generally these are not for detailed problem diagnosis, but
  11 *  simply to indicate that there is a problem.
  12 *
  13 *  These counters are not meant to be human-readable, but are meant
  14 *  to be integrated into system monitoring tools such as "sar" and
  15 *  "iostat".  As such, the counters are sampled by the tools over
  16 *  time, and are never zeroed after a file system is mounted.
  17 *  Moving averages can be computed by the tools by taking the
  18 *  difference between two instantaneous samples  and dividing that
  19 *  by the time between the samples.
  20 */
  21
  22#ifndef _LINUX_NFS_IOSTAT
  23#define _LINUX_NFS_IOSTAT
  24
  25#define NFS_IOSTAT_VERS         "1.1"
  26
  27/*
  28 * NFS byte counters
  29 *
  30 * 1.  SERVER - the number of payload bytes read from or written
  31 *     to the server by the NFS client via an NFS READ or WRITE
  32 *     request.
  33 *
  34 * 2.  NORMAL - the number of bytes read or written by applications
  35 *     via the read(2) and write(2) system call interfaces.
  36 *
  37 * 3.  DIRECT - the number of bytes read or written from files
  38 *     opened with the O_DIRECT flag.
  39 *
  40 * These counters give a view of the data throughput into and out
  41 * of the NFS client.  Comparing the number of bytes requested by
  42 * an application with the number of bytes the client requests from
  43 * the server can provide an indication of client efficiency
  44 * (per-op, cache hits, etc).
  45 *
  46 * These counters can also help characterize which access methods
  47 * are in use.  DIRECT by itself shows whether there is any O_DIRECT
  48 * traffic.  NORMAL + DIRECT shows how much data is going through
  49 * the system call interface.  A large amount of SERVER traffic
  50 * without much NORMAL or DIRECT traffic shows that applications
  51 * are using mapped files.
  52 *
  53 * NFS page counters
  54 *
  55 * These count the number of pages read or written via nfs_readpage(),
  56 * nfs_readpages(), or their write equivalents.
  57 *
  58 * NB: When adding new byte counters, please include the measured
  59 * units in the name of each byte counter to help users of this
  60 * interface determine what exactly is being counted.
  61 */
  62enum nfs_stat_bytecounters {
  63        NFSIOS_NORMALREADBYTES = 0,
  64        NFSIOS_NORMALWRITTENBYTES,
  65        NFSIOS_DIRECTREADBYTES,
  66        NFSIOS_DIRECTWRITTENBYTES,
  67        NFSIOS_SERVERREADBYTES,
  68        NFSIOS_SERVERWRITTENBYTES,
  69        NFSIOS_READPAGES,
  70        NFSIOS_WRITEPAGES,
  71        __NFSIOS_BYTESMAX,
  72};
  73
  74/*
  75 * NFS event counters
  76 *
  77 * These counters provide a low-overhead way of monitoring client
  78 * activity without enabling NFS trace debugging.  The counters
  79 * show the rate at which VFS requests are made, and how often the
  80 * client invalidates its data and attribute caches.  This allows
  81 * system administrators to monitor such things as how close-to-open
  82 * is working, and answer questions such as "why are there so many
  83 * GETATTR requests on the wire?"
  84 *
  85 * They also count anamolous events such as short reads and writes,
  86 * silly renames due to close-after-delete, and operations that
  87 * change the size of a file (such operations can often be the
  88 * source of data corruption if applications aren't using file
  89 * locking properly).
  90 */
  91enum nfs_stat_eventcounters {
  92        NFSIOS_INODEREVALIDATE = 0,
  93        NFSIOS_DENTRYREVALIDATE,
  94        NFSIOS_DATAINVALIDATE,
  95        NFSIOS_ATTRINVALIDATE,
  96        NFSIOS_VFSOPEN,
  97        NFSIOS_VFSLOOKUP,
  98        NFSIOS_VFSACCESS,
  99        NFSIOS_VFSUPDATEPAGE,
 100        NFSIOS_VFSREADPAGE,
 101        NFSIOS_VFSREADPAGES,
 102        NFSIOS_VFSWRITEPAGE,
 103        NFSIOS_VFSWRITEPAGES,
 104        NFSIOS_VFSGETDENTS,
 105        NFSIOS_VFSSETATTR,
 106        NFSIOS_VFSFLUSH,
 107        NFSIOS_VFSFSYNC,
 108        NFSIOS_VFSLOCK,
 109        NFSIOS_VFSRELEASE,
 110        NFSIOS_CONGESTIONWAIT,
 111        NFSIOS_SETATTRTRUNC,
 112        NFSIOS_EXTENDWRITE,
 113        NFSIOS_SILLYRENAME,
 114        NFSIOS_SHORTREAD,
 115        NFSIOS_SHORTWRITE,
 116        NFSIOS_DELAY,
 117        NFSIOS_PNFS_READ,
 118        NFSIOS_PNFS_WRITE,
 119        __NFSIOS_COUNTSMAX,
 120};
 121
 122/*
 123 * NFS local caching servicing counters
 124 */
 125enum nfs_stat_fscachecounters {
 126        NFSIOS_FSCACHE_PAGES_READ_OK,
 127        NFSIOS_FSCACHE_PAGES_READ_FAIL,
 128        NFSIOS_FSCACHE_PAGES_WRITTEN_OK,
 129        NFSIOS_FSCACHE_PAGES_WRITTEN_FAIL,
 130        NFSIOS_FSCACHE_PAGES_UNCACHED,
 131        __NFSIOS_FSCACHEMAX,
 132};
 133
 134#endif  /* _LINUX_NFS_IOSTAT */
 135