/* SPDX-License-Identifier: GPL-2.0 */ /* * User-space visible declarations for NFS client per-mount * point statistics * * Copyright (C) 2005, 2006 Chuck Lever * * NFS client per-mount statistics provide information about the * health of the NFS client and the health of each NFS mount point. * Generally these are not for detailed problem diagnosis, but * simply to indicate that there is a problem. * * These counters are not meant to be human-readable, but are meant * to be integrated into system monitoring tools such as "sar" and * "iostat". As such, the counters are sampled by the tools over * time, and are never zeroed after a file system is mounted. * Moving averages can be computed by the tools by taking the * difference between two instantaneous samples and dividing that * by the time between the samples. */ #ifndef _LINUX_NFS_IOSTAT #define _LINUX_NFS_IOSTAT #define NFS_IOSTAT_VERS "1.1" /* * NFS byte counters * * 1. SERVER - the number of payload bytes read from or written * to the server by the NFS client via an NFS READ or WRITE * request. * * 2. NORMAL - the number of bytes read or written by applications * via the read(2) and write(2) system call interfaces. * * 3. DIRECT - the number of bytes read or written from files * opened with the O_DIRECT flag. * * These counters give a view of the data throughput into and out * of the NFS client. Comparing the number of bytes requested by * an application with the number of bytes the client requests from * the server can provide an indication of client efficiency * (per-op, cache hits, etc). * * These counters can also help characterize which access methods * are in use. DIRECT by itself shows whether there is any O_DIRECT * traffic. NORMAL + DIRECT shows how much data is going through * the system call interface. A large amount of SERVER traffic * without much NORMAL or DIRECT traffic shows that applications * are using mapped files. * * NFS page counters * * These count the number of pages read or written via nfs_readpage(), * nfs_readpages(), or their write equivalents. * * NB: When adding new byte counters, please include the measured * units in the name of each byte counter to help users of this * interface determine what exactly is being counted. */ enum nfs_stat_bytecounters { NFSIOS_NORMALREADBYTES = 0, NFSIOS_NORMALWRITTENBYTES, NFSIOS_DIRECTREADBYTES, NFSIOS_DIRECTWRITTENBYTES, NFSIOS_SERVERREADBYTES, NFSIOS_SERVERWRITTENBYTES, NFSIOS_READPAGES, NFSIOS_WRITEPAGES, __NFSIOS_BYTESMAX, }; /* * NFS event counters * * These counters provide a low-overhead way of monitoring client * activity without enabling NFS trace debugging. The counters * show the rate at which VFS requests are made, and how often the * client invalidates its data and attribute caches. This allows * system administrators to monitor such things as how close-to-open * is working, and answer questions such as "why are there so many * GETATTR requests on the wire?" * * They also count anamolous events such as short reads and writes, * silly renames due to close-after-delete, and operations that * change the size of a file (such operations can often be the * source of data corruption if applications aren't using file * locking properly). */ enum nfs_stat_eventcounters { NFSIOS_INODEREVALIDATE = 0, NFSIOS_DENTRYREVALIDATE, NFSIOS_DATAINVALIDATE, NFSIOS_ATTRINVALIDATE, NFSIOS_VFSOPEN, NFSIOS_VFSLOOKUP, NFSIOS_VFSACCESS, NFSIOS_VFSUPDATEPAGE, NFSIOS_VFSREADPAGE, NFSIOS_VFSREADPAGES, NFSIOS_VFSWRITEPAGE, NFSIOS_VFSWRITEPAGES, NFSIOS_VFSGETDENTS, NFSIOS_VFSSETATTR, NFSIOS_VFSFLUSH, NFSIOS_VFSFSYNC, NFSIOS_VFSLOCK, NFSIOS_VFSRELEASE, NFSIOS_CONGESTIONWAIT, NFSIOS_SETATTRTRUNC, NFSIOS_EXTENDWRITE, NFSIOS_SILLYRENAME, NFSIOS_SHORTREAD, NFSIOS_SHORTWRITE, NFSIOS_DELAY, NFSIOS_PNFS_READ, NFSIOS_PNFS_WRITE, __NFSIOS_COUNTSMAX, }; /* * NFS local caching servicing counters */ enum nfs_stat_fscachecounters { NFSIOS_FSCACHE_PAGES_READ_OK, NFSIOS_FSCACHE_PAGES_READ_FAIL, NFSIOS_FSCACHE_PAGES_WRITTEN_OK, NFSIOS_FSCACHE_PAGES_WRITTEN_FAIL, NFSIOS_FSCACHE_PAGES_UNCACHED, __NFSIOS_FSCACHEMAX, }; #endif /* _LINUX_NFS_IOSTAT */