Swap-Speicher aus memory disk

morromett

Well-Known Member
Hallo,
Ich möchte zusätzlich zur Swap-Partition, einen kleinen Anteil des RAM, als (höher priorisierter) Swap-Speicher benutzen.
Das Problem ist, wenn ich mit dd eine "swap-Datei" in der memory disk erstelle, kann diese Datei mit swapctl/swapon nicht als Swap-Speicher konfiguriert/hinzufügt werden (die Zugriffsrechte "1777/0666" sind gesetzt). Auf dem Datenträger ist das kein Problem. Von dort wird die mit dd generierte/erstelle "swap-Datei", mit swapctl/swapon sofort als Swap-Speicher akzeptiert und auch benutzt:
Code:
:~ #swapctl -l
Device                    512-blocks     Used    Avail Capacity  Priority
/home/<user>/diverse/swap3      20480     1624    18856     8%    0
/dev/sd0b                    2420624        0  2420624     0%    100
Total                        2441104     1624  2439480     0%
Kennt jemand evtl. eine andere Möglichkeit/Methode, ein Teil des RAM als Swap-Speicher (... schon beim bzw. sofort nach dem booten) zu benutzen? Mit Linux gibt es zram und mit FreeBSD benutze ich mdconfig, aber für OpenBSD habe ich im Internet nichts vergleichbares gefunden.
Danke.
 
Du möchtest ... einen teil des RAMs ... dazu nutzen ... schnelleren SWAP-Speicher zu haben ... SWAP der dafür genutzt wird "langsamen" Speicher zur verfügung zu stellen wenn der RAM knapp wird.

Das ist keine so richtig gute Idee.
 
Das ist keine so richtig gute Idee.
Doch das geht schon, weil ich die Schreibvorgänge auf den Datenträger auf ein Minimum reduzieren/beschränken will und die 10MB für die memory disk, immer als ein Teil des freien Speichers im RAM, zur Verfügung stehen bzw. dem RAM problemlos "entzogen" werden können. Die "abgezeigten" 10 MB aus dem RAM, stören das System nicht.
Ich habe ja mit OpenBSD keine Möglichkeit, die Neigung des Systems zum swappen, so zu beeinflussen wie z. B. unter Linux (... mit der swappiness-Konfiguration). Es wird geswappt obwohl noch genug freier RAM vorhanden ist.
 
Ich muss zugeben, dass ich lauthals losgelacht habe als ich die Frage gelesen habe. :D :D :D
Also, pass auf: SWAP ist ein aelteres Konzept.

Es geht im Prinzip darum, dass RAM schnell ist und teuer. Festplatte ist langsam und billig.
Wenn der RAM anfaengt vollzulaufen, dann werden einfach Teile davon auf die Festplatte kopiert.
Und zurueckgeholt, sobald sie wieder gebraucht werden.
Frueher galt die Faustregel, dass man genausoviel Swap anlegen sollte wie man Speicher hatte.

Warum deine Frage mich daher zum Lachen gebracht hatte: Weil RAM nach RAM ausgelagert werden soll. Warum benutzt man nicht also den RAM als RAM? ;)



ABER, um deine Frage doch noch zu beantworten: Alternative zu SWAP in der Memdisk ist noch mehr RAM. :)


Ich persoenlich habe 128GByte Ram, und 10GByte Swap.
:)
 
ABER, um deine Frage doch noch zu beantworten: Alternative zu SWAP in der Memdisk ist noch mehr RAM.
Also gut, war ja klar, dass die Diskussion erstmal in diese "Richtung" geht. ;-)

Jetzt etwas ausführlicher: Es handelt sich um mehrere PI3Bs (ohne +) und die haben nun mal, nur 1GB RAM und sie tun auch genau das was sie tun sollen. Sie sind europaweit "verteilt" und sie werden nur als Server/gateways, zum Skat spielen via Internet benutzt (nicht mehr, aber auch nicht weniger). Zusätzlich zum OS (OpenBSD) sind nur WireGuard, ircd-hybrid und umurmurd (die lite-Version vom Mumble-server) installiert/konfiguriert. OK, ich könnte auch RaspiOS oder FreeBSD auf diesen PI3Bs benutzen, aber OpenBSD gefällt mir besser. ;-)
 
.... was ist denn der konkrete Fehler bei einer mfs basierten swap datei?
Code:
:~ #mount_mfs -s 3m swap /home/<user>/test
Code:
:~ #df -h | grep -i mfs              
mfs:34835      2.8M    2.0M    694K    75%    /home/<user>/test
Code:
:~/test $dd if=/dev/zero of=swappx bs=1K count=2K 
2048+0 records in
2048+0 records out
2097152 bytes transferred in 0.098 secs (21361290 bytes/sec)
Fehlerausgabe von swapctl:
Code:
:~ #swapctl -a /home/<user>/test/swappx                                                                   
swapctl: /home/<user>/test/swappx: Not supported
 
Hmm.. das mag er in der Tat nicht.

Von den drei genannten wuesste ich aber nicht, dass die im default so "vorab swap" hungrig waeren (wie zB mysql,
das immer irgendwie swap betueddeln will) - und damit wieder bei der Sinnfrage :)
 
Von den drei genannten wuesste ich aber nicht, dass die im default so "vorab swap" hungrig waeren (wie zB mysql,
das immer irgendwie swap betueddeln will) - ...
Nein, es sind nicht die drei. Er swappt auch schon dann, wenn die drei nicht installiert sind bzw. nicht konfiguriert/benutzt werden.
Wenn es technisch nicht geht, dann muss man damit leben oder FreeBSD benutzen. ;-)
 
weil ich die Schreibvorgänge auf den Datenträger auf ein Minimum reduzieren/beschränken will
Du könntest fürs 'Verheizen' jeweils einen billigen USB-Stick dranstecken. Wenn es nur um ein paar MB geht, ist die Geschwindigkeit egal und er wird nicht ganz so schnell ausfallen. Entgegen der Erwartung bekommt man mit Gewalt Flashspeicher doch nicht so schnell kaputt wie man meint. :)
 
Ich habe ja mit OpenBSD keine Möglichkeit, die Neigung des Systems zum swappen, so zu beeinflussen wie z. B. unter Linux (... mit der swappiness-Konfiguration). Es wird geswappt obwohl noch genug freier RAM vorhanden ist.
Das geht schon, wenn Du swap in der fstab auskommentierst und neu bootest. Dann hat dein System kein swap. Ich weiss nur nicht, ob es das ist was Du haben willst. Swap via mfs geht meines Wissens nach nicht, da sonst die Gravitation zu gross wird und ein Schwarzes Loch entstehen wuerde. ;-)
 
Warum deine Frage mich daher zum Lachen gebracht hatte: Weil RAM nach RAM ausgelagert werden soll. Warum benutzt man nicht also den RAM als RAM? ;)
beim Konzept "zram" wie von @morromett oben handelt es sich primär um eine Methode, die "teuren" - da Systemressourcen bindenden und Lebensdauer der Karte verringernden - I/O Zugriffe auf z.B. ne u-SDcard abzufangen und somit das System und die Karte weniger zu belasten; sekundär könnte man argumentieren, dass durch die Kompression auch mehr Pages in 10 MB zram passen, als in 10 MB RAM :)

der Raspi bis v3 hat halt nur mal 1GB RAM und da ist zram durchaus hilfreich, auch wenns auf den ersten Blick lustig erscheint, RAM in RAM auszulagern ;)

Ubuntu und Fedora hatte das sogar auch mal drin, für Installationen auf Rechnern mit "wenig RAM", wenn ich mich recht erinnere

Ich persoenlich habe 128GByte Ram, und 10GByte Swap.
:)
neid xD
 
@morromett, ich glaube Du möchtest:
Code:
swap /SWAPPARTITION mfs rw,nodev,nosuid,-s=64m 0 0
man fstab
Naja, so weit war ich auch schon (... siehe Spoiler im Beitrag #7). Denn damit habe ich die "memory disk" erstellt und gemountet/eingehängt. Wenn Du mir jetzt noch sagen kannst, wie ich diese erstellte "memory disk" als swap-Speicher nutzen kann, bin ich glücklich.

EDIT:

Hier als Beispiel, mit FreeBSD auf einem PI3:
Code:
mdconfig -a -t vnode -f /root/swap1 -u 0
/sbin/swapon -q /dev/md0
Code:
:~ % lsblk
DEVICE         MAJ:MIN SIZE TYPE                                          LABEL MOUNT
md0              0:91     - freebsd-swap                                      - SWAP
 
beim Konzept "zram" wie von @morromett oben handelt es sich primär um eine Methode, die "teuren" - da Systemressourcen bindenden und Lebensdauer der Karte verringernden - I/O Zugriffe auf z.B. ne u-SDcard abzufangen und somit das System und die Karte weniger zu belasten; sekundär könnte man argumentieren, dass durch die Kompression auch mehr Pages in 10 MB zram passen, als in 10 MB RAM :)
Okay, ich entschuldige mich hiermit in aller Form!
zram klingt tatsaechlich nach einer spannenden Sache. Sogar nach einem Feature, welches man sich im Kernel wuenschen wuerde....
Stichwort "neid": Man muss sich ab- und zu auch mal was goennen im Leben. :)
Ich hab die Kohle, die ich waehrend Covid gespart habe, einfach in was schoenes investiert.
 
Auch wenns etwas OT ist: ZRam wurde bis auf manche Edgecases eigentlich auch durch ZSwap abgelöst. Und auf Allerweltsmaschinen ohne besondere Aufgabe habe ich das auch tatsächlich immer aktiviert. Auf meinem Notebook, auf meinen PIs, auf manchen Servern in der Firma und bei Kunden. Idr. stelle ich den Bereich je nach RAM Größe auf nur 5-10%, aber ansonsten hat man damit eigentlich keine Nachteile auf einem halbwegs durchschnittlich genutzten System.
 
Du musst mal nachschauen, was da wirklich swap belegt/belegen wuerde. Im obigen -l ist da 0 byte Usage.

Da 1G bei relink_kernel schon knapp werden kann, ist aber auch denkbar:
  • Generell ohne swap laufen lassen
  • zu syspatch Zeit ein swap-file aktivieren - das ist mit dem reboot dann auch von selber wieder "weg".

Sonst auch noch was mr44er geschrieben hatte, so schnell sterben die Flashis auch nicht (mehr). Ohne so
ein Kasperverhalten wie mysqld sollte die swap Aktivitaet (doas vmstat 1, pi/po) wirklich uebersichtlich sein.
 
Du musst mal nachschauen, was da wirklich swap belegt/belegen wuerde. Im obigen -l ist da 0 byte Usage.
Meinst Du die Ausgabe von "swapctl -l", aus dem 1. Beitrag? Wenn ja, dort wird schon gezeigt, dass swap-Speicher benutzt wird:
Code:
:~ #swapctl -l
Device                    512-blocks     Used    Avail Capacity  Priority
/home/<user>/diverse/swap3      20480     1624    18856     8%    0
/dev/sd0b                    2420624        0  2420624     0%    100
Total                        2441104     1624  2439480     0%
Es sind 1624 blocks (bei Used) in der swap3-Datei "/home/<user>/diverse/swap3", die belegt sind.
Wenn ich die swap-Datei nicht benutze, dann wird swap-Speicher auf der swap-Partition belegt.
Wie kann ich in OpenBSD nachschauen/feststellen, welche Anwendungen Swap-Speicher belegen? "smem" (aus Linux) bzw. "top -w" (mit FreeBSD) gibt es für OpenBSD nicht. Danke.
Code:
:~ $swapctl -l
Device      512-blocks     Used    Avail Capacity  Priority
/dev/sd0b      2420624     1536  2419088     0%    100
Sonst auch noch was mr44er geschrieben hatte, so schnell sterben die Flashis auch nicht (mehr).
Ja, so werde ich das machen, denn wenn es mal Probleme mit den SD-Karten geben sollte, ist OpenBSD auch auf einer anderen/neuen SD-Karte, wieder schnell installiert und konfiguriert.
Danke für die Diskussion.
 
Nicht so wirklich, aber die paar blocks koennten auch einfach nur swap-interna sein.

swapctl -d /dev/sd0b raeumt da auf und dann mit swapctl -a wieder anmachen. IMHO passiert da einfach garnix weiteres.
 
... koennten auch einfach nur swap-interna sein.

swapctl -d /dev/sd0b raeumt da auf und dann mit swapctl -a wieder anmachen. IMHO passiert da einfach garnix weiteres.
Nach dem löschen/aufräumen und wieder anmachen/hinzufügen von Swap-Speicher, ist keine Nutzung von Swap-Speicher (... bei "pkg_add -uU" bei WireGuard-/irc- und Mumble-Traffic) zu beobachten. Was anderes wird mit den PI3Bs auch nicht gemacht.
Code:
:~ #pstat -s          
Device      512-blocks     Used    Avail Capacity  Priority
/dev/sd0b      2420624        0  2420624     0%    0
D. h. der geringe Swap-Speicher-Verbrauch, der sofort nach dem booten zu sehen ist, wird evtl. (nur) durch den boot-Vorgang verursacht, aber schon in Zusammenhang/Abhängigkeit mit dem geringen RAM von 1GB beim PI3B, ... denn bei einem PI4B mit 8GB RAM und OpenBSD drauf, wird nicht geswappt. Ich werde die PI3Bs (mit OpenBSD) bzgl. Swap-Speicher, weiter beobachten.
 
Okay, ich entschuldige mich hiermit in aller Form!
no need to, really!
zram klingt tatsaechlich nach einer spannenden Sache. Sogar nach einem Feature, welches man sich im Kernel wuenschen wuerde....
bei mir schmierte der RPi mit zram regelmäßig nach ca 4 - 8 Wochen ab - aber das ist natürlich nicht aussagekräftig (nur einer mit einem RPi, welcher da Probleme hatte)
Stichwort "neid": Man muss sich ab- und zu auch mal was goennen im Leben. :)
thumbup
Ich hab die Kohle, die ich waehrend Covid gespart habe, einfach in was schoenes investiert.
aufm Konto wirds jeden Tag weniger wert, deswegen: investieren Sie jetzt! :D
 
Ähm, vielleicht hilft das ?!?

Auszug vom Thread: If you want a swap file < 2Gb
Bash:
dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
chmod 0600 /usr/swap0
mdconfig -a -t vnode -f /usr/swap0 -u /dev/md98
swapon /dev/md98
Or to change size:
Bash:
swapoff -a
swapoff /dev/md98
mdconfig -d -u 98
dd if=/dev/zero of=/usr/swap0 bs=1m count=1536
chmod 0600 /usr/swap0
mdconfig -a -t vnode -f /usr/swap0 -u /dev/md98
swapon /dev/md98
Quelle: Upgrade to 18.1 fail - 'pkg update' required
Grüsse
 
Zurück
Oben