diff options
author | Robert Roth <robert.roth.off@gmail.com> | 2018-11-21 06:21:53 +0000 |
---|---|---|
committer | Robert Roth <robert.roth.off@gmail.com> | 2018-11-21 06:21:53 +0000 |
commit | b71a5c1404174519a7d4a5ae3bf2647c0d87af9a (patch) | |
tree | 5f72742b369d246568b9cdd5cb189a3cf79008d2 | |
parent | 8e4c9c197b2c9d82bafbfe535519ff74220fa576 (diff) | |
parent | bb118fa9d6d3ceb35db36bdcaa85cfc78c28997d (diff) | |
download | libgtop-b71a5c1404174519a7d4a5ae3bf2647c0d87af9a.tar.gz |
Merge branch 'wip/lantw/freebsd-laundry-memory-and-zfs-arc' into 'master'
freebsd: Support laundry memory and ZFS ARC
See merge request GNOME/libgtop!3
-rw-r--r-- | sysdeps/freebsd/mem.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sysdeps/freebsd/mem.c b/sysdeps/freebsd/mem.c index 22f560ed..fa7e86b6 100644 --- a/sysdeps/freebsd/mem.c +++ b/sysdeps/freebsd/mem.c @@ -55,6 +55,16 @@ static gulong mem_get_by_bytes (glibtop *server, const char *name) { return result; } +static gulong try_mem_get_by_bytes (glibtop *server, const char *name) { + gulong result = 0; + size_t len = sizeof (result); + + if (sysctlbyname (name, &result, &len, NULL, 0)) { + return 0; + } + return result; +} + static gulong mem_get_by_pages (glibtop *server, const char *name) { guint result = 0; size_t len = sizeof (result); @@ -71,29 +81,35 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) gulong memtotal; gulong memactive; gulong meminactive; + gulong memlaundry; gulong memwired; gulong memcached; gulong membuffer; gulong memfree; + gulong zfs_arc_size; memset (buf, 0, sizeof *buf); memtotal = mem_get_by_bytes (server, "hw.physmem"); memactive = mem_get_by_pages (server, "vm.stats.vm.v_active_count"); meminactive = mem_get_by_pages (server, "vm.stats.vm.v_inactive_count"); + memlaundry = mem_get_by_pages (server, "vm.stats.vm.v_laundry_count"); memwired = mem_get_by_pages (server, "vm.stats.vm.v_wire_count"); memcached = mem_get_by_pages (server, "vm.stats.vm.v_cache_count"); membuffer = mem_get_by_bytes (server, "vfs.bufspace"); memfree = mem_get_by_pages (server, "vm.stats.vm.v_free_count"); + zfs_arc_size = try_mem_get_by_bytes (server, "kstat.zfs.misc.arcstats.size"); + buf->total = memtotal; buf->used = memtotal - memfree; buf->free = memfree; buf->shared = 0; buf->buffer = membuffer; - buf->cached = memcached; + buf->cached = memcached + zfs_arc_size; buf->locked = 0; - buf->user = memactive + memwired; + buf->user = memactive + memlaundry + memwired - zfs_arc_size; + buf->flags = _glibtop_sysdeps_mem; } |