add memory stats
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package mem
|
||||
|
||||
import (
|
||||
"finally-a-monolithic-linux-hw-monitor/app/mem/drivers"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func RenderMem(console *strings.Builder, mem *Mem) {
|
||||
fmt.Fprintf(console, "=== %s ===\n", "Memory")
|
||||
RenderUsageSensors(console, mem)
|
||||
RenderHardwareSensors(console, mem)
|
||||
}
|
||||
|
||||
func RenderUsageSensors(console *strings.Builder, mem *Mem) {
|
||||
usage, _ := mem.SensorReader.ReadUsageSensors()
|
||||
fmt.Fprintf(console, "--- Usage ---\n")
|
||||
fmt.Fprintf(console, "%-16s | %.2f GiB\033[K\n", "Total", usage.TotalGB)
|
||||
fmt.Fprintf(console, "%-16s | %.2f GiB (%.2f%%) \033[K\n", "Used", usage.UsedGB, usage.UsedPercent)
|
||||
fmt.Fprintf(console, "%-16s | %.2f GiB\033[K\n", "Avail", usage.AvailableGB)
|
||||
}
|
||||
|
||||
func RenderHardwareSensors(console *strings.Builder, mem *Mem) {
|
||||
hardware, _ := mem.SensorReader.ReadHardwareSensors()
|
||||
for i := range len(hardware.ModelNames) {
|
||||
fmt.Fprintf(console, "--- RAM Module %d ---\n", i)
|
||||
modelName := hardware.ModelNames[i]
|
||||
fmt.Fprintf(console, "%-16s | %-16s \033[K\n", "Model Name", modelName)
|
||||
generation := hardware.Generations[i]
|
||||
speed := hardware.Speeds[i]
|
||||
fmt.Fprintf(console, "%-16s | %s@%s \033[K\n", "Speed", generation, speed)
|
||||
formFactor := hardware.FormFactors[i]
|
||||
fmt.Fprintf(console, "%-16s | %s \033[K\n", "Form Factor", formFactor)
|
||||
}
|
||||
}
|
||||
|
||||
type Mem struct {
|
||||
SensorReader MemSensorReader
|
||||
}
|
||||
|
||||
func GetMem() (Mem, error) {
|
||||
memInfoDriver := drivers.NewMemInfoDriver()
|
||||
dmiDecodeDriver := drivers.NewDmiDecodeDriver()
|
||||
reader := &StandardMemSensorReader{
|
||||
UsageReader: memInfoDriver,
|
||||
HardwareReader: dmiDecodeDriver,
|
||||
}
|
||||
return Mem{
|
||||
SensorReader: reader,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type MemSensorReader interface {
|
||||
ReadUsageSensors() (drivers.MemoryUsage, error)
|
||||
ReadHardwareSensors() (drivers.MemoryHardware, error)
|
||||
}
|
||||
|
||||
type StandardMemSensorReader struct {
|
||||
UsageReader drivers.UsageDriver
|
||||
HardwareReader drivers.HardwareDriver
|
||||
}
|
||||
|
||||
func (r *StandardMemSensorReader) ReadUsageSensors() (drivers.MemoryUsage, error) {
|
||||
return r.UsageReader.ReadUsageSensors()
|
||||
}
|
||||
|
||||
func (r *StandardMemSensorReader) ReadHardwareSensors() (drivers.MemoryHardware, error) {
|
||||
return r.HardwareReader.ReadHardwareSensors()
|
||||
}
|
||||
Reference in New Issue
Block a user