memory freebsd: re-organizes memory assignment for used and unused memory

* removes unused variables
* enhances one-character-variables for better readabilitiy
* fixes calculation errors
** used memory: active, inactive, and wired
** available memory: cached, laundry, and free

see https://wiki.freebsd.org/Memory for more information
This commit is contained in:
Andreas Geisenhainer 2018-03-12 21:01:07 +01:00
parent 0280ac2243
commit df5fa77428
2 changed files with 16 additions and 17 deletions

View File

@ -323,8 +323,8 @@ Supported platforms: Linux, FreeBSD.
total system memory, 4th as free memory, 5th as swap usage in percent, 6th
as swap usage, 7th as total system swap, 8th as free swap and 9th as
memory usage with buffers and cache
* FreeBSD: see above, but 9th value is not returned (always `-1`) and there
is a 10th value giving wired memory
* FreeBSD: see above, but there are two more values: the 9th value is wired memory
in percent and the 10th value giving wired memory
**vicious.widgets.mpd**

View File

@ -18,32 +18,31 @@ local function worker(format)
-- Get memory space in bytes
_mem.total = tonumber(vm_stats.v_page_count) * pagesize
_mem.buf.f = tonumber(vm_stats.v_free_count) * pagesize
_mem.buf.a = tonumber(vm_stats.v_active_count) * pagesize
_mem.buf.i = tonumber(vm_stats.v_inactive_count) * pagesize
_mem.buf.c = tonumber(vm_stats.v_cache_count) * pagesize
_mem.buf.w = tonumber(vm_stats.v_wire_count) * pagesize
_mem.buf.free = tonumber(vm_stats.v_free_count) * pagesize
_mem.buf.laundry = tonumber(vm_stats.v_laundry_count) * pagesize
_mem.buf.cache = tonumber(vm_stats.v_cache_count) * pagesize
_mem.buf.wired = tonumber(vm_stats.v_wire_count) * pagesize
-- Rework into megabytes
_mem.total = math.floor(_mem.total/1048576)
_mem.buf.f = math.floor(_mem.buf.f/1048576)
_mem.buf.a = math.floor(_mem.buf.a/1048576)
_mem.buf.i = math.floor(_mem.buf.i/1048576)
_mem.buf.c = math.floor(_mem.buf.c/1048576)
_mem.buf.w = math.floor(_mem.buf.w/1048576)
_mem.buf.free = math.floor(_mem.buf.free/1048576)
_mem.buf.laundry = math.floor(_mem.buf.laundry/1048576)
_mem.buf.cache = math.floor(_mem.buf.cache/1048576)
_mem.buf.wired = math.floor(_mem.buf.wired/1048576)
-- Calculate memory percentage
_mem.free = _mem.buf.f + _mem.buf.c + _mem.buf.i
_mem.free = _mem.buf.free + _mem.buf.cache + _mem.buf.laundry
-- used memory basically consists of active+inactive+wired
_mem.inuse = _mem.total - _mem.free
_mem.wire = _mem.buf.w
_mem.wire = _mem.buf.wired
_mem.usep = math.floor(_mem.inuse / _mem.total * 100)
_mem.inusep= math.floor(_mem.inuse / _mem.total * 100)
_mem.wirep = math.floor(_mem.wire / _mem.total * 100)
-- Get swap states
local vm_swap_total = tonumber(helpers.sysctl("vm.swap_total"))
local vm_swap_enabled = tonumber(helpers.sysctl("vm.swap_enabled"))
local _swp = { buf = {}, total = nil }
if vm_swap_enabled == 1 and vm_swap_total > 0 then
-- Get swap space in bytes
_swp.total = vm_swap_total
@ -63,7 +62,7 @@ local function worker(format)
return { _mem.usep, _mem.inuse, _mem.total, _mem.free,
_swp.usep, _swp.inuse, _swp.total, _swp.buf.f,
-1, _mem.wire }
_mem.wirep, _mem.wire }
end
return setmetatable(mem_freebsd, { __call = function(_, ...) return worker(...) end })