Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
34e8f928 CL |
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 | ||
15a45206 | 25 | #define NFS_IOSTAT_VERS "1.1" |
34e8f928 CL |
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 | */ | |
62 | enum 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 | */ | |
91 | enum 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, | |
64419a9b | 117 | NFSIOS_PNFS_READ, |
0382b744 | 118 | NFSIOS_PNFS_WRITE, |
34e8f928 CL |
119 | __NFSIOS_COUNTSMAX, |
120 | }; | |
121 | ||
6a51091d DH |
122 | /* |
123 | * NFS local caching servicing counters | |
124 | */ | |
125 | enum 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 | ||
34e8f928 | 134 | #endif /* _LINUX_NFS_IOSTAT */ |