Make arcstat.py default to one header per screen

Today arcstat.py prints one header every hdr_intr (20 by default)
lines. It would be more consistent with out utilities like vmstat
if hdr_intr defaulted to terminal window size, i.e.  one header
per screenful of outputs.

Signed-off-by: Isaac Huang <he.huang@intel.com>
Signed-off-by: Prakash Surya <surya1@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2183
This commit is contained in:
Isaac Huang 2014-03-10 23:27:56 -06:00 committed by Brian Behlendorf
parent 4e26f2fccd
commit 4e1c9f9c48

View File

@ -230,11 +230,20 @@ def print_header():
sys.stdout.write("%*s%s" % (cols[col][0], col, sep)) sys.stdout.write("%*s%s" % (cols[col][0], col, sep))
sys.stdout.write("\n") sys.stdout.write("\n")
def get_terminal_lines():
try:
import fcntl, termios, struct
data = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '1234')
sz = struct.unpack('hh', data)
return sz[0]
except:
pass
def init(): def init():
global sint global sint
global count global count
global hdr global hdr
global hdr_intr
global xhdr global xhdr
global opfile global opfile
global sep global sep
@ -304,6 +313,10 @@ def init():
if xflag: if xflag:
hdr = xhdr hdr = xhdr
lines = get_terminal_lines()
if lines:
hdr_intr = lines - 3
# check if L2ARC exists # check if L2ARC exists
snap_stats() snap_stats()
l2_size = cur.get("l2_size") l2_size = cur.get("l2_size")