Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arcstat: Add -a and -p options from FreeNAS #11090

Merged
merged 1 commit into from
Oct 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions cmd/arcstat/arcstat.in
Original file line number Diff line number Diff line change
Expand Up @@ -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'):
Expand Down Expand Up @@ -197,13 +198,15 @@ 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")
sys.stderr.write("\t -f : Specify specific fields to print (see -v)\n")
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")
Expand Down Expand Up @@ -262,20 +265,29 @@ 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()


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")


Expand Down Expand Up @@ -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
Expand All @@ -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:
Expand All @@ -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'):
Expand All @@ -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:]
Expand Down Expand Up @@ -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")
Expand Down
22 changes: 20 additions & 2 deletions man/man1/arcstat.1
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -510,6 +510,15 @@ May temporarily be negative, in which case the ARC will reduce the target size \
.LP
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
Expand Down Expand Up @@ -537,6 +546,15 @@ Display help message.
Report statistics to a file instead of the standard output.
.RE

.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
Expand Down