| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * User-space visible declarations for NFS client per-mount | |
| * point statistics | |
| * | |
| * Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com> | |
| * | |
| * 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 */ |