]> granicus.if.org Git - zfs/commitdiff
Make arcstat.py default to one header per screen
authorIsaac Huang <he.huang@intel.com>
Tue, 11 Mar 2014 05:27:56 +0000 (23:27 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 12 Mar 2014 15:56:12 +0000 (08:56 -0700)
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

cmd/arcstat/arcstat.py

index 8fe1331afa9788c357ecc19acec0732abc40d3ca..5a0912853852f59d329d9d2bac9522fd5d4634f8 100755 (executable)
@@ -230,11 +230,20 @@ def print_header():
         sys.stdout.write("%*s%s" % (cols[col][0], col, sep))
     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():
     global sint
     global count
     global hdr
+    global hdr_intr
     global xhdr
     global opfile
     global sep
@@ -304,6 +313,10 @@ def init():
     if xflag:
         hdr = xhdr
 
+    lines = get_terminal_lines()
+    if lines:
+        hdr_intr = lines - 3
+
     # check if L2ARC exists
     snap_stats()
     l2_size = cur.get("l2_size")