add memory usage module with collector, scene, and script
This commit is contained in:
parent
cd6295e26f
commit
4169e0c5b6
4 changed files with 129 additions and 0 deletions
36
panels/memory/memory_collector.gd
Normal file
36
panels/memory/memory_collector.gd
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
extends RefCounted
|
||||
class_name MemoryCollector
|
||||
|
||||
|
||||
func collect() -> float:
|
||||
var meminfo := _read_meminfo()
|
||||
if meminfo.is_empty():
|
||||
return 0.0
|
||||
|
||||
var total := meminfo.get("MemTotal", 0)
|
||||
var available := meminfo.get("MemAvailable", 0)
|
||||
|
||||
if total == 0:
|
||||
return 0.0
|
||||
|
||||
return 100.0 * (1.0 - float(available) / float(total))
|
||||
|
||||
|
||||
func _read_meminfo() -> Dictionary:
|
||||
var file := FileAccess.open("/proc/meminfo", FileAccess.READ)
|
||||
if file == null:
|
||||
return {}
|
||||
|
||||
var result: Dictionary = {}
|
||||
while not file.eof_reached():
|
||||
var line: String = file.get_line().strip_edges()
|
||||
if line.is_empty():
|
||||
continue
|
||||
var parts := line.split(":", false)
|
||||
if parts.size() < 2:
|
||||
continue
|
||||
var key := parts[0].strip_edges()
|
||||
var val_str := parts[1].strip_edges().split(" ", false)[0]
|
||||
result[key] = val_str.to_int()
|
||||
|
||||
return result
|
||||
Loading…
Add table
Add a link
Reference in a new issue