System – QTS und der Schrecken des Arbeitsspeicherverbrauchs

00 Titel.pngIch glaube die Problematik wurde schon in dem einen oder anderen Thema hier im Forum diskutiert. Aus aktuellem Anlass möchte ich dies etwas genauer beleuchten.


Meine beiden Test-NAS - TS-328 und TS-473A - laufen beide mit QTS 5.0. Ich wollte schon im Frühjahr zu diesem Thema ein Artikel schreiben. Ist dann nie dazu gekommen. Da lief das TS-328 noch unter QTS 4.5.2. Auch hier bestand das Problem schon. Ist also nicht erst mit QTS 5.0 entstanden.



1. Der Beginn allen Übels


Man ist gut gelaunt und denkt sich nichts Schlechtes, meldet sich an der WebGUI seines NAS an – in meinem Fall am TS-328 – und wird ganz freundlich mit folgender Meldung begrüßt:


01 Meldung.png


WTF??? Die gute Laune ist nun dahin. Das NAS wurde gerade hochgefahren. Ein Neustart bringt in diesem Fall gar nichts. Applikationen laufen bei diesem NAS nur die notwendigsten. Was sich deaktivieren ließ ist und war immer schon deaktiviert. Auch dies wird nichts bringen. Wer sich jetzt denkt: RAM-Erweiterung. Guter Gedanke, aber bei einem TS-328 leider keine Option, da nicht möglich.


Also was macht man in solch einer Situation: Erst mal blöd aus der Wäsche gucken. :)

Nein im Ernst. Gehen wir dem Problem methodisch auf den Grund.



2. Was bedeutet diese Meldung


Bei einigen wird schon das erste Fragezeichen beim zweiten Word der Meldung aufleuchten: „Swap-Speicherauslastung“. Oder anders gefragt, welcher Mechanismus verbirgt sich hinter Swap-Speicher?


Swap-Speicher ist eine Technik, die es erlaubt den Arbeitsspeicher eines Computer-Systems auf eine Festplatte auszulagern. Dies wird gerne auch als virtueller Arbeitsspeicher bezeichnet. In Zeiten virtueller Systeme ist dies Bezeichnung ein wenig irreführend. Swap-Speicher kommt meist dann zum Einsatz, wenn der Arbeitsspeicher droht überzulaufen, sprich für alle Anwendungen und das System zu wenig Arbeitsspeicher vorhanden ist. Dann beginnt das System Teile des Arbeitsspeichers auf die Festplatte auszulagern. Unter Windows kennt man dies als die Datei mit dem Namen „pagefile.sys“, welche sich meist auf dem System-Laufwerk C: befindet. Diese Datei ist eine versteckte Systemdatei und ist üblicherweise mehrere GB groß. Unter Linux ist dies in der Regel eine eigene Partition auf der Systemfestplatte. Diese Partition wird normalerweise beim Installieren oder wie es QNAP bezeichnet, beim Initialisieren des NAS automatisch eingerichtet. Über Größe und Position muss man sich hier keine Gedanken machen. QTS wählt automatisch für jedes NAS Model das Passende aus.


Grundsätzlich ist dies eine feine Sache, kann man so dem Problem des Speichermangels ausweichen. Die Schwierigkeit dahinter: Festplattenspeicher, gerade bei HDDs (Hard Disk Drive), den mechanischen / magnetischen Festplatten, ist sehr viel langsamer als RAM (Random Access Memory), also der Arbeitsspeicher / Hauptspeicher. Die Verwendung des Swap-Speichers bremst das System teilweise recht stark aus. Oft daran zu erkennen, dass die Festplatten am Rödeln sind, als ob es keinen Morgen geben würde.

Will heißen, die Verwendung von Swap-Speicher ist eher eine Notlösung und tendenziell unerwünscht.


Im Endeffekt bedeutet die Meldung, dass der Arbeitsspeicher überlastet ist und dass das System beginnt die Daten von Arbeitsspeicher in den massiv langsameren Swap-Speicher auszulagern und somit das System ausgebremst wird.



3. Den Schuldigen finden


Normalerweise gibt es einen Grund wieso der Arbeitsspeicher überlastet ist. QNAP nennt ja schon die häufigsten:

Zu viele Applikationen / Programme / Dienste die gleichzeitig laufen. Hier hilft nur weniger zu verwenden. Im App Center kann man installierte Apps deaktivieren oder ganz deinstallieren.


02 App Center.png


Virtualisierung und Container können richtige Arbeitsspeicherfresser sein.

In den Systemeinstellungen kann man Dienste deaktivieren, welche man im Moment nicht benötigt wie z.B. Domänen-Controller (hätte z.B. am liebsten schon für sich alleine 2 GB Arbeitsspeicher) oder Multimedia-Dienste, aber auch jeder andere Dienst. Auch kleinere Dienste benötigen Arbeitsspeicher. Insgesamt macht auch Kleinvieh Mist. Unter:


> Systemsteuerung > Systemstatus > Systemservice


findet man eine Übersicht über aktive und inaktive Systemdienste.


03 Systemservices.png


Aber in meinem Fall trifft dies nicht zu.


Ein Neustart kann da oft auch helfen. Manchmal wird der Systemspeicher nicht mehr richtig frei gegeben oder abgestürzte Dienste / Programme oder Prozesse (Zombies – ja die werden tatsächlich so genannt, auch wenn nicht gerade Halloween ist ;) ) können Arbeitsspeicher blockieren. Unter


> Ressourcenmonitor > Prozesse


04 Zombies.png


wenn man nach „Status“ sortiert, kann man diese ausfindig machen. Aber nicht gleich in Panik verfallen, weil es auf Eurem System auch Zombies gibt. Das sind weder Viren noch Fehler des Systems. Im Normalfall werden die Meisten von selbst wieder beendet. Aber einige könnten die Probleme verursachen. Ein Neustart kann dies beheben und die gebundenen Ressourcen wieder freigeben.

Auch dies trifft in meinem Fall nicht zu. Das System ist neu gestartet.


Tipp:

Auf Grund solcher Zombie-Prozesse und abgestürzter Programme und Dienste sollte man vor einem Firmware-Update unbedingt einen Neustart machen.


Manchmal kann hier auch das Tool Qboost von QNAP weiterhelfen. Dieses kann den Arbeitsspeicher freischaufeln bzw. optimieren. Qboost lässt sich gegeben Falls aus dem App Center nachinstallieren.



Aber wie findet man nun den Schuldigen? Hier kann z.B. der Ressourcenmonitor weiterhelfen.


07 Übersicht TS-328.png


Bei einem ersten Blick auf die Arbeitsspeicherauslastung erkennt man, dass obwohl 2 GB Arbeitsspeicher physisch im TS-328 verbaut sind, nur 1.50 GB zur Verfügung stehen (1). Da das TS-328 einen HDMI Anschluss für einen Monitor besitzt, muss zwangsläufig ein Grafikchip / Grafikkarte verbaut sein. In diesem Fall in der Realtek ARM-CPU, als SoC (System-on-Chip). 512 MB und somit 25% des Arbeitsspeicher als geteilter Grafik-Speicher (Shared Graphics Memory) für die Grafikausgabe ist … ordentlich, übertrieben. Aber nun ja, lässt sich leider nicht ändern.


Bei den Prozessen (2) erkennt man nun den Schuldigen. 830 MB nur für das Antiviren-Programm ist bei 1‘536 MB Gesamtspeicher etwas viel. Unter QTS 4.5.2 ging dies auch schon mal bis 1.0 GB Arbeitsspeicherverbrauch. Da bleibt für das System und die anderen Programme nicht gerade mehr viel übrig.

Im Diagramm der Arbeitsspeicherauslastung sieht man im linken Teil die Auslastung des Speichers beim Update der Virendefinitionen. Mit knapp 90% Auslastung ordentlich. Rechts dann die Auslastung bei einem Virenscan. Nicht ganz so viel, aber auch eine starke Auslastung.

Die Auslastung beim Update kann sehr unterschiedlich lang sein. Muss nur das tägliche Update nachgeladen werden, ist innerhalb kurzer Zeit die Belastung wieder normal. Muss aber ein größeres Update heruntergeladen und installiert werden – wie in diesem Fall – weil das NAS länger nicht in Betrieb war, kann das Update und der Ressourcenverbrauch entsprechend länger ausfallen.


Sieht man sich dazu passend die Auslastung des Swap-Speichers an, sieht man, dass dieser stetig ansteigt.


08 Arbeitsspeicher TS-328.png


Man kann sich natürlich auch die Werte per Konsole anzeigen lassen mit dem Befehl top oder htop, je nach NAS-Modell:



Ist per WebGUI allerdings etwas verständlicher.



4. Das Antiviren-Programm


Kurzes Intermezzo über das Antiviren-Programm. Das Antiviren-Programm unter QTS ist keine Eigenentwicklung von QNAP, sondern ist von ClamAV. Ein Programm welches unter der GNU (General Public License) läuft oder kurz gesagt ein kostenloses Programm ist.

Der Prozess welcher für das Update verantwortlich ist nennt sich „freshclam“ und der Prozess welcher sich für den Scan verantwortlich zeichnet „clamscan“. In QNAP NAS wird leider nur eine Version eingesetzt, welche keinen Echtzeitschutz (On-Access) anbietet, sondern nur per Zeitsteuerung oder per Aufforderung (On-Demand) ausgelöst wird. Um wirklich sicher im Internet unterwegs sein zu können würde man einen Echtzeitschutz benötigen, also einen Schutz der schon beim Zugriff überprüft ob alles i.o ist. Bis zum zeitgesteuerten Scan kann es schon viel zu spät sein. So gesehen insgesamt nur ein begrenzter Schutz.


Man kann sich jetzt natürlich fragen, wieso ein Virenscanner so viel Arbeitsspeicher benötigt. Mit Stand vom 23.10.2021 erkennt ClamAV 857‘0528 verschiedene Viren und Schadsoftware. Dass hier die Definitionen entsprechend groß sind kann man sich sicher denken. Nur die Datenbank der Virendefinitionen belegt eine Größe von über 320 MB auf der Festplatte.


Code
  1. 1.4 MB bytecode.cld
  2. 169.0 MB daily.cld
  3. 163.0 MB main.cvd


Und was machen NAS-Modelle die weniger Arbeitsspeicher haben?

Nun, ClamAV arbeitet mit dem was vorhanden ist. Gibt es nicht so viel Arbeitsspeicher kann natürlich auch nicht so viel verwendet werden. Dies bedeutet aber auch, dass mehr mit dem Swap-Speicher gearbeitet werden muss. Im Umkehrschluss wird bei besser ausgestatteten NAS auch mehr Arbeitsspeicher verwendet. Bei meinem TS-473A mit 24 GB Arbeitsspeicher genehmigt sich ClamAV satte 1.6 GB an Arbeitsspeicher für einen Scan.


11 Übersicht TS-473A.png


Allerdings kann hier komplett auf den Swap-Speicher verzichtet werden.


12 Arbeitsspeicher TS-473A.png


Beim TS-328 genehmigt sich ClamAV bis zu 1.3 GB Swap-Speicher, was 5.4% des maximalen Standard Swap-Speichers des TS-328 entspricht.


Das Swapping schlägt sich natürlich auch direkt in der Scan-Leistung nieder.



Trotz mehr Dateien ist das TS-473A massiv schneller. Natürlich muss man mitberücksichtigen, dass die CPU des TS-473A auch um einiges leistungsstärker ist als die des TS-328. Allerdings wird weder beim TS-473A noch beim TS-328 die CPU beim Scan ansatzweise ausgelastet. Könnte aber auch daran liegen, dass ClamAV möglicherweise nur einen CPU-Kern verwendet oder verwenden kann.



5. Maßnahmen


Was kann man an der Situation verbessern? Außer dem Reduzieren des Speicherverbrauchs von anderen Programmen und Diensten, sowie dem Ausbau des Arbeitsspeichers eigentlich gar nichts. Leider. Für mein TS-328 habe ich Ersteres schon ausgereizt und Zweiteres geht nicht. :(

Variante 3 wäre ein NAS mit mehr Arbeitsspeicher zu kaufen. ;) Wer hier jetzt meint, dieses Problem beim nächsten NAS-Kauf mit einem Synology NAS zu beheben, den muss ich leider enttäuschen. Auch hier ist das eingesetzt Antiviren-Programm von ClamAV, mit den selben Beschränkungen und Problemen wie auf einem QNAP NAS. Wie ging das nochmals: Geteiltes Leid ist halbes Leid? ;)


Die Sinnhaftigkeit von ClamAV und deren Einsatz auf einem NAS wird in beiden Foren (QNAP und Syno) kontrovers diskutiert. Das Fehlen des Echtzeitschutzes ist ein ernsthaftes Manko. Aber da auf den kleineren NAS schon der On-Demand-Scan eine echte Herausforderung darstellt, wie soll hier dann ein Echtzeitschutz funktionieren.


Natürlich kann hier auch ein anderes Programm oder Dienst quer schlagen. Analog dazu können so auch die CPU-Killer ausfindig gemacht werden.


Gewisse Programme laufen grundsätzlich schlecht auf NAS mit begrenztem Speicher. Für Virtualisierung und Container sollte man ausreichend Arbeitsspeicher zur Verfügung haben. Aber auch der Domänen-Controller und andere Programme und Dienste können sich einen ordentlich Schluck Arbeitsspeicher genehmigen.

Optimalerweise sollte der Arbeitsspeicher so dimensioniert sein, dass der Swap-Speicher so gut wie nie benötigt wird. Dies sollte man schon beim Kauf des NAS berücksichtigen. Denn nicht jedes NAS kann mit zusätzlichem Arbeitsspeicher erweitert werden. Dies lässt sich in der technischen Spezifikation des NAS nachlesen.



6. Fazit


Die Möglichkeiten sind begrenzt, gerade bei einem kleinen NAS. Aber gut zu wissen, wieso man vom System solche Meldungen bekommt oder weshalb die Festplatten rattern als stünden sie kurz vor der Explosion.


Ob man das Antiviren-Programm einsetzen will oder soll ist jedem Einzelnen selbst überlassen. Aber ein Antiviren-Programm, welches dem System mehr schadet als nutzt ist wohl eher nicht sinnvoll. Dies gilt analog dazu natürlich für alle Programme und Dienste.