SWAP Datai in RAM-Disk anlegen

  • Hallo liebe C't-VDR, Gemeinde.


    Ich betreibe das Basissystem auf einer CF-Card um diese zu schonen habe ich auf ihr keine Swap-Partition eingerichtet.


    Das Debian Basissystem *Kernal 2.6.18* erstellt eine dynamische RamDisk auf /dev/shm/.
    Dort möche ich den swap einrichten. Dazu habe ich die /etc/init.d/mtab.sh um die follgenden Zeilen erweitert


    domtab devpts /dev/pts "devpts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
    # SWAP-Space erstellen
    dd bs=8192 if=/dev/zero of=/dev/shm/linuxswp.img count=32768
    chmod 600 /dev/shm/linuxswp.img
    mkswap -L swap /dev/shm/linuxswp.img
    sync
    swapon -a


    Der Swap wird aber nicht aktiviert


    ct-vdr:~# swapon -s
    Filename Type Size Used Priority


    Hat dazu jemand eine Idee ????


    Danke.

  • Servus,


    meinst Du nicht, dass es schwachsinnig ist, *virtuellen* Speicher in *realen* Speicher zu packen? Das trifft die Idee der Swap-Partition/Datei nicht ganz, oder? ;)


    Was passiert bei Speichermangel? Richtig, es wird ausgelagert. Was passiert bei Auslagerung auf eine dynamische Ramdisk? Richtig, sie wird größer, der verfügbare physische Speicher wird kleiner -> es wird noch mehr ausgelagert... GOTO Anfang.


    cu
    Markus

  • Warum möchte man sowas machen?


    Swap im RAM klingt nach nem Paradoxon.
    Wenn dein RAM nicht ausreicht, dann soll dein Rechner in der Lage sein, momentan nicht benötigte Teile des Arbeitsspeichers auf die Festplatte auszulagern (swappen).


    Demnach macht Swap in ner Ramdisk für mich pauschal keinen Sinn.

    Hardware: Zalman HD160XT; Asus H97M-Plus, 1024MB RAM, Digital Devices Cine S2 (rev 7), Atric-Einschalter, NEC3520 DVD-Laufwerk, Samsung 256 GB SSD-Festplatte --> darauf yaVDR 0.6
    Hifi: Denon AVR4306, Samsung UE40ES6300

  • kann mich hier nu meinen Vor-Postern anschliessen - wenn Du Deinen in der Signatur angegebenen Rechner als "reinen" VDR nutzt, kannst Du Dir m.E. mit 1 GB RAM den SWAP komplett schenken - bei mir laeuft z.B. ein VDR mit 128MB RAM und deaktiviertem SWAP absolut stabil...

    ## Server: AsRock G31M-S, Celeron 420, 1GB RAM, 4TB HDD, Skystar2 Rev 2.6C, Realtek RTL81xx LAN, yaVDR 0.5a ##
    ## Client 1: Zotax IONITX-D-E, Atom N330, GF9400M, 2GB RAM, yaVDR 0.5a via HDMI an Panasonic Viera TH-37PX80E ##
    ## Client 2: Trekstor Xtreamer Sidewinder an 22" LCD (in Arbeit => Mediatomb) ##

  • Nun denn.


    Der VDR kommt mit 256 M Ram und einem gleich großen Swap locker hin. Gibt man ihn aber nun 512 M Ram und keinen Swap so hängt er sich irgendwann auf.


    Meine Befürchtung ist das LINUX wenn ihm mehr RAM zur Verfügung steht verschewnderischer mit RAM umgeht und sich denkt "ich habe ja noch den swap" und merkt erst nachdem es alles verballert hat "ups da ist ja kein SWAP und friert ein.


    desshalb denke ich braucht das System einen SWAP

  • aeh, also wenn 512MB RAM nicht reichen, dann koennen 256MB RAM und 256MB swap auch nicht funktionieren.
    Sicher, dass du nicht noch was in der Konfiguration vergessen hast? Damit Linux weiss, dass es keine swap hat?


    Gruss,
    - berndl

  • Hi Cristof,


    Du brauchst keinen SWAP. Deine Befürchtung bleibt zum Glück nur eine. Für was sollte Linux den RAM "verschwenden"?



    Mein VDR ist plattenlos, hat keinen SWAP und kommt mit 256 MB RAM tadellos hin.


    Versuche doch bitte mal nachzuvollziehen, was mit 512 un noswap wirklich passiert.
    Hängt sich der ganze Rechner komplett weg?
    Freeze?
    Unbedienbar?


    Unter Linux gibt es einen OOM Killer, welcher bei "outofmemory" anfängt Prozesse zu killen, damit wieder RAM frei wird. Das passiert nicht still und leise sondern wird im syslog protokolliert.
    Bitte mal testen und dann wieder melden.


    berndl.
    Da wird nichts konfiguriert. Entweder Linux hat eine Swappartition oder nicht.


    Bis dahin Guten Rutsch.


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

    2 Mal editiert, zuletzt von pixelpeter ()

  • Zitat

    Original von Christof
    Der VDR kommt mit 256 M Ram und einem gleich großen Swap locker hin. Gibt man ihn aber nun 512 M Ram und keinen Swap so hängt er sich irgendwann auf.


    Das liegt aber dann wohl eher nicht am RAM, moechte ich meinen. Deine Logik bzgl. Swap ist jedenfalls vollkommen daneben.


    Zitat


    Meine Befürchtung ist das LINUX wenn ihm mehr RAM zur Verfügung steht verschewnderischer mit RAM umgeht und sich denkt "ich habe ja noch den swap" und merkt erst nachdem es alles verballert hat "ups da ist ja kein SWAP und friert ein.


    Nein. Computer koennen nicht denken. Und ich kenne keine Applikation, die sich je nach verfuegbarem RAM ihren Bedarf festlegt. Im Gegenteil aufgrund der Speicherverwaltung wissen die Applikationen garnicht wieviel RAM zur Verfuegung steht. Und Linux als Betriebssystem selbst akzeptiert einfach die Anforderungen der Applikationen und nutzt entsprechend dem RAM oder Swap (sofern vorhanden).

    Zitat


    desshalb denke ich braucht das System einen SWAP


    Nein.
    Du musst nur rausfinden, warum die Kiste irgendwann abschmiert. Dazu sind die Logfiles eine gute Hilfe. Ebenso das Kommando top.


    Mach doch bitte einen neuen Thread auf, damit nicht noch jemand auf die Idee kommt, den Swap im RAM anlegen zu wollen.


    Sorry, aber die Idee ist wirklich VOLLKOMMENER Schwachsinn! :lehrer1
    Da braucht man jetzt auch garnicht mehr weiterdiskutieren. :computertod
    EOT

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Zitat

    Originally posted by pixelpeter
    berndl.
    Da wird nichts konfiguriert. Entweder Linux hat eine Swappartition oder nicht.
    Bis dahin Guten Rutsch.
    Peter


    ah, ich dachte da muesste man noch irgendwo beim booten dem Kernel etwas mitteilen. Aber umso besser, wenn's so einfach ist.


    Gruss+guten Rutsch,
    - berndl

  • Erst eimal vielen, vielen dank für eure Antworten.


    Es freut mich, dass das System ob mit oder ohne SWAP gleich stabiel sein soll.


    Dann werde ich die Zeilen wieder löschen.


    Ich kann mir aber schon vorsellen, das Programme, die viele Daten Puffern, und mit mehr RAM besser arbeiten können, beim start prüfen wieviel RAM noch zur Verfügung steht und sich davon abhängig einen ordendlichen Batzen allocieren lassen.


    Das Problem tritt in erster Liene beim vdrcd Plugin auf. Die erste Audio-CD die ich eingelegt hatte, hat er sich ersteimal fast komplett reingesaugt und ne 1/2 Stunde gespielt ohne auf überhaut das CD-Laufwerk wieder anlaufen zu lassen. Nach dem zweiten CD-Wechsel hat das zum freez des Systems geführt.


    Danke euch allen
    Gruß Christof

  • Hi, das ist ja auch was anderes!


    Wenn RAM da ist, dann wird es auch benutzt. Es ist aber nicht deine Applikation, sondern der Kernel der die CD schon mal einliesst soweit es geht. Waere weniger RAM da, dann wuerde er das auch nicht tun.
    Wenn du mal sowas wie 'xosview' am laufen hattest, dann koenntest du sehen, dass der Speicher in 3 Teile aufgeteilt ist: USED+SHARED, BUFFER, und CACHE.
    Es geht hier nur um die maximale Performance...


    Gruss,
    - berndl


  • Genau ! Freien Spreicher gibt's nie nicht !!!

    Powered by Point of View ION330 und Mystique SaTiX-S2 Dual
    Geguckt wird auf einem 52PFL5605H/12 per HDMI mit Atmolight Quattro
    Audio optisch per Yamaha RX-V459 auf einem Teufel Concept P
    Non-TV content über XBMC und boblight
    Remote Harmony 525 durch Atric-IR
    Remote und Streaming mit Motorola XOOM und AndroVDR sowie Daroon Player
    Streaming auf ZBOX ID-81 und Desktop per streamdev
    All based on selfbuild OpenenELEC master


    Nebenbei noch ein par andere VDRs

  • Zitat

    Original von Christof
    Ich betreibe das Basissystem auf einer CF-Card um diese zu schonen habe ich auf ihr keine Swap-Partition eingerichtet.


    Danke.


    wenn Deine CF aktuellen Herstellungsstandards entspricht und Du noch Platz dafür hast, richte Dir ruhig Swap ein.


    Moderne Flash Speicher sind dafür ausgelegt. Bsw. ist Flash Speicher in Hybrid Festplatten ( siehe bsw. hier --> http://www.seagate.com/www/de-…momentus_5400_psd_hybrid/ ) eingebaut und dient dort als Cache für schnelleren Zugriff und weniger Stromverbrauch.


    Gruß Fr@nk

  • Danke für eure mitarbeit !


    berndl


    kann denn da nicht genau das Problem liegen wenn ich keinen swap habe. Linux teilt die verfügbaren Speicher und Buffer-bereiche schön auf die laufenden Prozesse auf. Nun braucht ein weiterer Prozess mehr Speicher. Das System würde beginnen Auszulagern, kann es aber nicht, da kein swap vorhanden ist.


    Dann ist es doch sinnvoll in dem System beim Starten RAM-Speicher zu blockieren:


    dd bs=8192 if=/dev/zero of=/dev/shm/linuxswp.img count=32768


    erzeugt eine 256MB große Datai *dev/shm/linuxswp.img* in der dynamischen RAM-Disk, diese dann mit:


    chmod 600 /dev/shm/linuxswp.img
    mkswap -L swap /dev/shm/linuxswp.img
    sync
    swapon -a


    dem System als swap-Bereich zur Verfügung gestellt wird.
    sofern es das zulassen würde.


    @lola


    ich möchte dafür keinen CF-Speicher verschenken, was weiß ich was ich noch für Plugins installieren möchte

  • Zitat


    kann denn da nicht genau das Problem liegen wenn ich keinen swap habe. Linux teilt die verfügbaren Speicher und Buffer-bereiche schön auf die laufenden Prozesse auf. Nun braucht ein weiterer Prozess mehr Speicher. Das System würde beginnen Auszulagern, kann es aber nicht, da kein swap vorhanden ist.


    Nein, Speicher wird nicht zugeteilt/aufgeteilt sondern von Programmen angefordert. Nehmen wir an, es laufen n Programme, die 1/4 des Speichers der Kiste angefordert haben und benutzen. Linux hat also noch 3/4 unter eigener Verwaltung. Es nutzt diesen Speicher mangels besserer Verwendung als Filesystem-Cache. Jetzt startest Du Programm n+1. Dieses fordert Speicher an, Linux teilt diesen zu, indem es den Cache verkleinert. Ist kein Cache zum Verkleinern mehr da, bekommt das Programm keinen Speicher. Wurde es von einem cleveren Programmierer geschrieben, verabschiedet es sich geordnet mit Fehlermeldung, ansonsten fliegt es irgendwie auseinander. Das gleiche gilt auch für bereits laufende Programme, die zusätzlichen Speicher wollen.


    Grüße,
    Holger


    PS.: alle meine VDRs laufen ohne Swap (diskless boot über Netz) und haben 256 MB. Speichermangel hab ich bisher noch nicht erlebt.

    VDR 1-3: Zotac ZBox HD-ID42, yavdr-0.5
    VDR 4: AMD5900/Asus M3N-78, yavdr-0.5
    DVB-Empfang: Netceiver
    Storage: via NFS von separatem Fileserver

    [size=10]

  • Zitat

    kann denn da nicht genau das Problem liegen wenn ich keinen swap habe.


    Nein, da der Swap als Speicher behandelt wird. Dann bräuchte es Deiner Logik nach eine unendliche Kaskade von Swap-Stapeln um das Problem in den Griff zu bekommen. Wenn Speicher voll, dann Speicher voll, da ändert eine Erweiterung durch Swap auch nix mehr. Denn auch die ist irgendwann voll und Du stehst wieder am Anfang.


    Zitat

    Linux teilt die verfügbaren Speicher und Buffer-bereiche schön auf die laufenden Prozesse auf. Nun braucht ein weiterer Prozess mehr Speicher. Das System würde beginnen Auszulagern, kann es aber nicht, da kein swap vorhanden ist.


    Nein, es werden belegte aber nicht benötigte Speicherbereiche (Cache) freigegeben. Im Cache liegen nur Daten, die auch wiederhergestellt werden können. Es hat halt nur Vorteile wenn man die mal "auf Verdacht" schon im Speicher hat anstatt sie von der langsamen Platte lesen zu müssen, wenn sie gebraucht werden. Wird der Speicher für was wichtigeres (Programm) benötigt, wird halt dann der noch nicht benötigte Datenbestand bei Abruf dann doch von der Platte gelesen.


    Zitat

    Dann ist es doch sinnvoll in dem System beim Starten RAM-Speicher zu blockieren:


    dd bs=8192 if=/dev/zero of=/dev/shm/linuxswp.img count=32768


    erzeugt eine 256MB große Datai *dev/shm/linuxswp.img* in der dynamischen RAM-Disk


    Nochmal: Du hast keinen freien Speicher, lagerst diesen aber in den Speicher aus. Klackerts noch immer nicht? ;)
    Der Kernel wird immer erst versuchen, den physischen Speicher optimal zu nutzen bevor er das swappen (=extrem langsamer Zugriff, Vergleich Datendurchsatz Speicher<->Festplatte, gar noch als Dateizugriff) anfängt. Diese Aktion bringt genau garnichts. Doch, weniger freien physischen Speicher bei erhöhtem Verwaltungsaufwand für den Kernel ;)


    cu
    Markus


    PS: Linux Kernel != Windows, dort gibt es einige Programme die nicht ohne Auslagerungsdatei laufen, da gibt es beim Start schon die lustigsten Fehler, siehe Worms2 ;)
    PSPS: Obs gar ein Bait ist? ;)

  • OK.


    SWAP+RAM=Arbeitsspeicher


    RAM prio vor SWAP sonst scheiß egal.


    Mein VDR-Prozess seht schon wieder.
    Konsole geht aber noch. Hier ein Top-Dump



    top - 17:06:09 up 5:56, 1 user, load average: 0.05, 0.03, 0.04
    Tasks: 44 total, 2 running, 42 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 906792k total, 376532k used, 530260k free, 15112k buffers
    Swap: 0k total, 0k used, 0k free, 323080k cached


    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1 root 15 0 1952 644 548 S 0.0 0.1 0:01.01 init
    2 root 39 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
    3 root 10 -5 0 0 0 S 0.0 0.0 0:00.16 events/0
    4 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
    5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
    8 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 kblockd/0
    9 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
    82 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
    124 root 25 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
    125 root 15 0 0 0 0 S 0.0 0.0 0:00.01 pdflush
    126 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
    127 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
    563 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
    875 root 10 -5 0 0 0 S 0.0 0.0 0:00.80 kjournald
    1035 root 21 -4 2188 628 368 S 0.0 0.1 0:00.26 udevd
    1318 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
    1371 root 15 0 0 0 0 S 0.0 0.0 0:00.00 arm_mon
    1581 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kmirrord
    1885 root 15 0 1632 620 512 S 0.0 0.1 0:11.08 syslogd
    1891 root 15 0 1580 380 308 S 0.0 0.0 0:10.96 klogd
    1951 root 25 0 1580 564 476 S 0.0 0.1 0:00.00 acpid
    1997 Debian-e 18 0 5324 1000 700 S 0.0 0.1 0:00.00 exim4
    2009 root 25 0 1756 560 464 S 0.0 0.1 0:00.00 inetd
    2016 root 15 0 6164 1456 992 S 0.0 0.2 0:00.08 nmbd
    2018 root 15 0 9224 2564 1800 S 0.0 0.3 0:00.01 smbd
    2027 root 18 0 9224 1084 320 S 0.0 0.1 0:00.00 smbd
    2040 root 15 0 4928 1076 744 S 0.0 0.1 0:00.00 sshd
    2058 root 13 -2 2180 608 320 S 0.0 0.1 0:00.00 dhclient3
    2213 root 25 0 2704 1368 1084 S 0.0 0.2 0:00.00 runvdr
    2249 vdr 15 0 210m 27m 7232 S 0.0 3.1 0:36.78 vdr
    2263 daemon 15 0 1836 480 356 S 0.0 0.1 0:00.00 atd
    2272 root 18 0 2196 892 708 S 0.0 0.1 0:00.00 cron
    2289 vdr 15 0 0 0 0 S 0.0 0.0 0:00.23 kdvb-fe-0
    2300 root 18 0 1580 496 428 S 0.0 0.1 0:00.00 getty
    2301 root 18 0 1576 496 428 S 0.0 0.1 0:00.00 getty
    2302 root 18 0 1580 500 428 S 0.0 0.1 0:00.00 getty
    2303 root 18 0 1580 500 428 S 0.0 0.1 0:00.00 getty
    2304 root 18 0 1580 500 428 S 0.0 0.1 0:00.00 getty
    2305 root 18 0 1580 500 428 S 0.0 0.1 0:00.00 getty
    2341 root 15 0 7860 2396 1912 S 0.0 0.3 0:00.44 sshd
    2343 root 17 0 4340 1356 976 S 0.0 0.1 0:00.03 sftp-server
    2360 root 15 0 7868 2384 1920 R 0.0 0.3 0:00.48 sshd
    2362 root 15 0 4436 1660 1292 S 0.0 0.2 0:00.01 bash
    2661 root 15 0 2236 1116 860 R 0.0 0.1 0:00.00 top

  • Zitat

    Original von Christof
    Mein VDR-Prozess seht schon wieder.


    Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 906792k total, 376532k used, 530260k free, 15112k buffers


    Nix zu tun , freier RAM ohne Ende ...
    daher ist das :


    Zitat


    Konsole geht aber noch. Hier ein Top-Dump


    kein Wunder ;)


    Da sich dein VDR weghängt und nicht das System , wäre interessant mit welchem Fehler sich VDR weghängt ??


    HJS

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!