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 | */ |
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, |
117 | NFSIOS_PNFS_READ, |
118 | NFSIOS_PNFS_WRITE, |
119 | __NFSIOS_COUNTSMAX, |
120 | }; |
121 | |
122 | #endif /* _LINUX_NFS_IOSTAT */ |
123 | |