RAM-Anzeige im Dashboard stimmt nicht

Started by bamf, November 12, 2025, 05:32:44 PM

Previous topic - Next topic
Hallo,

warum zeigt das Dashboard die RAM-Auslastung nicht korrekt an?

Tatsächlich liegen 18 GB Logs im tmpfs:

root@OPNsense:~ # df -h /var/log
Filesystem    Size    Used   Avail Capacity  Mounted on
tmpfs          32G     18G     14G    56%    /var/log
root@OPNsense:~ # du -h -d 1 /var/log | sort -h
  0B /var/log/ntp
  0B /var/log/radacct
  0B /var/log/suricata
8.0K /var/log/monit
 28K /var/log/telegraf
 36K /var/log/ntpd
 41K /var/log/pkg
 53K /var/log/gateways
 57K /var/log/lighttpd
246K /var/log/firewall
538K /var/log/routing
590K /var/log/resolver
1.7M /var/log/system
 41M /var/log/audit
 50M /var/log/configd
 83M /var/log/squid
 84M /var/log/kea
 18G /var/log
 18G /var/log/filter

Weil evtl je nach deinem Setup:

* ZFS da ist und ZFS für /var/log ggf. inline compression nutzt und df deshalb was anderes reported als faktisch der Fall ist?
* Weil das Disk Widget im Screenshot sich nur auf die physikalische Platte/SSD bezieht und nicht auf ein tmpfs mount? (kann man im Widget ja einstellen was angezeigt wird)
* Weil das evtl einfach nur im RAM rumeiert (RAM Disk aktiviert?)

Da bräuchte man ein paar Infos mehr.

Cheers :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense than no(n)sense at all! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

November 13, 2025, 08:04:54 PM #2 Last Edit: November 13, 2025, 08:14:06 PM by bamf
Klar ist die RAMDisk aktiviert, sonst wäre /var/log ja kein tmpfs.

Was hat denn das Disk Widget mit dem Memory Widget zu tun?

Die RAMDisk ist ein tmpfs. Was hat das ZFS auf den physischen Platten damit zu tun?

Ich hätte einfach nur gerne, dass das Memory Widget mir anzeigt, wie mein Memory ausgelastet ist. Dafür ist es docch da oder.

Quote from: JeGr on November 13, 2025, 06:29:09 PMDa bräuchte man ein paar Infos mehr.

Welche Infos brauchst du denn und wie kann ich die liefern?

Ich frage jetzt mal in einem anderen Forum, ob da jemand eine Idee hat.

Ruf mal "top" auf und guck dir diese Zeile an:

Mem: 209M Active, 1869M Inact, 3488M Wired, 2286M Free

und vergleich das mit dem Widget. Wie das mit dem tmpfs zusammen geht, weiß ich jetzt spontan auch nicht.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Ich habe mittlerweile etwas aufgeräumt und nur noch 5,8 GB Logs in /var/log.

Top sagt:

Mem: 361M Active, 20G Inact, 4410M Wired, 104K Buf, 38G Free
Die Anzeige des Widget stimmt immer noch nicht. Das zeigt 2,4 GB belegten RAM an, während alleine die Logs 5,8 GB im tmpfs belegen.

Filesystem    Size    Used   Avail Capacity  Mounted on
tmpfs          32G    5.9G     26G    18%    /var/log

Die sind Teil von den 20G Inact. Das ist Speicher, auf den ewig nicht zugegriffen wurde. Der wird behandelt wie "Free", weil man das ja jederzeit raus swappen kann, wenn nötig.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Hm, das verstehe ich nicht. Das 32 GB tmpfs ist doch fest. Wenn der RAM voll läuft, werden dann Logs gelöscht? Wie soll das funktionieren?

Wenn da 18 GB Logs im tmpfs legen, gehe ich davon aus, dass dieser RAM anderen Anwendungen nicht zur verfügung steht. Falsch?

Mit "raus swappen" ist in den Swap verschieben gemeint, nicht löschen. Wenn der RAM vollläuft, dann werden inaktive Pages (und damit potentiell auch das tmpfs) in den Swap verschoben. Hast Du keinen bzw. nicht ausreichend Swap, dann geht das natürlich nicht. Dann ist der RAM eben voll.

Die Speicherverwaltung berücksichtigt bei der Bewertung als "inaktiv" nicht, ob das tmpfs-Daten oder irgendwelche anderen Daten sind.

Und das Widget zählt inaktive Pages zum "freien" Speicher. Ob das sinnvoll ist kann man sicherlich diskutieren.

Grüße
Maurice
OPNsense virtual machine images
OPNsense aarch64 firmware repository

Commercial support & engineering available. PM for details (en / de).

Betrachtet man den inaktiven Speicher als "belegt", dann sähe es so aus:

opnsense-patch a49dece
OPNsense virtual machine images
OPNsense aarch64 firmware repository

Commercial support & engineering available. PM for details (en / de).

Dazu kommt, dass das tmpfs eben nicht "fest" ist. Das liegt nicht im physischen Speicher sondern im virtuellen. Wenn du ein 10G tmpfs anlegest, ist das dadurch belegte RAM: 0. Schreibst du dann 1G hinein, wird 1G RAM allokiert.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Aber wenn 18 GB an filter Logs im tmpfs liegen, dann muss der RAM doch belegt sein?

November 14, 2025, 11:07:24 AM #11 Last Edit: November 14, 2025, 11:09:33 AM by meyergru
Nein, die 18 GByte können in den Swap ausgelagert werden und werden deshalb nicht als aktiv gewertet. Du könntest das sehen, wenn mehr RAM benötigt würde - dann würde ein Teil des durch das tmpfs belegten Platzes swap ausgelagert - aber eben nur, wenn das notwendig ist.

Die Swap-Belegung wird sichtbar, wenn man "top -oswap -w" oder "swapinfo" aufruft. Normalerweise wird genausoviel Swap wie physisches RAM angelegt. Bei Dir fällt das alles nicht ins Gewicht, weil der Kernel plus die Programme plus das tmpfs zusammen immer noch kleiner als das RAM ist.

Wenn Du unter System: Firmware: Packages das Paket "stress-ng" installierst, kannst Du beispielsweise "stress-ng -m1 --vm-bytes 32G --vm-keep" aufrufen. Damit wird Dein gesamtes RAM belegt, so dass Auslagerungen stattfinden müssen. Dadurch werden wahrscheinlich zuerst die (inaktiven) Log-Dateien ausgelagert. Du wirst mit "top -oswap -w" sehen, dass zuerst der Free-Anteil schnell kleiner wird und wenn er nahe Null ist, beginnt der Swap, sich zu füllen.

Jetzt klarer?
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Quote from: bamf on November 14, 2025, 10:32:15 AMAber wenn 18 GB an filter Logs im tmpfs liegen, dann muss der RAM doch belegt sein?

Das ist der Teil, den ich ja auch nicht ganz verstehe :-)
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

November 14, 2025, 11:21:39 AM #13 Last Edit: November 14, 2025, 11:29:29 AM by Maurice
Schreibst Du 18 GB Daten in das tmpfs, dann sind dadurch 18 GB RAM belegt, aber eben "inaktiv". Und das Widget interpretiert inaktive Belegung als "frei".

Momentan ist die Logik zur Berechnung des belegten Speichers:

belegt = physisch - frei - cached - inaktiv

Es spricht manches dafür, die inaktiven Pages hier nicht abzuziehen. Teste mal den Patch aus meinem letzten Beitrag, der tut genau das.
OPNsense virtual machine images
OPNsense aarch64 firmware repository

Commercial support & engineering available. PM for details (en / de).

Diesen Patch kann ich einfach so anwenden, ohne für zukünftige Updates irgendwas kaputtzumachen? Ich bin da eher vorsichtig :)

Wenn das sinnvoll ist, könnte man das ja mal Upstream einbauen?

Swap habe ich jetzt mal mit swapoff -a und auskommentieren der Zeilen in der fstab ganz abgeschaltet. Brauche ich nicht bei der Menge an RAM. Die Firewall loggt um die 700 MB / Tag, da reichen die 32 GB tmpfs locker für 31 Tage.