From a93edde1a21e533472b5d443002032260b5bd066 Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Sat, 6 Jul 2019 04:27:49 +0000 Subject: Support ZFS ARC stats on FreeBSD New meter displays same ARC stats as FreeBSD top(1). Can be extended to other platforms that support ZFS. Pulling kstat.zfs.misc.arcstats.c_max as the meter total, so the meter has a meaningful value to work up to. The Text meter displays, first, the maximum ARC size (Meter.total), then second, the total ARC used, using the difference between Meter.maxItems and Meter.curItems to "hide" the used value from the Bar and Graph drawing functions by using an index in Meter.values[] that is beyond curItems - 1, but less than maxItems - 1. --- Makefile.am | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index 7d19600f..ad23d19b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -36,6 +36,10 @@ TasksMeter.h UptimeMeter.h TraceScreen.h UsersTable.h Vector.h Process.h \ AffinityPanel.h HostnameMeter.h OpenFilesScreen.h Affinity.h IncSet.h Action.h \ EnvScreen.h InfoScreen.h XAlloc.h +zfs_platform_sources = zfs/ZfsArcMeter.c + +zfs_platform_headers = zfs/ZfsArcMeter.h + all_platform_headers = # Linux @@ -68,13 +72,15 @@ freebsd_platform_headers = \ freebsd/FreeBSDProcessList.h \ freebsd/FreeBSDProcess.h \ freebsd/FreeBSDCRT.h \ - freebsd/Battery.h + freebsd/Battery.h \ + $(zfs_platform_headers) all_platform_headers += $(freebsd_platform_headers) if HTOP_FREEBSD myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \ -freebsd/FreeBSDProcess.c freebsd/FreeBSDCRT.c freebsd/Battery.c +freebsd/FreeBSDProcess.c freebsd/FreeBSDCRT.c freebsd/Battery.c \ +$(zfs_platform_sources) myhtopplatheaders = $(freebsd_platform_headers) endif -- cgit v1.2.3 From 070fe90461182743fabb029415fc1bc59be14f3f Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Sun, 7 Jul 2019 02:37:02 +0000 Subject: ZFS arcstats for Linux If no pools are imported (ARC size == 0) or the ZFS module is not in the kernel (/proc/spl/kstat/zfs/arcstats does not exist), then the Meter reports "Unavailable". --- Makefile.am | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index ad23d19b..b850815a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -52,14 +52,16 @@ linux_platform_headers = \ linux/LinuxProcess.h \ linux/LinuxProcessList.h \ linux/LinuxCRT.h \ - linux/Battery.h + linux/Battery.h \ + $(zfs_platform_headers) all_platform_headers += $(linux_platform_headers) if HTOP_LINUX AM_CFLAGS += -rdynamic myhtopplatsources = linux/Platform.c linux/IOPriorityPanel.c linux/IOPriority.c \ -linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c +linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c \ +$(zfs_platform_sources) myhtopplatheaders = $(linux_platform_headers) endif -- cgit v1.2.3 From fc8e9a2d3e25e35c0f9903baa345b1744b12b6cb Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Sun, 7 Jul 2019 17:30:37 -0400 Subject: ZFS arcstats for Darwin (macOS / OS X) --- Makefile.am | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index b850815a..b6d2117b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -134,14 +134,16 @@ darwin_platform_headers = \ darwin/DarwinProcess.h \ darwin/DarwinProcessList.h \ darwin/DarwinCRT.h \ - darwin/Battery.h + darwin/Battery.h \ + $(zfs_platform_headers) all_platform_headers += $(darwin_platform_headers) if HTOP_DARWIN AM_LDFLAGS += -framework IOKit -framework CoreFoundation myhtopplatsources = darwin/Platform.c darwin/DarwinProcess.c \ -darwin/DarwinProcessList.c darwin/DarwinCRT.c darwin/Battery.c +darwin/DarwinProcessList.c darwin/DarwinCRT.c darwin/Battery.c \ +$(zfs_platform_sources) myhtopplatheaders = $(darwin_platform_headers) endif -- cgit v1.2.3 From a88d2e313df7f5f2b781d5b14ffe0e7710018c10 Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Sun, 7 Jul 2019 23:27:00 +0000 Subject: Refactor common OpenZFS sysctl access Darwin and FreeBSD export zfs kstats through the same APIs, so moving functions into a common file. --- Makefile.am | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index b6d2117b..5eee6315 100644 --- a/Makefile.am +++ b/Makefile.am @@ -36,10 +36,6 @@ TasksMeter.h UptimeMeter.h TraceScreen.h UsersTable.h Vector.h Process.h \ AffinityPanel.h HostnameMeter.h OpenFilesScreen.h Affinity.h IncSet.h Action.h \ EnvScreen.h InfoScreen.h XAlloc.h -zfs_platform_sources = zfs/ZfsArcMeter.c - -zfs_platform_headers = zfs/ZfsArcMeter.h - all_platform_headers = # Linux @@ -53,7 +49,8 @@ linux_platform_headers = \ linux/LinuxProcessList.h \ linux/LinuxCRT.h \ linux/Battery.h \ - $(zfs_platform_headers) + zfs/ZfsArcMeter.h \ + zfs/ZfsArcStats.h all_platform_headers += $(linux_platform_headers) @@ -61,7 +58,7 @@ if HTOP_LINUX AM_CFLAGS += -rdynamic myhtopplatsources = linux/Platform.c linux/IOPriorityPanel.c linux/IOPriority.c \ linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c \ -$(zfs_platform_sources) +zfs/ZfsArcMeter.c zfs/ZfsArcStats.c myhtopplatheaders = $(linux_platform_headers) endif @@ -75,14 +72,16 @@ freebsd_platform_headers = \ freebsd/FreeBSDProcess.h \ freebsd/FreeBSDCRT.h \ freebsd/Battery.h \ - $(zfs_platform_headers) + zfs/ZfsArcMeter.h \ + zfs/ZfsArcStats.h \ + zfs/openzfs_sysctl.h all_platform_headers += $(freebsd_platform_headers) if HTOP_FREEBSD myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \ freebsd/FreeBSDProcess.c freebsd/FreeBSDCRT.c freebsd/Battery.c \ -$(zfs_platform_sources) +zfs/ZfsArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c myhtopplatheaders = $(freebsd_platform_headers) endif @@ -135,7 +134,9 @@ darwin_platform_headers = \ darwin/DarwinProcessList.h \ darwin/DarwinCRT.h \ darwin/Battery.h \ - $(zfs_platform_headers) + zfs/ZfsArcMeter.h \ + zfs/ZfsArcStats.h \ + zfs/openzfs_sysctl.h all_platform_headers += $(darwin_platform_headers) @@ -143,7 +144,7 @@ if HTOP_DARWIN AM_LDFLAGS += -framework IOKit -framework CoreFoundation myhtopplatsources = darwin/Platform.c darwin/DarwinProcess.c \ darwin/DarwinProcessList.c darwin/DarwinCRT.c darwin/Battery.c \ -$(zfs_platform_sources) +zfs/ZfsArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c myhtopplatheaders = $(darwin_platform_headers) endif -- cgit v1.2.3 From ff6914e4ad4b78749bcee5471a33ef206b0a7d03 Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Mon, 8 Jul 2019 02:43:39 +0000 Subject: ZFS arcstats for Solaris --- Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index 5eee6315..204a8b7d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -157,14 +157,17 @@ solaris_platform_headers = \ solaris/SolarisProcess.h \ solaris/SolarisProcessList.h \ solaris/SolarisCRT.h \ - solaris/Battery.h + solaris/Battery.h \ + zfs/ZfsArcMeter.h \ + zfs/ZfsArcStats.h all_platform_headers += $(solaris_platform_headers) if HTOP_SOLARIS myhtopplatsources = solaris/Platform.c \ solaris/SolarisProcess.c solaris/SolarisProcessList.c \ -solaris/SolarisCRT.c solaris/Battery.c +solaris/SolarisCRT.c solaris/Battery.c \ +zfs/ZfsArcMeter.c zfs/ZfsArcStats.c myhtopplatheaders = $(solaris_platform_headers) endif -- cgit v1.2.3 From 613556faebd16325da8c9057c81f39a2410d803f Mon Sep 17 00:00:00 2001 From: Ross Williams Date: Tue, 3 Sep 2019 18:26:02 +0000 Subject: Support for ZFS Compressed ARC statistics --- Makefile.am | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index 204a8b7d..2d159f02 100644 --- a/Makefile.am +++ b/Makefile.am @@ -50,6 +50,7 @@ linux_platform_headers = \ linux/LinuxCRT.h \ linux/Battery.h \ zfs/ZfsArcMeter.h \ + zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h all_platform_headers += $(linux_platform_headers) @@ -58,7 +59,7 @@ if HTOP_LINUX AM_CFLAGS += -rdynamic myhtopplatsources = linux/Platform.c linux/IOPriorityPanel.c linux/IOPriority.c \ linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c \ -zfs/ZfsArcMeter.c zfs/ZfsArcStats.c +zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/ZfsArcStats.c myhtopplatheaders = $(linux_platform_headers) endif @@ -73,6 +74,7 @@ freebsd_platform_headers = \ freebsd/FreeBSDCRT.h \ freebsd/Battery.h \ zfs/ZfsArcMeter.h \ + zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h \ zfs/openzfs_sysctl.h @@ -81,7 +83,7 @@ all_platform_headers += $(freebsd_platform_headers) if HTOP_FREEBSD myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \ freebsd/FreeBSDProcess.c freebsd/FreeBSDCRT.c freebsd/Battery.c \ -zfs/ZfsArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c +zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c myhtopplatheaders = $(freebsd_platform_headers) endif @@ -135,6 +137,7 @@ darwin_platform_headers = \ darwin/DarwinCRT.h \ darwin/Battery.h \ zfs/ZfsArcMeter.h \ + zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h \ zfs/openzfs_sysctl.h @@ -144,7 +147,7 @@ if HTOP_DARWIN AM_LDFLAGS += -framework IOKit -framework CoreFoundation myhtopplatsources = darwin/Platform.c darwin/DarwinProcess.c \ darwin/DarwinProcessList.c darwin/DarwinCRT.c darwin/Battery.c \ -zfs/ZfsArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c +zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/ZfsArcStats.c zfs/openzfs_sysctl.c myhtopplatheaders = $(darwin_platform_headers) endif @@ -159,6 +162,7 @@ solaris_platform_headers = \ solaris/SolarisCRT.h \ solaris/Battery.h \ zfs/ZfsArcMeter.h \ + zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h all_platform_headers += $(solaris_platform_headers) @@ -167,7 +171,7 @@ if HTOP_SOLARIS myhtopplatsources = solaris/Platform.c \ solaris/SolarisProcess.c solaris/SolarisProcessList.c \ solaris/SolarisCRT.c solaris/Battery.c \ -zfs/ZfsArcMeter.c zfs/ZfsArcStats.c +zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/ZfsArcStats.c myhtopplatheaders = $(solaris_platform_headers) endif -- cgit v1.2.3