Deleted Added
full compact
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 ---