From fb02fabf9b8045d6a1ddedf3f79171f69633162d Mon Sep 17 00:00:00 2001 From: Christ Schlacta Date: Thu, 6 Jun 2013 21:33:01 -0700 Subject: [PATCH] Modified arcstat.py to run on linux * Modified kstat_update() to read arcstats from proc. * Fix shebang. * Added Makefile.am entries for arcstat.py Signed-off-by: Brian Behlendorf Closes #1506 --- cmd/Makefile.am | 2 +- cmd/arcstat/Makefile.am | 2 ++ cmd/arcstat/arcstat.py | 24 +++++------------------- configure.ac | 1 + rpm/generic/zfs.spec.in | 1 + 5 files changed, 10 insertions(+), 20 deletions(-) create mode 100644 cmd/arcstat/Makefile.am diff --git a/cmd/Makefile.am b/cmd/Makefile.am index 1a51ddc..bad1af6 100644 --- a/cmd/Makefile.am +++ b/cmd/Makefile.am @@ -1,2 +1,2 @@ SUBDIRS = zfs zpool zdb zhack zinject zstreamdump ztest zpios -SUBDIRS += mount_zfs fsck_zfs zvol_id vdev_id +SUBDIRS += mount_zfs fsck_zfs zvol_id vdev_id arcstat diff --git a/cmd/arcstat/Makefile.am b/cmd/arcstat/Makefile.am new file mode 100644 index 0000000..802b8e1 --- /dev/null +++ b/cmd/arcstat/Makefile.am @@ -0,0 +1,2 @@ +bin_SCRIPTS = arcstat.py +EXTRA_DIST = $(bin_SCRIPTS) diff --git a/cmd/arcstat/arcstat.py b/cmd/arcstat/arcstat.py index fcfdbb8..e01dd8b 100755 --- a/cmd/arcstat/arcstat.py +++ b/cmd/arcstat/arcstat.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python # # Print out ZFS ARC Statistics exported via kstat(1) # For a definition of fields, or usage, use arctstat.pl -v @@ -51,7 +51,6 @@ import re import copy from decimal import Decimal -from subprocess import Popen, PIPE from signal import signal, SIGINT cols = { @@ -149,33 +148,20 @@ def usage(): def kstat_update(): global kstat - p = Popen("/sbin/sysctl -q 'kstat.zfs.misc.arcstats'", stdin=PIPE, - stdout=PIPE, stderr=PIPE, shell=True, close_fds=True) - p.wait() - - k = p.communicate()[0].split('\n') - if p.returncode != 0: - sys.exit(1) + k = [line.strip() for line in open('/proc/spl/kstat/zfs/arcstats')] if not k: sys.exit(1) + del k[0:2] kstat = {} for s in k: if not s: continue - s = s.strip() - - name, value = s.split(':') - name = name.strip() - value = value.strip() - - parts = name.split('.') - n = parts.pop() - - kstat[n] = Decimal(value) + name, unused, value = s.split() + kstat[name] = Decimal(value) def snap_stats(): diff --git a/configure.ac b/configure.ac index 13bb5ba..58e2158 100644 --- a/configure.ac +++ b/configure.ac @@ -102,6 +102,7 @@ AC_CONFIG_FILES([ cmd/fsck_zfs/Makefile cmd/zvol_id/Makefile cmd/vdev_id/Makefile + cmd/arcstat/Makefile module/Makefile module/avl/Makefile module/nvpair/Makefile diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in index 7ee4ca0..ddbee84 100644 --- a/rpm/generic/zfs.spec.in +++ b/rpm/generic/zfs.spec.in @@ -123,6 +123,7 @@ find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \; %doc AUTHORS COPYRIGHT DISCLAIMER %doc OPENSOLARIS.LICENSE README.markdown %{_sbindir}/* +%{_bindir}/* %{_libdir}/*.so.1* %{_mandir}/man1/* %{_mandir}/man5/* -- 1.8.3.1