RAM-Disk ohne Speicherverbrauch?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Ulidor
Beiträge: 545
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

RAM-Disk ohne Speicherverbrauch?

Beitrag von Ulidor » 22.10.2022 10:52:32

Auf meinem Bullseye habe ich eine RAM-Disk eingerichtet:

Code: Alles auswählen

$ cat /etc/fstab | grep /mnt/rd
tmpfs    /mnt/rd    tmpfs    defaults      0       0

$ mount | grep /mnt/rd
tmpfs on /mnt/rd type tmpfs (rw,relatime)
Frisch gestartet sieht der Speicher so aus:

Code: Alles auswählen

$ free -h
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       1,8Gi        12Gi        27Mi       962Mi        12Gi
Swap:           29Gi          0B        29Gi
Da ich beim Eintrag in /etc/fstab die size-Option nicht angegeben habe, sollten max. 50% des RAM belegbar sein, das wären bei mir 8GiB.

Jetzt schiebe ich Dateien mit insgesamt 6GiB in /mnt/rd und der Speicher sieht so aus:

Code: Alles auswählen

$ free -h
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       1,9Gi       309Mi       6,0Gi        12Gi       6,8Gi
Swap:           29Gi       1,0Mi        29Gi
Ich kann auf die Dateien einwandfrei zugreifen, aber wo werden sie gespeichert?
Starte ich den Rechner neu, ist /mnt/rd wieder leer. Also auch das spricht dafür, dass sie im RAM gespeichert wurden. Aber wieso wird das beim Speicherverbrauch nicht angezeigt?
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Meillo » 22.10.2022 10:58:26

In der letzten Spalte ``verfuegbar'' sehen die Werte richtig aus.

Oder was genau ist deine Frage? Was passt aus deiner Sicht nicht.
Use ed once in a while!

Benutzeravatar
Ulidor
Beiträge: 545
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Ulidor » 22.10.2022 11:43:16

Aber warum ändert sich der Wert von „benutzt" dann nicht? Oder verstehe ich den Eintrag falsch?

KDE verwendet bei der grafischen Systemlastanzeige anscheinend ebenfalls diesen Wert. Das finde ich irritierend, denn so viel Speicher, wie mir da angezeigt wird, ist dann ja gar nicht mehr frei.
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Meillo » 22.10.2022 11:53:29

Ulidor hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 11:43:16
Aber warum ändert sich der Wert von „benutzt" dann nicht? Oder verstehe ich den Eintrag falsch?
Das kann gut sein. Die Angaben von free(1) koennen leicht fehlinterpretiert werden. Hier eine Erklaerung (falls du das auf Englisch verstehst):
https://linuxhandbook.com/free-command/ hat geschrieben: To avoid some potential confusion, let’s clarify what those terms mean.

- Total is straightforward. This figure represents all existing memory.
- Used is a calculation of the total system ram minus allocated free, shared, buffer, and cache memory.
- Free is memory that is not being used for any purpose.
- Shared, Buffer, and Cache fields identify memory being used for kernel/operating system needs. The buffer and cache are added together and the sum is listed under ‘buff/cache’.
- Available memory appears in newer versions of free and is intended to give the end user an estimation of how many memory resources are still open for use.

These clarifications are important. Incorrectly attributing meaning to the terms free or used memory can create a misconception of your system’s memory use.

This may lead an inexperienced user to falsely believe their system needs to be upgraded with more RAM. Note that in previous versions there was no display for available memory. Users may incorrectly assume that because there is high memory usage, their hardware is underpowered. The available tab was presumably put in place to help offset this common misunderstanding.
Man kann sich merken: die letzte Spalte (available/verfuegbar) ist diejenige, die fuer Endanwender normalerweise die relevanteste ist.
Use ed once in a while!

Benutzeravatar
Ulidor
Beiträge: 545
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Ulidor » 22.10.2022 12:23:42

Okay, danke. Dann war ich wohl zu sehr auf den Wert „benutzt" fixiert.

Auf diese Merkwürdigkeit aufmerksam geworden war ich eigentlich durch die grafische Systemauslastungsanzeige von KDE. Da wird ja in einer Kurve der Verlauf des benutzten Speichers angezeigt. Und da ich keinen Screenshot posten wollte, habe ich free verwendet und war verwundert, dass dort der Speicher der RAM-Disk auch nicht von „benutzt" abgezogen wird.

Meiner Meinung nach ist es ein Fehler, dass durch die RAM-Disk nicht verfügbarer Speicher nicht in der Systemauslastungsanzeige von KDE berücksichtigt wird.
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von MSfree » 22.10.2022 12:41:33

Ulidor hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 12:23:42
Meiner Meinung nach ist es ein Fehler, dass durch die RAM-Disk nicht verfügbarer Speicher nicht in der Systemauslastungsanzeige von KDE berücksichtigt wird.
Wie voll ist denn die RAM-Disk?

Wenn du eine 2GB-RAM-Disk erzeugst, wird nicht sofrot 2GB Hauptspeicher dafür reserviert. Die 2GB sind als Maximum zu verstehen. Wenn da nur 100kB an Dateien drinstehen, sind auch nur 100kB im RAM belegt (plus ein wenig Overhead für das simulierte Dateisystem), und nicht 2GB.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Meillo » 22.10.2022 12:57:03

MSfree hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 12:41:33
Wenn du eine 2GB-RAM-Disk erzeugst, wird nicht sofrot 2GB Hauptspeicher dafür reserviert. Die 2GB sind als Maximum zu verstehen. Wenn da nur 100kB an Dateien drinstehen, sind auch nur 100kB im RAM belegt (plus ein wenig Overhead für das simulierte Dateisystem), und nicht 2GB.
Aber die volle Groesse der Ramdisk muss doch schon zugesichert werden. D.h. RAM + Swap muss dafuer ausreichen, die Ramdisk plus den tatsaechlich gebrauchten Arbeitsspeicher fuer die Programme (also ohne Caches) aufzunehmen. Reserviert kann aber etwas anderes als aktiv genutzt sein. So jedenfalls denke ich mir das.

Die Zeiten, in denen der Arbeitsspeicher durch nur zwei Zahlen (Groesse und Belegt) beschrieben werden konnte, sind halt vorbei. Heute muss man schon technisch verstehen, wie die Speicherverwaltung funktioniert, um die Zahlen korrekt interpretieren zu koennen.
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von MSfree » 22.10.2022 13:15:06

Meillo hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 12:57:03
Die Zeiten, in denen der Arbeitsspeicher durch nur zwei Zahlen (Groesse und Belegt) beschrieben werden konnte, sind halt vorbei.
Diese Zeiten hat es bei Multitaskingbetriebssystemen eigentlich noch nie gegeben.

Der Kernel jongliert schon immer fröhlich Speicher für Caches, Buffers, Swap und RAM-Disks in der Gegend rum. Dazu kommt, daß Programcode zumindest teilweise geteilt sein kann, Stichwort .so-Dateien (=shared Objects).

Das einzige, was der Kernel jederzeit eindeutig kennt, ist die Spiechermenge, die wirklich frei ist. Cache und Buffer kann je nach Bedarf dynamisch vergrößert und verkleinert werden. Cache und Buffers wird bei Bedarf verworfen und dem freien Speicher zugeschlagen. Wenn dann noch Swapspace konfiguiert ist, hat der Kernel noch einen Freiheitsgrad mehr, was er mit der Speicherverwaltung anstellen kann.

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von wanne » 22.10.2022 14:44:53

Meillo hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 12:57:03
Reserviert kann aber etwas anderes als aktiv genutzt sein. So jedenfalls denke ich mir das.
Im Gegensatz zu Dateien gibt es den Unterschied für RAM nicht wirklich. Zumindest für i386, amd64 und arm* gilt: Der Kernel nennt der CPU einen bestimmten Teil des Speichers das nun einer (oder Mehreren) Prozessen zugeordnet ist und dann dürfen die machen, was immer sie für richtig halten. Der Kernel hat also keine Ahnung mehr ob das wirklich genutzt wird. Deswegen sind Speicherleaks ein bleibendes Problem.
Weder tmpfs noch ramfs reservieren deswegen Speicher:

Code: Alles auswählen

# free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi       3.7Gi        22Gi       140Mi       5.3Gi        26Gi
Swap:            9Gi          0B         9Gi
# mkdir /tmp/bla
# mount -t tmpfs -o size=60G none /tmp/bla
# df -h
[…]
none                       60G     0   60G   0% /tmp/bla
# free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi       3.8Gi        22Gi       141Mi       5.3Gi        26Gi
Swap:            9Gi          0B         9Gi
Erst wenn wirklich geschrieben wird, wird wirklich speicher genutzt

Code: Alles auswählen

head -c 5G /dev/zero > /tmp/bla/test
# free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi       4.0Gi        16Gi       5.1Gi        10Gi        21Gi
Swap:            9Gi          0B         9Gi
Achtung ramfs hat keinen size Parameter und wird deswegen auch nicht in df angezeigt:

Code: Alles auswählen

# umount /tmp/bla
# mount -t ramfs -o size=10m none /tmp/bla
# free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi       4.0Gi        20Gi       140Mi       6.3Gi        25Gi
Swap:            9Gi          0B         9Gi
# head -c 5G /dev/zero > /tmp/bla/test
# free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi       4.0Gi        16Gi       140Mi        10Gi        21Gi
Swap:            9Gi          0B         9Gi
tmpfs ist keine ramdisk. Wenn es nicht genutzt wird, wird es in den SWAP geschoben. ramfs dagegen würde alles andere aus dem RAM schieben und meinen Rechner unbenutzbar lahm machen, wenn ich das jetzt einfach 32GIB rein schreiben würde weil alles andere in den SWAP wandern würde.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Ulidor
Beiträge: 545
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Ulidor » 22.10.2022 14:58:38

MSfree hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 12:41:33
Wie voll ist denn die RAM-Disk?
Meine RAM-Disk ist 8GiB groß und ich hatte 6GiB reingepackt. (Siehe mein erstes Posting.)
MSfree hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 13:15:06
Das einzige, was der Kernel jederzeit eindeutig kennt, ist die Spiechermenge, die wirklich frei ist.
Okay, das habe ich jetzt verstanden. Ich fände es eben schön, wenn die Systemauslastungsanzeige von KDE das auch so anzeigen würde, anstatt die 6GiB, die sich in der RAM-Disk befinden, zu ignorieren. Denn die sind definitiv nicht mehr frei.
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von wanne » 22.10.2022 15:41:23

Ulidor hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 14:58:38
Meine RAM-Disk ist 8GiB groß und ich hatte 6GiB reingepackt. (Siehe mein erstes Posting.)
wanne hat geschrieben:tmpfs ist keine ramdisk.
MSfree hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 13:15:06
Okay, das habe ich jetzt verstanden. Ich fände es eben schön, wenn die Systemauslastungsanzeige von KDE das auch so anzeigen würde, anstatt die 6GiB, die sich in der RAM-Disk befinden, zu ignorieren. Denn die sind definitiv nicht mehr frei.
Doch. Hast du nullen rein geschrieben freier als alles zu Nullen geht nicht.
Starte ich den Rechner neu, ist /mnt/rd wieder leer. Also auch das spricht dafür, dass sie im RAM gespeichert wurden. Aber wieso wird das beim Speicherverbrauch nicht angezeigt?
Mach ein tmpfs mit 20GiB und voll. Beobachte das gleiche und erkläre mir, wie 20GIB Daten in 16GiB RAM passen!
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Ulidor
Beiträge: 545
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Ulidor » 22.10.2022 16:28:38

wanne hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 15:41:23
Mach ein tmpfs mit 20GiB und voll. Beobachte das gleiche und erkläre mir, wie 20GIB Daten in 16GiB RAM passen!
Das verstehe ich jetzt nicht. Warum sollte ich ein tmpfs mit 20GiB anlegen, wenn ich insgesamt nur 16GiB habe?

So wie ich das tmpfs angelegt habe, kann es maximal 8GiB groß werden (dynamisch, also nur dann, wenn Daten hineingeschrieben werden), und ich habe 6GiB an Daten reingepackt.
Und ich wundere mich, warum dieser Speicherverbrauch von der grafischen Systemauslastungsanzeige von KDE ignoriert wird.
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RAM-Disk ohne Speicherverbrauch?

Beitrag von Meillo » 22.10.2022 17:39:29

Ulidor hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 16:28:38
wanne hat geschrieben: ↑ zum Beitrag ↑
22.10.2022 15:41:23
Mach ein tmpfs mit 20GiB und voll. Beobachte das gleiche und erkläre mir, wie 20GIB Daten in 16GiB RAM passen!
Das verstehe ich jetzt nicht. Warum sollte ich ein tmpfs mit 20GiB anlegen, wenn ich insgesamt nur 16GiB habe?
Ich vermute, dass gerade darin der Lernerfolg liegen soll.
Use ed once in a while!

Antworten