Gladys RAM-Nutzung

Ja, da gibt es eindeutig ein Problem, meiner Meinung nach:

  • entweder ein Bug in ffmpeg, der in einer aktuellen Version von ffmpeg eingeführt wurde
  • oder eine Änderung in der ffmpeg-API, die wir nicht in Gladys integriert haben
  • oder eine Änderung in Node 18 bei der Verwaltung von Child-Prozessen

Man muss ermitteln, ich hatte noch keine Zeit dafür, aber ich nehme gerne Hilfe zum Thema an :slight_smile:

Edit: Zur Info nutzen wir diese Bibliothek in Gladys:

Nachdem ich alle gemeldeten Probleme gesehen habe (295 Issues) und die Tatsache, dass die Bibliothek nicht mehr wirklich gepflegt wird, wäre es besser, einfach ffmpeg selbst über einen Node-Child-Prozess zu starten, um es ordnungsgemäß schließen zu können

Das ist eigentlich eine Funktion (und kein Bug)

Der Vorteil ist, dass man immer ein frisches Bild im Speicher hat, damit, wenn du das Dashboard öffnest, du direkt ein frisches Bild aus dem Speicher erhältst und keine Verzögerung hast, bis ein neues Bild abgerufen wird

Das ist an sich eine gute Idee, aber der CPU-Aufwand ist ziemlich hoch. Ich kann mir nicht vorstellen, was passiert, wenn man 5 oder mehr Kameras in Gladys anschließt.
Bei mir (Mini-PC) bin ich von durchschnittlich 6% auf 50% bis 70% (Bild alle 10 Sekunden) gestiegen.

Um die Leistung zu optimieren, könnte Gladys im Hintergrund aktualisieren, aber nur alle Minuten, solange kein Dashboard geladen ist?
Letztlich ist das hier ein Detail, wenn man den anderen, viel wichtigeren Bug bedenkt!

Das Problem mit der Leistung liegt bereits im Hintergrund, ffmpeg wird vom Server ausgeführt.

Genau dafür ist dieser Parameter « 1 Minute/30 Sekunden/10 Sekunden » usw. da :slight_smile:

Hier verwenden Sie diesen Parameter, um eine Art Live-Effekt auf dem Dashboard zu erzeugen, aber das ist zu ressourcenintensiv, weil es dafür nicht wirklich gedacht ist ^^

Für Live-Updates auf dem Dashboard bin ich der Meinung, dass das eine nette Erweiterung wäre, die man ordentlich entwickeln könnte :slight_smile:

Hallo zusammen!

Ich nehme dieses Thema wieder auf, das in Vergessenheit geraten war, es gab kein GitHub Issue :sweat_smile:

Ich habe heute Morgen an der Ersetzung der veralteten Bibliothek ffmpeg-fluent gearbeitet, die wahrscheinlich die Ursache für diesen Speicherleak ist.

Ich ersetze sie durch ein einfaches child_process, das den Speicher freigibt, sobald das Kamerabild abgerufen wurde.

Der Pull Request ist hier:

Nochmals Entschuldigung für die Verspätung, zögert bitte nicht, mich bei solchen Themen zu erinnern, wenn es keine Aktivität gibt, und denkt daran, ein GitHub Issue zu erstellen (Issues · GladysAssistant/Gladys · GitHub), das ist die « TODO-Liste » der zu behebenden Fehler des Projekts :slight_smile:

Und was passiert, wenn das Bild nie abgerufen wird?
Soweit ich mich erinnere, war das eine andere Ursache für mein Problem, ein Speicherleak, wenn die Kamera nicht mehr verfügbar ist.

Der Befehl timeout nach 10 Sekunden ohne Antwort, und dann wird der child_process getötet, also keine Speicherlecks :slight_smile:

Dieses Thema ist in Gladys Assistant 4.47.0 gegangen :slight_smile:

Ich wäre neugierig, eure Rückmeldungen nach dem Update zu hören, insbesondere von dir @spenceur!

@spenceur Hast du deinen RAM-Verbrauch seit Version 4.47 ein bisschen im Auge behalten?

Tut mir leid, ich hatte wirklich keine Zeit dafür ^^