Add a -E flag to nfsstat.c so that it prints out the NFSv4.1
procedure/operation counts. It also avoids clipping the counts at 9 digits. Reviewed by: bcr (doc parts) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D8626
This commit is contained in:
parent
d245a2313b
commit
074a46b743
@ -113,6 +113,7 @@ static void usage(void);
|
||||
static char *sperc1(int, int);
|
||||
static char *sperc2(int, int);
|
||||
static void exp_intpr(int, int);
|
||||
static void exp41_intpr(int, int);
|
||||
static void exp_sidewaysintpr(u_int, int, int, int);
|
||||
static void compute_new_stats(struct nfsstatsv1 *cur_stats,
|
||||
struct nfsstatsv1 *prev_stats, int curop, long double etime,
|
||||
@ -155,7 +156,7 @@ main(int argc, char **argv)
|
||||
|
||||
interval = 0;
|
||||
memf = nlistf = NULL;
|
||||
while ((ch = getopt(argc, argv, "cdesWM:mN:w:z")) != -1)
|
||||
while ((ch = getopt(argc, argv, "cdEesWM:mN:w:z")) != -1)
|
||||
switch(ch) {
|
||||
case 'M':
|
||||
memf = optarg;
|
||||
@ -208,7 +209,14 @@ main(int argc, char **argv)
|
||||
case 'z':
|
||||
zflag = 1;
|
||||
break;
|
||||
case 'E':
|
||||
if (extra_output != 0)
|
||||
errx(1, "-e and -E are mutually exclusive");
|
||||
extra_output = 2;
|
||||
break;
|
||||
case 'e':
|
||||
if (extra_output != 0)
|
||||
errx(1, "-e and -E are mutually exclusive");
|
||||
extra_output = 1;
|
||||
break;
|
||||
case '?':
|
||||
@ -236,7 +244,9 @@ main(int argc, char **argv)
|
||||
exp_sidewaysintpr(interval, clientOnly, serverOnly,
|
||||
newStats);
|
||||
} else {
|
||||
if (extra_output != 0)
|
||||
if (extra_output == 2)
|
||||
exp41_intpr(clientOnly, serverOnly);
|
||||
else if (extra_output == 1)
|
||||
exp_intpr(clientOnly, serverOnly);
|
||||
else
|
||||
intpr(clientOnly, serverOnly);
|
||||
@ -795,6 +805,362 @@ exp_intpr(int clientOnly, int serverOnly)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Print a description of the nfs stats for the client/server,
|
||||
* including NFSv4.1.
|
||||
*/
|
||||
static void
|
||||
exp41_intpr(int clientOnly, int serverOnly)
|
||||
{
|
||||
int nfssvc_flag;
|
||||
|
||||
nfssvc_flag = NFSSVC_GETSTATS | NFSSVC_NEWSTRUCT;
|
||||
if (zflag != 0) {
|
||||
if (clientOnly != 0)
|
||||
nfssvc_flag |= NFSSVC_ZEROCLTSTATS;
|
||||
if (serverOnly != 0)
|
||||
nfssvc_flag |= NFSSVC_ZEROSRVSTATS;
|
||||
}
|
||||
ext_nfsstats.vers = NFSSTATS_V1;
|
||||
if (nfssvc(nfssvc_flag, &ext_nfsstats) < 0)
|
||||
err(1, "Can't get stats");
|
||||
if (clientOnly != 0) {
|
||||
if (printtitle) {
|
||||
printf("Client Info:\n");
|
||||
printf("RPC Counts:\n");
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Getattr", "Setattr", "Lookup", "Readlink", "Read",
|
||||
"Write");
|
||||
}
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETATTR],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETATTR],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOOKUP],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READLINK],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READ],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_WRITE]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Create", "Remove", "Rename", "Link", "Symlink",
|
||||
"Mkdir");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CREATE],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_REMOVE],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RENAME],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LINK],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SYMLINK],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_MKDIR]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Rmdir", "Readdir", "RdirPlus", "Access", "Mknod",
|
||||
"Fsstat");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RMDIR],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDIR],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDIRPLUS],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_ACCESS],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_MKNOD],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FSSTAT]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Fsinfo", "PathConf", "Commit", "SetClId",
|
||||
"SetClIdCf", "Lock");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FSINFO],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_PATHCONF],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_COMMIT],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETCLIENTID],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETCLIENTIDCFRM],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCK]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"LockT", "LockU", "Open", "OpenCfr", "OpenDownGr",
|
||||
"Close");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCKT],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LOCKU],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPEN],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPENCONFIRM],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_OPENDOWNGRADE],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CLOSE]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"RelLckOwn", "FreeStateID", "PutRootFH", "DelegRet",
|
||||
"GetACL", "SetACL");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RELEASELCKOWN],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_FREESTATEID],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_PUTROOTFH],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DELEGRETURN],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETACL],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETACL]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"ExchangeID", "CreateSess", "DestroySess",
|
||||
"DestroyClId", "LayoutGet", "GetDevInfo");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_EXCHANGEID],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CREATESESSION],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DESTROYSESSION],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_DESTROYCLIENT],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTGET],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETDEVICEINFO]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"LayoutCommit", "LayoutReturn", "ReclaimCompl",
|
||||
"ReadDataS", "WriteDataS", "CommitDataS");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTCOMMIT],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LAYOUTRETURN],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RECLAIMCOMPL],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_READDS],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_WRITEDS],
|
||||
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_COMMITDS]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"OpenOwner", "Opens", "LockOwner", "Locks",
|
||||
"Delegs", "LocalOwn");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.clopenowners,
|
||||
(uintmax_t)ext_nfsstats.clopens,
|
||||
(uintmax_t)ext_nfsstats.cllockowners,
|
||||
(uintmax_t)ext_nfsstats.cllocks,
|
||||
(uintmax_t)ext_nfsstats.cldelegates,
|
||||
(uintmax_t)ext_nfsstats.cllocalopenowners);
|
||||
if (printtitle)
|
||||
printf("%12.12s %12.12s %12.12s\n",
|
||||
"LocalOpen", "LocalLOwn", "LocalLock");
|
||||
printf("%12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.cllocalopens,
|
||||
(uintmax_t)ext_nfsstats.cllocallockowners,
|
||||
(uintmax_t)ext_nfsstats.cllocallocks);
|
||||
if (printtitle) {
|
||||
printf("Rpc Info:\n");
|
||||
printf("%12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"TimedOut", "Invalid", "X Replies", "Retries",
|
||||
"Requests");
|
||||
}
|
||||
printf("%12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.rpctimeouts,
|
||||
(uintmax_t)ext_nfsstats.rpcinvalid,
|
||||
(uintmax_t)ext_nfsstats.rpcunexpected,
|
||||
(uintmax_t)ext_nfsstats.rpcretries,
|
||||
(uintmax_t)ext_nfsstats.rpcrequests);
|
||||
if (printtitle) {
|
||||
printf("Cache Info:\n");
|
||||
printf("%12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Attr Hits", "Misses", "Lkup Hits", "Misses");
|
||||
}
|
||||
printf("%12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.attrcache_hits,
|
||||
(uintmax_t)ext_nfsstats.attrcache_misses,
|
||||
(uintmax_t)ext_nfsstats.lookupcache_hits,
|
||||
(uintmax_t)ext_nfsstats.lookupcache_misses);
|
||||
if (printtitle)
|
||||
printf("%12.12s %12.12s %12.12s %12.12s\n",
|
||||
"BioR Hits", "Misses", "BioW Hits", "Misses");
|
||||
printf("%12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)(ext_nfsstats.biocache_reads -
|
||||
ext_nfsstats.read_bios),
|
||||
(uintmax_t)ext_nfsstats.read_bios,
|
||||
(uintmax_t)(ext_nfsstats.biocache_writes -
|
||||
ext_nfsstats.write_bios),
|
||||
(uintmax_t)ext_nfsstats.write_bios);
|
||||
if (printtitle)
|
||||
printf("%12.12s %12.12s %12.12s %12.12s\n",
|
||||
"BioRLHits", "Misses", "BioD Hits", "Misses");
|
||||
printf("%12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)(ext_nfsstats.biocache_readlinks -
|
||||
ext_nfsstats.readlink_bios),
|
||||
(uintmax_t)ext_nfsstats.readlink_bios,
|
||||
(uintmax_t)(ext_nfsstats.biocache_readdirs -
|
||||
ext_nfsstats.readdir_bios),
|
||||
(uintmax_t)ext_nfsstats.readdir_bios);
|
||||
if (printtitle)
|
||||
printf("%12.12s %12.12s\n", "DirE Hits", "Misses");
|
||||
printf("%12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.direofcache_hits,
|
||||
(uintmax_t)ext_nfsstats.direofcache_misses);
|
||||
}
|
||||
if (serverOnly != 0) {
|
||||
if (printtitle) {
|
||||
printf("\nServer Info:\n");
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Getattr", "Setattr", "Lookup", "Readlink",
|
||||
"Read", "Write");
|
||||
}
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETATTR],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETATTR],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOOKUP],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READLINK],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READ],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_WRITE]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Create", "Remove", "Rename", "Link", "Symlink",
|
||||
"Mkdir");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_V3CREATE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_REMOVE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RENAME],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LINK],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SYMLINK],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_MKDIR]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Rmdir", "Readdir", "RdirPlus", "Access", "Mknod",
|
||||
"Fsstat");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RMDIR],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READDIR],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READDIRPLUS],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_ACCESS],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_MKNOD],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FSSTAT]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Fsinfo", "PathConf", "Commit", "LookupP",
|
||||
"SetClId", "SetClIdCf");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FSINFO],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PATHCONF],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_COMMIT],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOOKUPP],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETCLIENTID],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETCLIENTIDCFRM]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Open", "OpenAttr", "OpenDwnGr", "OpenCfrm",
|
||||
"DelePurge", "DeleRet");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPEN],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENATTR],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENDOWNGRADE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OPENCONFIRM],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DELEGPURGE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DELEGRETURN]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"GetFH", "Lock", "LockT", "LockU", "Close",
|
||||
"Verify");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETFH],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCK],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCKT],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LOCKU],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CLOSE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_VERIFY]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"NVerify", "PutFH", "PutPubFH", "PutRootFH",
|
||||
"Renew", "RestoreFH");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_NVERIFY],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTFH],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTPUBFH],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_PUTROOTFH],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RENEW],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RESTOREFH]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"SaveFH", "Secinfo", "RelLckOwn", "V4Create",
|
||||
"BackChannelCtrl", "BindConnToSess");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SAVEFH],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SECINFO],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RELEASELCKOWN],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CREATE],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_BACKCHANNELCTL],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_BINDCONNTOSESS]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"ExchangeID", "CreateSess", "DestroySess",
|
||||
"FreeStateID", "GetDirDeleg", "GetDevInfo");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_EXCHANGEID],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_CREATESESSION],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DESTROYSESSION],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_FREESTATEID],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDIRDELEG],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDEVINFO]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"GetDevList", "LayoutCommit", "LayoutGet",
|
||||
"LayoutReturn", "SecInfNoName", "Sequence");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_GETDEVLIST],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTCOMMIT],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTGET],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTRETURN],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SECINFONONAME],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SEQUENCE]);
|
||||
if (printtitle)
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"SetSSV", "TestStateID", "WantDeleg",
|
||||
"DestroyClID", "ReclaimCompl");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SETSSV],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_TESTSTATEID],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_WANTDELEG],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DESTROYCLIENTID],
|
||||
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RECLAIMCOMPL]);
|
||||
if (printtitle) {
|
||||
printf("Server:\n");
|
||||
printf("%12.12s %12.12s %12.12s\n",
|
||||
"Retfailed", "Faults", "Clients");
|
||||
}
|
||||
printf("%12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srv_errs,
|
||||
(uintmax_t)ext_nfsstats.srvrpc_errs,
|
||||
(uintmax_t)ext_nfsstats.srvclients);
|
||||
if (printtitle)
|
||||
printf("%12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"OpenOwner", "Opens", "LockOwner",
|
||||
"Locks", "Delegs");
|
||||
printf("%12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvopenowners,
|
||||
(uintmax_t)ext_nfsstats.srvopens,
|
||||
(uintmax_t)ext_nfsstats.srvlockowners,
|
||||
(uintmax_t)ext_nfsstats.srvlocks,
|
||||
(uintmax_t)ext_nfsstats.srvdelegates);
|
||||
if (printtitle) {
|
||||
printf("Server Cache Stats:\n");
|
||||
printf(
|
||||
"%12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n",
|
||||
"Inprog", "Idem", "Non-idem", "Misses",
|
||||
"CacheSize", "TCPPeak");
|
||||
}
|
||||
printf("%12ju %12ju %12ju %12ju %12ju %12ju\n",
|
||||
(uintmax_t)ext_nfsstats.srvcache_inproghits,
|
||||
(uintmax_t)ext_nfsstats.srvcache_idemdonehits,
|
||||
(uintmax_t)ext_nfsstats.srvcache_nonidemdonehits,
|
||||
(uintmax_t)ext_nfsstats.srvcache_misses,
|
||||
(uintmax_t)ext_nfsstats.srvcache_size,
|
||||
(uintmax_t)ext_nfsstats.srvcache_tcppeak);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
compute_totals(struct nfsstatsv1 *total_stats, struct nfsstatsv1 *cur_stats)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user