nfsstat.c (306632) | nfsstat.c (309831) |
---|---|
1/* 2 * Copyright (c) 1983, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 57 unchanged lines hidden (view full) --- 66 The Regents of the University of California. All rights reserved.\n"; 67#endif /* not lint */ 68 69#ifndef lint 70#if 0 71static char sccsid[] = "@(#)nfsstat.c 8.2 (Berkeley) 3/31/95"; 72#endif 73static const char rcsid[] = | 1/* 2 * Copyright (c) 1983, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 57 unchanged lines hidden (view full) --- 66 The Regents of the University of California. All rights reserved.\n"; 67#endif /* not lint */ 68 69#ifndef lint 70#if 0 71static char sccsid[] = "@(#)nfsstat.c 8.2 (Berkeley) 3/31/95"; 72#endif 73static const char rcsid[] = |
74 "$FreeBSD: stable/11/usr.bin/nfsstat/nfsstat.c 306632 2016-10-03 12:02:45Z rmacklem $"; | 74 "$FreeBSD: stable/11/usr.bin/nfsstat/nfsstat.c 309831 2016-12-10 21:03:49Z rmacklem $"; |
75#endif /* not lint */ 76 77#include <sys/param.h> 78#include <sys/module.h> 79#include <sys/mount.h> 80#include <sys/time.h> 81#include <sys/sysctl.h> 82#include <nfs/nfsproto.h> --- 25 unchanged lines hidden (view full) --- 108static int extra_output = 0; 109 110static void intpr(int, int); 111static void printhdr(int, int, int); 112static void usage(void); 113static char *sperc1(int, int); 114static char *sperc2(int, int); 115static void exp_intpr(int, int); | 75#endif /* not lint */ 76 77#include <sys/param.h> 78#include <sys/module.h> 79#include <sys/mount.h> 80#include <sys/time.h> 81#include <sys/sysctl.h> 82#include <nfs/nfsproto.h> --- 25 unchanged lines hidden (view full) --- 108static int extra_output = 0; 109 110static void intpr(int, int); 111static void printhdr(int, int, int); 112static void usage(void); 113static char *sperc1(int, int); 114static char *sperc2(int, int); 115static void exp_intpr(int, int); |
116static void exp41_intpr(int, int); |
|
116static void exp_sidewaysintpr(u_int, int, int, int); 117static void compute_new_stats(struct nfsstatsv1 *cur_stats, 118 struct nfsstatsv1 *prev_stats, int curop, long double etime, 119 long double *mbsec, long double *kb_per_transfer, 120 long double *transfers_per_second, long double *ms_per_transfer, 121 uint64_t *queue_len, long double *busy_pct); 122 123#define DELTA(field) (nfsstats.field - lastst.field) --- 26 unchanged lines hidden (view full) --- 150 char *memf, *nlistf; 151 int mntlen, i; 152 char buf[1024]; 153 struct statfs *mntbuf; 154 struct nfscl_dumpmntopts dumpmntopts; 155 156 interval = 0; 157 memf = nlistf = NULL; | 117static void exp_sidewaysintpr(u_int, int, int, int); 118static void compute_new_stats(struct nfsstatsv1 *cur_stats, 119 struct nfsstatsv1 *prev_stats, int curop, long double etime, 120 long double *mbsec, long double *kb_per_transfer, 121 long double *transfers_per_second, long double *ms_per_transfer, 122 uint64_t *queue_len, long double *busy_pct); 123 124#define DELTA(field) (nfsstats.field - lastst.field) --- 26 unchanged lines hidden (view full) --- 151 char *memf, *nlistf; 152 int mntlen, i; 153 char buf[1024]; 154 struct statfs *mntbuf; 155 struct nfscl_dumpmntopts dumpmntopts; 156 157 interval = 0; 158 memf = nlistf = NULL; |
158 while ((ch = getopt(argc, argv, "cdesWM:mN:w:z")) != -1) | 159 while ((ch = getopt(argc, argv, "cdEesWM:mN:w:z")) != -1) |
159 switch(ch) { 160 case 'M': 161 memf = optarg; 162 break; 163 case 'm': 164 /* Display mount options for NFS mount points. */ 165 mntlen = getmntinfo(&mntbuf, MNT_NOWAIT); 166 for (i = 0; i < mntlen; i++) { --- 36 unchanged lines hidden (view full) --- 203 case 's': 204 serverOnly = 1; 205 if (clientOnly < 0) 206 clientOnly = 0; 207 break; 208 case 'z': 209 zflag = 1; 210 break; | 160 switch(ch) { 161 case 'M': 162 memf = optarg; 163 break; 164 case 'm': 165 /* Display mount options for NFS mount points. */ 166 mntlen = getmntinfo(&mntbuf, MNT_NOWAIT); 167 for (i = 0; i < mntlen; i++) { --- 36 unchanged lines hidden (view full) --- 204 case 's': 205 serverOnly = 1; 206 if (clientOnly < 0) 207 clientOnly = 0; 208 break; 209 case 'z': 210 zflag = 1; 211 break; |
212 case 'E': 213 if (extra_output != 0) 214 errx(1, "-e and -E are mutually exclusive"); 215 extra_output = 2; 216 break; |
|
211 case 'e': | 217 case 'e': |
218 if (extra_output != 0) 219 errx(1, "-e and -E are mutually exclusive"); |
|
212 extra_output = 1; 213 break; 214 case '?': 215 default: 216 usage(); 217 } 218 argc -= optind; 219 argv += optind; --- 11 unchanged lines hidden (view full) --- 231#endif 232 if (modfind("nfscommon") < 0) 233 errx(1, "NFS client/server not loaded"); 234 235 if (interval) { 236 exp_sidewaysintpr(interval, clientOnly, serverOnly, 237 newStats); 238 } else { | 220 extra_output = 1; 221 break; 222 case '?': 223 default: 224 usage(); 225 } 226 argc -= optind; 227 argv += optind; --- 11 unchanged lines hidden (view full) --- 239#endif 240 if (modfind("nfscommon") < 0) 241 errx(1, "NFS client/server not loaded"); 242 243 if (interval) { 244 exp_sidewaysintpr(interval, clientOnly, serverOnly, 245 newStats); 246 } else { |
239 if (extra_output != 0) | 247 if (extra_output == 2) 248 exp41_intpr(clientOnly, serverOnly); 249 else if (extra_output == 1) |
240 exp_intpr(clientOnly, serverOnly); 241 else 242 intpr(clientOnly, serverOnly); 243 } 244 exit(0); 245} 246 247/* --- 542 unchanged lines hidden (view full) --- 790 (uintmax_t)ext_nfsstats.srvcache_idemdonehits, 791 (uintmax_t)ext_nfsstats.srvcache_nonidemdonehits, 792 (uintmax_t)ext_nfsstats.srvcache_misses, 793 (uintmax_t)ext_nfsstats.srvcache_size, 794 (uintmax_t)ext_nfsstats.srvcache_tcppeak); 795 } 796} 797 | 250 exp_intpr(clientOnly, serverOnly); 251 else 252 intpr(clientOnly, serverOnly); 253 } 254 exit(0); 255} 256 257/* --- 542 unchanged lines hidden (view full) --- 800 (uintmax_t)ext_nfsstats.srvcache_idemdonehits, 801 (uintmax_t)ext_nfsstats.srvcache_nonidemdonehits, 802 (uintmax_t)ext_nfsstats.srvcache_misses, 803 (uintmax_t)ext_nfsstats.srvcache_size, 804 (uintmax_t)ext_nfsstats.srvcache_tcppeak); 805 } 806} 807 |
808/* 809 * Print a description of the nfs stats for the client/server, 810 * including NFSv4.1. 811 */ |
|
798static void | 812static void |
813exp41_intpr(int clientOnly, int serverOnly) 814{ 815 int nfssvc_flag; 816 817 nfssvc_flag = NFSSVC_GETSTATS | NFSSVC_NEWSTRUCT; 818 if (zflag != 0) { 819 if (clientOnly != 0) 820 nfssvc_flag |= NFSSVC_ZEROCLTSTATS; 821 if (serverOnly != 0) 822 nfssvc_flag |= NFSSVC_ZEROSRVSTATS; 823 } 824 ext_nfsstats.vers = NFSSTATS_V1; 825 if (nfssvc(nfssvc_flag, &ext_nfsstats) < 0) 826 err(1, "Can't get stats"); 827 if (clientOnly != 0) { 828 if (printtitle) { 829 printf("Client Info:\n"); 830 printf("RPC Counts:\n"); 831 printf( 832 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 833 "Getattr", "Setattr", "Lookup", "Readlink", "Read", 834 "Write"); 835 } 836 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 837 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETATTR], 838 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETATTR], 839 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOOKUP], 840 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READLINK], 841 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READ], 842 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_WRITE]); 843 if (printtitle) 844 printf( 845 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 846 "Create", "Remove", "Rename", "Link", "Symlink", 847 "Mkdir"); 848 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 849 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CREATE], 850 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_REMOVE], 851 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RENAME], 852 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LINK], 853 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SYMLINK], 854 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_MKDIR]); 855 if (printtitle) 856 printf( 857 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 858 "Rmdir", "Readdir", "RdirPlus", "Access", "Mknod", 859 "Fsstat"); 860 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 861 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RMDIR], 862 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDIR], 863 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDIRPLUS], 864 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_ACCESS], 865 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_MKNOD], 866 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FSSTAT]); 867 if (printtitle) 868 printf( 869 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 870 "Fsinfo", "PathConf", "Commit", "SetClId", 871 "SetClIdCf", "Lock"); 872 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 873 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FSINFO], 874 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_PATHCONF], 875 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_COMMIT], 876 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETCLIENTID], 877 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETCLIENTIDCFRM], 878 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCK]); 879 if (printtitle) 880 printf( 881 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 882 "LockT", "LockU", "Open", "OpenCfr", "OpenDownGr", 883 "Close"); 884 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 885 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCKT], 886 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCKU], 887 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPEN], 888 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPENCONFIRM], 889 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPENDOWNGRADE], 890 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CLOSE]); 891 if (printtitle) 892 printf( 893 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 894 "RelLckOwn", "FreeStateID", "PutRootFH", "DelegRet", 895 "GetACL", "SetACL"); 896 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 897 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RELEASELCKOWN], 898 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FREESTATEID], 899 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_PUTROOTFH], 900 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DELEGRETURN], 901 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETACL], 902 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETACL]); 903 if (printtitle) 904 printf( 905 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 906 "ExchangeID", "CreateSess", "DestroySess", 907 "DestroyClId", "LayoutGet", "GetDevInfo"); 908 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 909 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_EXCHANGEID], 910 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CREATESESSION], 911 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DESTROYSESSION], 912 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DESTROYCLIENT], 913 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTGET], 914 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETDEVICEINFO]); 915 if (printtitle) 916 printf( 917 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 918 "LayoutCommit", "LayoutReturn", "ReclaimCompl", 919 "ReadDataS", "WriteDataS", "CommitDataS"); 920 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 921 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTCOMMIT], 922 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTRETURN], 923 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RECLAIMCOMPL], 924 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDS], 925 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_WRITEDS], 926 (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_COMMITDS]); 927 if (printtitle) 928 printf( 929 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 930 "OpenOwner", "Opens", "LockOwner", "Locks", 931 "Delegs", "LocalOwn"); 932 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 933 (uintmax_t)ext_nfsstats.clopenowners, 934 (uintmax_t)ext_nfsstats.clopens, 935 (uintmax_t)ext_nfsstats.cllockowners, 936 (uintmax_t)ext_nfsstats.cllocks, 937 (uintmax_t)ext_nfsstats.cldelegates, 938 (uintmax_t)ext_nfsstats.cllocalopenowners); 939 if (printtitle) 940 printf("%12.12s %12.12s %12.12s\n", 941 "LocalOpen", "LocalLOwn", "LocalLock"); 942 printf("%12ju %12ju %12ju\n", 943 (uintmax_t)ext_nfsstats.cllocalopens, 944 (uintmax_t)ext_nfsstats.cllocallockowners, 945 (uintmax_t)ext_nfsstats.cllocallocks); 946 if (printtitle) { 947 printf("Rpc Info:\n"); 948 printf("%12.12s %12.12s %12.12s %12.12s %12.12s\n", 949 "TimedOut", "Invalid", "X Replies", "Retries", 950 "Requests"); 951 } 952 printf("%12ju %12ju %12ju %12ju %12ju\n", 953 (uintmax_t)ext_nfsstats.rpctimeouts, 954 (uintmax_t)ext_nfsstats.rpcinvalid, 955 (uintmax_t)ext_nfsstats.rpcunexpected, 956 (uintmax_t)ext_nfsstats.rpcretries, 957 (uintmax_t)ext_nfsstats.rpcrequests); 958 if (printtitle) { 959 printf("Cache Info:\n"); 960 printf("%12.12s %12.12s %12.12s %12.12s\n", 961 "Attr Hits", "Misses", "Lkup Hits", "Misses"); 962 } 963 printf("%12ju %12ju %12ju %12ju\n", 964 (uintmax_t)ext_nfsstats.attrcache_hits, 965 (uintmax_t)ext_nfsstats.attrcache_misses, 966 (uintmax_t)ext_nfsstats.lookupcache_hits, 967 (uintmax_t)ext_nfsstats.lookupcache_misses); 968 if (printtitle) 969 printf("%12.12s %12.12s %12.12s %12.12s\n", 970 "BioR Hits", "Misses", "BioW Hits", "Misses"); 971 printf("%12ju %12ju %12ju %12ju\n", 972 (uintmax_t)(ext_nfsstats.biocache_reads - 973 ext_nfsstats.read_bios), 974 (uintmax_t)ext_nfsstats.read_bios, 975 (uintmax_t)(ext_nfsstats.biocache_writes - 976 ext_nfsstats.write_bios), 977 (uintmax_t)ext_nfsstats.write_bios); 978 if (printtitle) 979 printf("%12.12s %12.12s %12.12s %12.12s\n", 980 "BioRLHits", "Misses", "BioD Hits", "Misses"); 981 printf("%12ju %12ju %12ju %12ju\n", 982 (uintmax_t)(ext_nfsstats.biocache_readlinks - 983 ext_nfsstats.readlink_bios), 984 (uintmax_t)ext_nfsstats.readlink_bios, 985 (uintmax_t)(ext_nfsstats.biocache_readdirs - 986 ext_nfsstats.readdir_bios), 987 (uintmax_t)ext_nfsstats.readdir_bios); 988 if (printtitle) 989 printf("%12.12s %12.12s\n", "DirE Hits", "Misses"); 990 printf("%12ju %12ju\n", 991 (uintmax_t)ext_nfsstats.direofcache_hits, 992 (uintmax_t)ext_nfsstats.direofcache_misses); 993 } 994 if (serverOnly != 0) { 995 if (printtitle) { 996 printf("\nServer Info:\n"); 997 printf( 998 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 999 "Getattr", "Setattr", "Lookup", "Readlink", 1000 "Read", "Write"); 1001 } 1002 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1003 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETATTR], 1004 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETATTR], 1005 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOOKUP], 1006 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READLINK], 1007 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READ], 1008 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_WRITE]); 1009 if (printtitle) 1010 printf( 1011 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1012 "Create", "Remove", "Rename", "Link", "Symlink", 1013 "Mkdir"); 1014 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1015 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_V3CREATE], 1016 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_REMOVE], 1017 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RENAME], 1018 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LINK], 1019 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SYMLINK], 1020 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_MKDIR]); 1021 if (printtitle) 1022 printf( 1023 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1024 "Rmdir", "Readdir", "RdirPlus", "Access", "Mknod", 1025 "Fsstat"); 1026 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1027 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RMDIR], 1028 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READDIR], 1029 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READDIRPLUS], 1030 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_ACCESS], 1031 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_MKNOD], 1032 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FSSTAT]); 1033 if (printtitle) 1034 printf( 1035 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1036 "Fsinfo", "PathConf", "Commit", "LookupP", 1037 "SetClId", "SetClIdCf"); 1038 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1039 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FSINFO], 1040 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PATHCONF], 1041 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_COMMIT], 1042 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOOKUPP], 1043 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETCLIENTID], 1044 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETCLIENTIDCFRM]); 1045 if (printtitle) 1046 printf( 1047 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1048 "Open", "OpenAttr", "OpenDwnGr", "OpenCfrm", 1049 "DelePurge", "DeleRet"); 1050 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1051 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPEN], 1052 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENATTR], 1053 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENDOWNGRADE], 1054 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENCONFIRM], 1055 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DELEGPURGE], 1056 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DELEGRETURN]); 1057 if (printtitle) 1058 printf( 1059 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1060 "GetFH", "Lock", "LockT", "LockU", "Close", 1061 "Verify"); 1062 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1063 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETFH], 1064 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCK], 1065 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCKT], 1066 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCKU], 1067 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CLOSE], 1068 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_VERIFY]); 1069 if (printtitle) 1070 printf( 1071 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1072 "NVerify", "PutFH", "PutPubFH", "PutRootFH", 1073 "Renew", "RestoreFH"); 1074 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1075 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_NVERIFY], 1076 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTFH], 1077 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTPUBFH], 1078 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTROOTFH], 1079 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RENEW], 1080 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RESTOREFH]); 1081 if (printtitle) 1082 printf( 1083 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1084 "SaveFH", "Secinfo", "RelLckOwn", "V4Create", 1085 "BackChannelCtrl", "BindConnToSess"); 1086 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1087 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SAVEFH], 1088 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SECINFO], 1089 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RELEASELCKOWN], 1090 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CREATE], 1091 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_BACKCHANNELCTL], 1092 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_BINDCONNTOSESS]); 1093 if (printtitle) 1094 printf( 1095 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1096 "ExchangeID", "CreateSess", "DestroySess", 1097 "FreeStateID", "GetDirDeleg", "GetDevInfo"); 1098 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1099 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_EXCHANGEID], 1100 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CREATESESSION], 1101 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DESTROYSESSION], 1102 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FREESTATEID], 1103 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDIRDELEG], 1104 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDEVINFO]); 1105 if (printtitle) 1106 printf( 1107 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1108 "GetDevList", "LayoutCommit", "LayoutGet", 1109 "LayoutReturn", "SecInfNoName", "Sequence"); 1110 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1111 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDEVLIST], 1112 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTCOMMIT], 1113 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTGET], 1114 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTRETURN], 1115 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SECINFONONAME], 1116 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SEQUENCE]); 1117 if (printtitle) 1118 printf( 1119 "%12.12s %12.12s %12.12s %12.12s %12.12s\n", 1120 "SetSSV", "TestStateID", "WantDeleg", 1121 "DestroyClID", "ReclaimCompl"); 1122 printf("%12ju %12ju %12ju %12ju %12ju\n", 1123 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETSSV], 1124 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_TESTSTATEID], 1125 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_WANTDELEG], 1126 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DESTROYCLIENTID], 1127 (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RECLAIMCOMPL]); 1128 if (printtitle) { 1129 printf("Server:\n"); 1130 printf("%12.12s %12.12s %12.12s\n", 1131 "Retfailed", "Faults", "Clients"); 1132 } 1133 printf("%12ju %12ju %12ju\n", 1134 (uintmax_t)ext_nfsstats.srv_errs, 1135 (uintmax_t)ext_nfsstats.srvrpc_errs, 1136 (uintmax_t)ext_nfsstats.srvclients); 1137 if (printtitle) 1138 printf("%12.12s %12.12s %12.12s %12.12s %12.12s\n", 1139 "OpenOwner", "Opens", "LockOwner", 1140 "Locks", "Delegs"); 1141 printf("%12ju %12ju %12ju %12ju %12ju\n", 1142 (uintmax_t)ext_nfsstats.srvopenowners, 1143 (uintmax_t)ext_nfsstats.srvopens, 1144 (uintmax_t)ext_nfsstats.srvlockowners, 1145 (uintmax_t)ext_nfsstats.srvlocks, 1146 (uintmax_t)ext_nfsstats.srvdelegates); 1147 if (printtitle) { 1148 printf("Server Cache Stats:\n"); 1149 printf( 1150 "%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n", 1151 "Inprog", "Idem", "Non-idem", "Misses", 1152 "CacheSize", "TCPPeak"); 1153 } 1154 printf("%12ju %12ju %12ju %12ju %12ju %12ju\n", 1155 (uintmax_t)ext_nfsstats.srvcache_inproghits, 1156 (uintmax_t)ext_nfsstats.srvcache_idemdonehits, 1157 (uintmax_t)ext_nfsstats.srvcache_nonidemdonehits, 1158 (uintmax_t)ext_nfsstats.srvcache_misses, 1159 (uintmax_t)ext_nfsstats.srvcache_size, 1160 (uintmax_t)ext_nfsstats.srvcache_tcppeak); 1161 } 1162} 1163 1164static void |
|
799compute_totals(struct nfsstatsv1 *total_stats, struct nfsstatsv1 *cur_stats) 800{ 801 int i; 802 803 bzero(total_stats, sizeof(*total_stats)); 804 for (i = 0; i < (NFSV42_NOPS + NFSV4OP_FAKENOPS); i++) { 805 total_stats->srvbytes[0] += cur_stats->srvbytes[i]; 806 total_stats->srvops[0] += cur_stats->srvops[i]; --- 155 unchanged lines hidden --- | 1165compute_totals(struct nfsstatsv1 *total_stats, struct nfsstatsv1 *cur_stats) 1166{ 1167 int i; 1168 1169 bzero(total_stats, sizeof(*total_stats)); 1170 for (i = 0; i < (NFSV42_NOPS + NFSV4OP_FAKENOPS); i++) { 1171 total_stats->srvbytes[0] += cur_stats->srvbytes[i]; 1172 total_stats->srvops[0] += cur_stats->srvops[i]; --- 155 unchanged lines hidden --- |