]>
code.delx.au - monosys/blob - bin/mfree
6 f
= open("/proc/meminfo")
9 key
, value
, *_
= line
.split()
11 result
[key
] = int(value
) * 1024
14 def read_zfs_arcstats():
16 f
= open("/proc/spl/kstat/zfs/arcstats")
17 except FileNotFoundError
:
20 # skip first two lines
26 key
, _
, value
= line
.split()
27 result
[key
] = int(value
)
30 def print_template(first
, *rest
):
31 sys
.stdout
.write(first
.ljust(7))
33 sys
.stdout
.write(x
.rjust(12))
34 sys
.stdout
.write("\n")
37 meminfo
= read_meminfo()
38 arcstats
= read_zfs_arcstats()
40 mem_total
= meminfo
["MemTotal"]
41 mem_free
= meminfo
["MemFree"]
42 mem_cached
= meminfo
["Cached"] + meminfo
["SReclaimable"]
43 mem_buffers
= meminfo
["Buffers"]
44 mem_shared
= meminfo
["Shmem"]
45 mem_available
= meminfo
["MemAvailable"]
47 swap_total
= meminfo
["SwapTotal"]
48 swap_free
= meminfo
["SwapFree"]
50 arc_total
= arcstats
.get("c_max", 0)
51 arc_used
= arcstats
.get("size", 0)
53 calc_used
= mem_total
- mem_free
- mem_cached
- mem_buffers
- arc_used
54 calc_cache
= mem_buffers
+ mem_cached
+ arc_used
55 calc_available
= mem_available
+ arc_used
58 return str(round(x
/1024/1024))
60 print_template("", "total", "used", "free", "shared", "buff/cache", "available")
74 fmt(swap_total
- swap_free
),
84 if __name__
== "__main__":