[xmltv2vdr] Kann nun mit "tmpfs" arbeiten ...

  • Hi,


    Joe_D hat eine wunderbare Änderung an "vdr-plugin-xmltv2vdr" vorgenommen, es kann jetzt wenn vorhanden ein "tmpfs" zur Laufzeit nutzen.


    Die Idee dazu ist eher aus der Not geboren, eine Script-basierte Steuerung ist für Debian konforme Paketbauer wohl undenkbar ... ;)


    Daher kam der Gedanke auf, das Plugin prüfen zu lassen ob beim Start im FHS konformen "/var/run" ein Unterverzeichnis "/var/run/vdr" existiert, was dann genutzt wird, wenn nicht wie gehabt SSD/HDD. Die DB wird weiterhin im definierten Massenspeicher-Pfad gesichert, Default "VIDEO_DIR".


    [EDIT] Weiter unten führt Joe_D aus, das Plugin prüft auf "/var/run/vdr"=tmpfs oder "/tmp"=tmpfs und nutzt dies nur dann! [/EDIT]


    Das sollte somit für alle Linux-Derivate lösbar sein, bei yaVDR wird "/var/run/vdr" schon längere Zeit beim VDR Start (plugin-loader[.sh]) für z.B. "osdteletext" angelegt evtl. inzwischen auch bei den eTobi/SOliver Paketen. Der Start sieht dann so aus:

    Code
    Apr 22 20:56:09 vdr2 vdr: [1569] initializing plugin: xmltv2vdr (0.2.0pre): Importiert xmltv epg in den VDRApr 22 20:56:09 vdr2 vdr: [1569] starting plugin: xmltv2vdrApr 22 20:56:09 vdr2 vdr: [1569] xmltv2vdr: using codeset 'UTF-8'Apr 22 20:56:09 vdr2 vdr: [1569] xmltv2vdr: using file '/srv/vdr/video.00/epg.db' for epg database (storage)Apr 22 20:56:09 vdr2 vdr: [1569] xmltv2vdr: using file '/var/run/vdr/epg.db' for epg database (runtime)Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' added epgsourceApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' reading source configApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' is providing data through a pipeApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' updates data @00:00Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' is providing picsApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' daysmax=15Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' reading plugin configApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' daysinadvance=15Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' using pics=0Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' weekdays=MTWTFSSApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' nextrun on Tue Apr 23 20:08:00 2013Apr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: 'tvm2xmltv' is ready2parseApr 22 20:56:14 vdr2 vdr: [1569] xmltv2vdr: using sqlite v3.7.9


    Bitte mal testen, ich sag nur geil :thumbup:


    Regards
    fnu

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()

  • Klasse, läuft bei mir vermutlich voll gegen die Wand ;) (Es sei denn es wird geprüft obs wirklich tmpfs ist)


    Die Idee dazu ist eher aus der Not geboren, eine Script-basierte Steuerung ist für Debian konforme Paketbauer wohl undenkbar ... ;)


    Eine pluginübergreifende Umgebunsvariable wie z.B. VDR_TMP ist ja wohl auch undenkbar ;)


    BTW: Meine "plugin.xmltv2vdr.conf" sieht so aus

    Code
    --epgfile=%VDR_CONFIG_BASE_DIR%/epg/epg.db
    --episodes=%VDR_CONFIG_BASE_DIR%/config/vdrseriestimer


    Geht also schon (auch bei debian konformen Paketen ;) ) wenn man will.


    cu

  • Klasse, läuft bei mir vermutlich voll gegen die Wand ;)


    Mußte auch meine ganzen Scripte wegwerfen ... ^^

    HowTo: APT pinning

  • Super Sache. Aber warum /var/run?


    Klar das ist tmpfs, aber /tmp doch auch, oder hat sich das noch nicht in allen Distris durchgesetzt?


    Bei Debian stable ist /var/run UND /tmp das normale root Filesystem, nix tmpfs. Ich denke da gibts nix verlässliches was für alle passt ;)


    Wobei /tmp als tmpfs nun auch sehr ungünstig ist wenn da Software (z.B. das Burn Plugin) mal schnell 5 GB zwischenlagern will.


    Ich habe für meinen VDR /dev/shm/.vdr/vdr/tmp (tmpfs) für den Kleinkram und /srv/BIGTMP (Liegt auf der Datenpartition mit viel Platz) wenns mal Platz braucht.


    cu

  • Aber warum /var/run?


    Für "/tmp" ist nach FHS "tmpfs" kein Zwang, "/var/run" wohl dagegen schon.


    Bei squeeze ist das kein "tmpfs"? Hab nur Wheezy gecheckt ... :versteck

    HowTo: APT pinning

  • Bei squeeze ist das kein "tmpfs"?


    Jup. Ich erinnere mich jetzt auch nicht da was umgebastelt zu haben.



    cu

  • Nachtrag, bei Wheezy & Precise ist der Mountpunkt "/run" mit einem symbolischen Link nach "/var/run" um eben FHS zu entsprechen ...


    Wie auch bei ArchLinux ... eben kurz geguckt ...

    HowTo: APT pinning

  • Also Archlinux folgt dem, was Fedora macht und dort ist "/tmp" tmpfs und "/var/tmp" normales Filesystem. Ist ja letztlich auch egal.


    Ja, aber Du fragst doch warum nicht "/tmp"? Eben weil das oft kein "tmpfs" ist, aber "/run" bzw. "/var/run" auch bei ArchLinux ... ?

    HowTo: APT pinning

  • (Es sei denn es wird geprüft obs wirklich tmpfs ist)


    Er schreibt nicht nach "/var/run"! Er prüft ob "/var/run/vdr" existiert und nutzt das, wenn das nicht da ist passiert nix ...


    Eine pluginübergreifende Umgebunsvariable wie z.B. VDR_TMP ist ja wohl auch undenkbar ;)


    Nun, frag nicht mich ...


    Geht also schon (auch bei debian konformen Paketen ;) ) wenn man will.


    Nein, da gab es vom Meister höchstpersönlich eine Absage für ... ;)

    HowTo: APT pinning

  • Klasse, läuft bei mir vermutlich voll gegen die Wand ;) (Es sei denn es wird geprüft obs wirklich tmpfs ist)

    Bei mir wird (fast) nichts 0815 gemacht. Zuerst wird geprüft ob es /var/run/vdr gibt und ob dies als tmpfs läuft, dann wird geprüft ob es /tmp gibt und als tmpfs läuft. Ist beides nicht der Fall entspricht das runtime-Verzeichnis dem storage-Verzeichnis. Das funktioniert auch wenn man eine komplett andere Datei und Lagerort für das "storage" angegeben wird. Eigentlich ziemlich easy ;)


    Gruß


    Joe_D

  • Na denn ist ja super :)


    War auch nicht so ernst gemeint, ich bin nur kein Fan von diesen "nehmen wir den User mal an die Hand und machen das für ihn" Lösungen, deswegen konnte ich mir nen Spruch nicht verkneifen.


    Wobei, für Debian schient es dann wohl doch sinnig zu sein. Denn dort fehlen eindeutig Mechnismen (z.B. die Möglichkeit kurze Shell Snippets in die plugin.<pluginname>.conf zu packen) für solche Fälle.



    Nein, da gab es vom Meister höchstpersönlich eine Absage für ... ;)


    Den VDR ins Debian-System zu quetschen ist aber auch nen Krampf. Schon alleine die Tatsache das die Pluginconfigverzeichnisse nicht in /etc liegen sorgt dafür das man das eh alles nicht mehr so wirklich Debiankonform handeln kann.


    cu

  • Unter Gentoo/Gen2VDR sieht es schlecht mit tmpfs aus.


    Wäre schön, wenn das Plugin einen Parameter (z.B. --tmpfsdir=) für das tmpfs-Verzeichniss bekommen könnte. Dann könnte man das selber definieren

  • Wäre schön, wenn das Plugin einen Parameter (z.B. --tmpfsdir=) für das tmpfs-Verzeichniss bekommen könnte. Dann könnte man das selber definieren


    Joe_D wollte keinen weiteren Parameter und ich finde er hat das sehr gut gelöst, es stellt selbst gen2vdr Nutzer vor keine unmögliche Aufgabe ... ;)


    Du hast doch auch kein Problem eine RAM-Disk für "osdteletext" anzulegen ... ? Leg doch einfach "/tmp" als tmpfs an, so wie es vmtl. die meisten VDR Nutzer eh tun:


    Code
    #/> vi /etc/fstab
    ...
    tmpfs	/tmp	tmpfs	nosuid,size=256M	0	0
    ...


    Damit fackelst Du nebenbei auch noch Dein "/tmp/osdteletext" ab. Wenn nix da ist, arbeitet das Plugin wie seither auch, auf Disk/FS Ebene ...


    Regards
    fnu

    HowTo: APT pinning

    2 Mal editiert, zuletzt von fnu ()

  • Eben weil das oft kein "tmpfs" ist, aber "/run" bzw. "/var/run" auch bei ArchLinux ... ?


    Der Vollständigkeit halber:



    Hast also Recht. /var/run ist nach /run gesymlinkt und /run ist tmpfs.

  • Wenn es "nur" um Performance geht - hat schonmal jemand sowas probiert ??
    http://qt-project.org/forums/viewthread/9090


    Mit entsprechend großer Cache Size sollte es doch ähnlich performant sein oder ?


    Wenn es natürlich darum geht nur beim Shutdown einen konsisten Stand wegzusichern und ansonsten nie zu schreiben ist es so natürlich top :)

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Wenn es natürlich darum geht nur beim Shutdown einen konsisten Stand wegzusichern und ansonsten nie zu schreiben ist es so natürlich top :)


    Ja, genau das war der Plan, die HDD Aktivität wie z.B. auch bei "osdteletext" einzuschränken.


    Nebenbei ist es natürlich auch schneller, aber man hat kein Problem damit wenn die DB auf einer HDD liegt ... :)


    Regards
    fnu

    HowTo: APT pinning

    Einmal editiert, zuletzt von fnu ()

  • Nur mal ein Gedanke:


    Wie wäre ein weiteres Standard Verzeichnis


    Neben:


    ConfigDirectory
    ResourceDirectory
    CacheDirectory
    VideoDirectory


    auch noch
    TempDirectory


    das zeigt dann standardmäßig nach /tmp/vdr
    Debian und Co können dann /tmp/vdr als tmpfs mounten und bei den anderen passt es von vornherein.


    Alternative 1: CacheDirectory umdefinieren. Das kollidiert dann aber mit der epg.data, weil die ja liegen bleiben soll.


    Alternative 2: xmltv2vdr und osdteletext schreiben nach /dev/shm/vdr. Ich habe das zwar noch nicht versucht, aber im Archlinux Wiki wird soetwas im Zusammenhang mit Firefox beschrieben.
    Edit: Ich habe es versucht und man darf da als User tatsächlich Daten ablegen.

  • Danke für die Anpassung, spart mir einen Upstart-Job :D

    Gruß utiltiy



    VDR Projekte VDR Projects

Jetzt mitmachen!

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