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