summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-10-21 17:09:14 -0400
committerGitHub <[email protected]>2020-10-21 14:09:14 -0700
commit2aaab887bb8693722f601c0576462cc82a47698f (patch)
tree0abef5d27223d2ba4f3435f948c7461b3a8912a9
parente53d678d4ad596a310d51dab107bb6fa97e2b226 (diff)
arcstat: Add -a and -p options from FreeNAS
Added -a option to automatically print all valid statistics. Added -p option to suppress scaling of printed data. Reviewed-by: George Melikov <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Authored by: Nick Principe <[email protected]> Ported-by: Ryan Moeller <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #11090
-rwxr-xr-xcmd/arcstat/arcstat.in38
-rw-r--r--man/man1/arcstat.122
2 files changed, 52 insertions, 8 deletions
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
index df0eb0c22..40ab975c6 100755
--- a/cmd/arcstat/arcstat.in
+++ b/cmd/arcstat/arcstat.in
@@ -134,12 +134,13 @@ opfile = None
sep = " " # Default separator is 2 spaces
version = "0.4"
l2exist = False
-cmd = ("Usage: arcstat [-hvx] [-f fields] [-o file] [-s string] [interval "
+cmd = ("Usage: arcstat [-havxp] [-f fields] [-o file] [-s string] [interval "
"[count]]\n")
cur = {}
d = {}
out = None
kstat = None
+pretty_print = True
if sys.platform.startswith('freebsd'):
@@ -197,6 +198,7 @@ def detailed_usage():
def usage():
sys.stderr.write("%s\n" % cmd)
sys.stderr.write("\t -h : Print this help message\n")
+ sys.stderr.write("\t -a : Print all possible stats\n")
sys.stderr.write("\t -v : List all possible field headers and definitions"
"\n")
sys.stderr.write("\t -x : Print extended stats\n")
@@ -204,6 +206,7 @@ def usage():
sys.stderr.write("\t -o : Redirect output to the specified file\n")
sys.stderr.write("\t -s : Override default field separator with custom "
"character or string\n")
+ sys.stderr.write("\t -p : Disable auto-scaling of numerical fields\n")
sys.stderr.write("\nExamples:\n")
sys.stderr.write("\tarcstat -o /tmp/a.log 2 10\n")
sys.stderr.write("\tarcstat -s \",\" -o /tmp/a.log 2 10\n")
@@ -262,10 +265,14 @@ def print_values():
global hdr
global sep
global v
+ global pretty_print
- sys.stdout.write(sep.join(
- prettynum(cols[col][0], cols[col][1], v[col]) for col in hdr))
+ if pretty_print:
+ fmt = lambda col: prettynum(cols[col][0], cols[col][1], v[col])
+ else:
+ fmt = lambda col: v[col]
+ sys.stdout.write(sep.join(fmt(col) for col in hdr))
sys.stdout.write("\n")
sys.stdout.flush()
@@ -273,9 +280,14 @@ def print_values():
def print_header():
global hdr
global sep
+ global pretty_print
- sys.stdout.write(sep.join("%*s" % (cols[col][0], col) for col in hdr))
+ if pretty_print:
+ fmt = lambda col: "%*s" % (cols[col][0], col)
+ else:
+ fmt = lambda col: col
+ sys.stdout.write(sep.join(fmt(col) for col in hdr))
sys.stdout.write("\n")
@@ -312,8 +324,10 @@ def init():
global sep
global out
global l2exist
+ global pretty_print
desired_cols = None
+ aflag = False
xflag = False
hflag = False
vflag = False
@@ -322,14 +336,16 @@ def init():
try:
opts, args = getopt.getopt(
sys.argv[1:],
- "xo:hvs:f:",
+ "axo:hvs:f:p",
[
+ "all",
"extended",
"outfile",
"help",
"verbose",
"separator",
- "columns"
+ "columns",
+ "parsable"
]
)
except getopt.error as msg:
@@ -338,6 +354,8 @@ def init():
opts = None
for opt, arg in opts:
+ if opt in ('-a', '--all'):
+ aflag = True
if opt in ('-x', '--extended'):
xflag = True
if opt in ('-o', '--outfile'):
@@ -353,6 +371,8 @@ def init():
if opt in ('-f', '--columns'):
desired_cols = arg
i += 1
+ if opt in ('-p', '--parsable'):
+ pretty_print = False
i += 1
argv = sys.argv[i:]
@@ -397,6 +417,12 @@ def init():
incompat)
usage()
+ if aflag:
+ if l2exist:
+ hdr = cols.keys()
+ else:
+ hdr = [col for col in cols.keys() if not col.startswith("l2")]
+
if opfile:
try:
out = open(opfile, "w")
diff --git a/man/man1/arcstat.1 b/man/man1/arcstat.1
index 497c50ada..de63206e2 100644
--- a/man/man1/arcstat.1
+++ b/man/man1/arcstat.1
@@ -13,13 +13,13 @@
.\" Copyright (c) 2015 by Delphix. All rights reserved.
.\" Copyright (c) 2020 by AJ Jordan. All rights reserved.
.\"
-.TH ARCSTAT 1 "Aug 24, 2020" OpenZFS
+.TH ARCSTAT 1 "Oct 20, 2020" OpenZFS
.SH NAME
arcstat \- report ZFS ARC and L2ARC statistics
.SH SYNOPSIS
.LP
.nf
-\fBarcstat\fR [\fB-hvx\fR] [\fB-f field[,field]...\fR] [\fB-o file\fR] [\fB-s string\fR] [\fBinterval\fR [\fBcount\fR]]
+\fBarcstat\fR [\fB-havxp\fR] [\fB-f field[,field]...\fR] [\fB-o file\fR] [\fB-s string\fR] [\fBinterval\fR [\fBcount\fR]]
.fi
.SH DESCRIPTION
@@ -513,6 +513,15 @@ The following options are supported:
.sp
.ne 2
.na
+\fB\fB-a\fR\fR
+.ad
+.RS 12n
+Print all possible stats.
+.RE
+
+.sp
+.ne 2
+.na
\fB\fB-f\fR\fR
.ad
.RS 12n
@@ -540,6 +549,15 @@ Report statistics to a file instead of the standard output.
.sp
.ne 2
.na
+\fB\fB-p\fR\fR
+.ad
+.RS 12n
+Disable auto-scaling of numerical fields (for raw, machine-parsable values).
+.RE
+
+.sp
+.ne 2
+.na
\fB\fB-s\fR\fR
.ad
.RS 12n