softhddevice-drm - "cma_alloc failed" - VDR verbraucht Speicher beim Verschieben von Schnittmarken

  • Zu dem Zeitpunkt ist die aktuelle Aufnahme ja nicht geschlossen! Es wird ja eben diese abgespielt. Der Speicher wird von vdr freigegeben wenn die zu schneidende Aufnahme beendet wird.

    Ich glaube, ich habe mich falsch ausgedrückt. Wenn der Speicher ausgeht, während die Aufnahme abgespielt und Marken gesetzt werden, ok... - das Problem habe ich aber hier gar nicht. Es geht mir erstmal nicht darum, dass der Speicher ausgehen kann, wenn man Maken setzt, die Aufnahme pausiert und dann wieder startet.

    Meine Frage ist, warum der freie CMA Speicher VOR Wiedergabe der Aufnahme nicht NACH deren Beenden wieder in der gleichen Größe zur Verfügung steht?
    Das Prozedere "Aufnahme abspielen, Schnittmarke verschieben, Aufnahme beenden, wieder Live-TV ansehen" verringert jedes Mal den CMA Speicher, bis er ausgeht.

    Optimalerweise müsste es doch beispielhaft für den CMA so sein:

    LiveTV: 150MB frei

    Aufnahme abspielen, Pausieren, Schnittmarken verschieben, Schnittmarken anspringen etc....: geht runter bis auf 50MB frei (z.B.)

    Wiedergabe stoppen, LiveTV fortsetzen: wieder 150MB frei

    In Wirklichkeit sind es aber nur mehr 130MB und das nächste Mal 110MB etc...


    Ist meine Theorie, dass ein als CMA allokierter Bereich beim Beenden der Wiedergabe nicht mehr freigegeben wird, denn so abwegig? Es geht mir nicht darum, was während der Wiedergabe mit dem Speicher passiert, sondern dass der CMA nach dem Beenden der Wiedergabe jedesmal schrumpft.

    Genau das wird gebraucht!


    Bei den alten Allwinner SoCs war https://git.kernel.org/pub/scm/linux/…i-a20.dtsi#n175 notwendig, um den CMA im unteren Speicherbereich zu reservieren, damit die VE damit umgehen kann. Bei den neueren SoCs gibt es diese Einschränkung und somit auch die Reservierung über das dts nicht mehr, da läuft das über die Kernelconfig/-parameter und wird intern durch DMA zur Verfügung gestellt. LE reserviert z.B. 320MB über die Kernelconfig. Nur dem H3 wird als Kernel-Parameter noch "vmalloc=320M" mitgegeben, von dem ich nicht weiß, was es damit auf sich hat.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Wenn der Speicher ausgeht, während die Aufnahme abgespielt und Marken gesetzt werden, ok... - das Problem habe ich aber hier gar nicht. Es geht mir erstmal nicht darum, dass der Speicher ausgehen kann, wenn man Maken setzt, die Aufnahme pausiert und dann wieder startet.

    Darum geht es hier aber!

    Meine Frage ist, warum der freie CMA Speicher VOR Wiedergabe der Aufnahme nicht NACH deren Beenden wieder in der gleichen Größe zur Verfügung steht?

    Die Beobachtung habe ich nicht gemacht.

    CMA ist nicht das entscheidende. Wenn der low mem ausgeht kracht's.

  • Na dann reden wir wohl von 2 verschiedenen Beobachtungen und Problemen.

    CMA ist am Ende schon entscheidend, denn wenn ffmpeg davon für av_frame_alloc nichts mehr bekommt - warum auch immer - krachts. lowmem hin oder her. Ich habe hier eh "nur" 1GB und wenn VDR nach dem Beenden der Wiedergabe wieder alles hergeben würde, was belegt wurde, hätte ich genauso viel wie vor Start der Wiedergabe und wäre glücklich. Aber so ist es halt nicht. Der freie Speicher wird jedesmal weniger.

    Mir reichts für heute, ich denk da morgen wieder drüber nach. Schönen Dank bis hierhin.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Es kommen dann halt bei der Nächsten Aufnahme wieder die Meldungen im Log und das letzte Standbild flackert im Livebild.

    Flackert bei dir das Standbild auch mit, wenn du nur eine Aufnahme bearbeitest? Bei mir kommt das schon beim Verlassen der Wiedergabe wenn ich die Aufnahme einmal pausiert habe und/oder eine Marke verschoben habe.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Wenn ich an der Aufnahme keine Marke verschiebe, sondern nur einmal auf Pause drücke und dann während des Pausierens die Aufnahme verlasse flackert nichts. Das müsste ich mal beobachten ab wann das Bild anfängt zu flackern.

    Meine VDRs

    1.yaVDR 0.7 ansible (focal) Terratec Cinergy HD S2 auf asrock B250M Pro4 an Sony Bravia KDL46HX755 mit Hyperion Ambilight

    2. yaVDR 0.7 ansible (focal) virtualisiert per esxi auf Fujitsu D3644-B, i3-9100 , 4GB von 32GB Ram an Octopus-Net Rack

    1. VDR Server mit Ubuntu Server Dom0 auf einem Intel DH77KC und i5 mit virtualisirtem yaVDR 0.5 headless server in DomU mit durchgereichter DD Duoflex C/T v2, Terratec Cinergy HD S2 und seperater Intel GB NIC sowie 3x1TB WD Raid5
    2. yaVDR 0.5 Client auf MSI-Speedster 4AR mit TT FF DVBC am Röhrenfehrnseher ... der jetzt aufgerüstet wird mit GT240 und Sony Bravia KDL46HX755
    3. yaVDR 0.5 Test Client auf MSI Fuzzy mit Core2Duo und ebenfalls GT240 bei 45W.

    4. yaVDR 0.7 ansible (bionic) Terratec Cinergy HD S2 auf MSI-Speedster 4AR und nVidia GT240 GT730 an Sony Bravia KDL46HX755

  • Ok. D.h. wir haben die Situation Seite 6 mittlere Grafik. Der Speicherbereich für unser Multimedia liegt "dynamisch" im reservierten CMA-Bereich und kann auch von anderen Nutzern belegt werden, falls softhddevice das nicht tut. Wenn man davon keinen ausreichenden großen zusammenhängenden Bereich mehr frei hat, bekommt softhddevice ein Problem.

    Wenn man über das dts für den Decoder entsprechend CMA reserviert, sollte der Speicher "theoretisch" von niemand anderem benutzt werden dürfen und wir wären auf Seite 6 untere Grafik.


    Soweit so gut. Das erklärt, warum es krachen kann. Aber es erklärt nicht mein Problem mit dem ausgehenden Speicher aus Post #41, oder? Kann das noch jemand reproduzieren?

    Ich glaube, ich werde dann jetzt doch mal CMA für die VPU über das dts reservieren und schauen, was das bewirkt.

    Weiteres Problem:

    Gestern hatte ich das erste Mal das Problem, dass im laufenden Betrieb ein altes Frame "mitgeflackert" ist. Beim Umschalten war das dann wieder weg. Ich weiß nicht, ob ich was besonderes gemacht habe und konnte das bisher nur beobachten, wenn ich eine Aufnahme bearbeitet habe und diese verlasse.

    Kann das auch jemand bestätigen? JoeBar hast du da noch was rausgefunden?


    Ich versuche in den nächsten Tagen mal hier weiterzukommen. Sonst läufts eigentlich ganz gut. Auch mit 2.5.4 jetzt.

    Gruß

    Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Gestern hatte ich das erste Mal das Problem, dass im laufenden Betrieb ein altes Frame "mitgeflackert" ist.

    Das habe ich bei älteren Kerneln auch ab und an beobachtet. Mit dem aktuellem Kernel ist das nicht mehr aufgetreten.

    Ich glaube, ich werde dann jetzt doch mal CMA für die VPU über das dts reservieren und schauen, was das bewirkt.

    Ich bin gespannt was da rauskommt.

  • Mit

    habe ich jetzt folgendes:

    Code
    andreas@orangepiplus:~$ cat /proc/meminfo
    MemTotal:         734640 kB
    MemFree:          304516 kB
    MemAvailable:     399380 kB
    ......
    CmaTotal:         262144 kB
    CmaFree:          152228 kB

    und

    Wenn ich es richtig erkenne, wird der CMA reserviert und durch no-map nicht für das System zur Verfügung gestellt. Den Speicher direkt mit memory-region der VE zuzuweisen hat zu "[ 33.085565] cedrus 1c0e000.video-codec: failed to get scatterlist from DMA API" Fehlern geführt. Da habe ich noch keine Lösung.

    Mal sehen, ob das schon ausgereicht hat, ich versuch das am Abend mal.

    Gruß

    Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!