Dynamische Speicherzuweisung

  • Kurz gefragt: Hat jemand Erfahrung/Kenntnis darüber?


    Hintergrund: Ich beobachte ja seit ca. einem Jahr immer wieder, dass auf meinem NAS mit 64 GB RAM zeitweise urplötzlich der RAM auszugehen scheint. Manchmal kommt deswegen erst eine Warnung, aber manchmal geht es sogar soweit, dass Anwendungen automatisch beendet werden. Vielleicht ist auch der eine oder andere Komplettabsturz dadurch verursacht.

    Meine Odyssee diesbezüglich ist schon recht umfangreich. Anfangs hatte ich eindeutig als Ursache Virtualization Station im Verdacht. Habe ich dieses nämlich beendet, war das Problem weg - vorübergehend. Allerdings wurde mein Blick dann doch nochmal umgelenkt. Neben vielen Updates, Austausch (blockweise) des RAM inkl. Erhöhung von 48 auf 64 GB hatte ich dann gedacht, dass die Ursache mit einer kleinen Umstellung in TVHeadend beseitigt sei (Stichwort: Weg von OTA-EPG, wurde in einschlägigen Beiträgen auch als Problem scheinbar bestätigt), was auch wieder erst mal zu helfen schien. Allerdings auch nicht dauerhaft. Jetzt aber kann ich eindeutig beobachten, dass ein Zusammenhang mit einer ganz speziellen Windows-10-VM herrscht. Diese ist bei mir aus diversen Gründen praktisch im Dauerbetrieb. Ihr habe ich großzügige 16 GB zugeordnet (man hat's ja). Jetzt kann ich immer wieder beobachten, dass auch nach einem Neustart des NAS und mit jeder aktuellen FW (QTS 5.0 ist bisher außen vor) wieder auftritt - unabhängig von TVHeadend. Spätestens nach 3-4 Tagen, manchmal Laufzeit steigt urplötzlich der RAM-Bedarf des NAS auf nahe 64 GB. Ich habe dann jetzt beobachtet, dass auch zumindest wenn ich speziell danach gesehen habe, die Windows-10-V= im Taskmanager 100% Auslastung des RAM zeigt, obwohl sich diese eigentlich langweilen sollte.


    Schlussendlich viel mir dann ein, dass ich ja hier mal mit der dynamischen Speicherzuweisung experimentiert hatte, dies dann aber angesichts anderer Probleme total aus den Augen verloren habe. Gemeinsame Speichernutzung hatte ich bei mehreren VMs aktiviert, so auch zwei kleine Linux-VM mit je 1 GB RAM, die kontinuierlich laufen. Aber das dynamische eben nur bei dieser WIndows-10-VM. Habe das jetzt mal deaktiviert und hoffe, dass es sich damit hat. Nötig sollte es mit den 64 GB RAM eigentlich sowieso nicht sein, denke ich. Gerade läuft wieder alles stabil seit ca. einem Tag, ohne Neustart von NAS oder QVS, mit Neustart der betreffenden Win10-VM aber eben komplett ohne dyn. Speicherzuweisung und auch ohne gemeinsame Speichernutzung.


    Vielleicht kann ja jemand ähnliches bestätigen?

  • Ich bin ja nicht der große "VMler", habe bei mir aber trotzdem nochmal reingeschaut und dabei ist mir eingefallen, dass die dynamische Zuweisung wohl keine Option ist, die man einfach aktiviert. Wie gesagt, kenne mich damit nicht aus, habe aber das dazu gefunden, falls es Dich irgendwie auf eine Spur bringen kann:

    https://www.qnap.com/en/how-to…rtual-machine-performance

  • Besten Dank, aber das kenne ich. Ja, ich hatte das etwas kurz gefasst, zugegeben. Man muss das schon vorab auch in den Präferenzen von QVS ggf. anpassen. Das hatte ich aber auch versucht, so zum Beispiel dem System die maximal möglichen 2 GB RAM zugesichert. Trotzdem lief der RAM gestern wieder voll. Es muss da offensichtlich etwas falsch laufen beim Freigeben. Manchmal helfen solche Tricks wie auf diversen Seiten (Suche nach "linux speicher freigeben), aberdann doch auch nur kurzfristig - wenn überhaupt.

  • Findet sich was bei KVM bezüglich Mem Leak

    Ist jetzt lang her, aber verfolgt mich ja immer noch. Ob man jetzt dabei von einem Memory Leak spricht, ist mir nicht wirklich klar, dazu kenne ich mich zu wenig mit der Materie aus. Beiträge in dieser Richtung lassen sich zwar finden, aber nichts für mich wirklich fassbares. Tatsache ist, so habe ich die Tage jetzt endlich mal detailliert festgestellt: Starte ich eine VM mit Windows 10 oder 11, passiert zunächst nichts besonderes. Alles Dynamische hinsichtlich Speicher habe ich deaktiviert. Starte ich auf einer VM dann aber ein längeres Programm beispielsweise zur Videobearbeitung, dann steigt der Speicherbedarf. So zumindest aktuell reproduzierbar auch nach mehrmaligem Neustart des NAS. Nach Abschluss der Videobearbeitung sinkt der Speicherbedarf nach einiger Zeit wieder.


    Mittlerweile habe ich herausgefunden, dass dies durch den sogenannten "Slab" verursacht wird. slabtop zeigt weiter, dass es sich konkret darin wiederum um "kmalloc-32" handelt. Dieser Bereich steigt nämlich solange, bis der physikalische RAM praktisch aufgebraucht ist. Vermutlich sind genau die 2 GB noch frei, die ich dem Betriebssystem in den Einstellungen von Virtualization Station reserviert habe.


    Ist ja prinzipiell nicht dumm, dass das Teil den vorhandenen Speicher auch nutzt. Nicht schön ist aber, dass andere Anwendungen dann leiden - weil sie vermutlich dann doch auf den langsamen Swap angewiesen sind. So zum Beispiel laufende Aufnahmen unter TVHeadend.


    Im Bild unten ist zuerkennen: Über mehrere Stunden laufen drei Windows-VMs mit 16 und 2x 8 GB RAM ohne etwas zu tun. Der verfügbare RAM ist dann ca 18 GB - kommt hin. Dann starte ich eben auf einer der VMs eine Videoschnitt-Anwendung und sofort fällt der verfügbare RAM in identischem Maße, wie der Slab-Anteil des Caches zunimmt. Ich beende dann die Anwendung und auch die beiden VMs mit je 8 GM, die mit 16 GB läuft weiter. Ganz oben im Bild wird sichtbar, wie hier dann doch auf den Swap zugegriffen werden muss.


    Das war jetzt nicht das extremste Beispiel, aber das deutlichste.


    Aktuell warte ich auf die nächste Rückfrage seitens des Supports hierzu. Ich bezweifle, dass man auf dem richtigen Weg ist. Man fragt immer nach Screenshots zu den VM-Einstellungen und zu den Prozessen im Resourcenmonitor - wo ja diese Last nicht auftaucht....

    pasted-from-clipboard.png