Transfer großer Files (>10GB) nutzt freien RAM nicht vollständig als cache, warum?

necbay

Benutzer
Mitglied seit
03. Dez 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

ich habe beobachtet, dass der freie RAM Speicher meines NAS beim Schreiben großer Dateien nicht vollständig als cache genutzt wir.
Warum ist das so und kann man das ändern?

Mein RS1221+ ist mit 64GB RAM (DSM 7.2.1-69057 Update 3), einer 10GbE Karte (E10G18-T1) und 3x8TB HDWG480 im SHR RAID ausgestattet. Das NAS wird ausschließlich als file server genutzt, bis auf ein wöchentlicher HyperBackup task läuft nichts drauf. NAS läuft sonst einwandfrei, RAM wurde natürlich dem Speichertest unterzogen (kein Synology RAM).

Da die Schreibleistung in meiner Konstellation durch die HDDs limitiert ist (~430MB/s) und linux freien RAM automatisch als cache benutzt (so mein Verständnis), hatte ich gehofft durch den RAM-Ausbau, zumindest bis zu der maximalen Größe des freien RAMs, das 10GbE Interface auszunutzen.
Dem ist aber nicht so:

- ein 10GB file wird konstant bis zum Ende mit ca. 1GB/s übertragen
- die Übertragung von files >10GB (egal ob 20, 30 oder 80GB groß) bricht nach ung. 10GB von 1GB/s auf die max. HDD Schreibleistung ein

Warum ist das so? Ist das ein standard Linux setting oder DSM spezifisch?
Irgendwo muss das doch einstellbar sein, oder übersehe ich da etwas?

Bin dankbar für jeden Hinweis in welche Richtung ich schauen könnte, bisherige Suchen im Internet waren nicht sehr aufschlussreich.

Viele Grüße
Necbay
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.180
Punkte für Reaktionen
4.915
Punkte
519
Schau doch mal in den Ressourcenmonitor, was an RAM ausgelastet ist.
Du kannst aber auch manuell den Anteil vom freien RAM, der als Schreibcache genutzt werden soll, via ssh erhöhen. Befehl:
sysctl vm.dirty_ratio=20. Das würde bewirken, dass 20% des freien RAMs als Cache genutzt werden. Ich hab das bei meinen DSen auf 65% gestellt. Das musst du aber nach jedem Reboot neu setzen. Ich habe dafür im Aufgabenplaner der Systemsteuerung eine Aufgabe angelegt, die immer beim Hochfahren ausgeführt wird und da meinen Befehl reingeschrieben. Achtung: Damit das funktioniert, muss die Aufgabe zwingend mit dem User "root" laufen:
1.png

2.png

3.png
 
  • Like
Reaktionen: ctrlaltdelete

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
2.430
Punkte für Reaktionen
1.196
Punkte
224
Nicht auf die Prozentanzeige im Ressourcen-Monitor beim RAM verlassen. Die Balken prüfen bzw. schauen was unter „Frei“ steht.
Ich wette, da sieht es ganz anders aus.
 

necbay

Benutzer
Mitglied seit
03. Dez 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Vielen Dank euch beiden für die schnelle Anteilnahme :)
@plang.pl
Geile Sache, der Befehl scheint zu funktionieren, mega DANKE!
@maxblank
Ja, das ist mir auch schon aufgefallen. Habe ein paar Tests gemacht, s. unten.

Warum es nur mit dem extra Befehl funktioniert verstehe noch nicht ganz, grundsätzlich wird alles RAM schon jetzt zum cachen benutzt, s. unten.

RAM Auslastung frisch nach Reboot sieht so aus, dass das meiste RAM als "free" erscheint "cached" ~500MB, macht ja auch Sinn, es besteht noch kein Handlungsbedarf, s. screenshot:
1702840953280.jpeg

Nach Transfer von einem 10GB file zum NAS sind schon 10GB weniger "free" dafür nun im "cached", s. screeshot:
1702841108509.jpeg

Nach weiteren 60GB Transfer scheint alles freie RAM im "cached" zu sein, nur noch ~300MB "free", s. screenshot:
1702841229917.jpeg

Das macht soweit Sinn für mich und zeigt, dass dass RAM sehr wohl als cache benutzt wird, aber nicht wie erwartet. Es scheint nicht mehr gecached zu werden als ~10GB, zumindest beim Schreiben "einer" Datei.
Erst mit "sysctl vm.dirty_ratio=85" bekomme ich bis fast kurz vor Ende der Übertragung einer 75GB Datei volle 1GB/s, was natürlich schon sehr cool ist :)

Ich werde mich noch ein wenig einlesen müssen. Der Befehl muss mehr bzw. was anderes bewirken als die reine cache Größe.

Gibt es sonstige "Seiteneffekte" bei der Anwendung des Befehls?

Stabilität des Systems hat höchste Prio für mich, Stromausfälle sind natürlich tödlich für die nicht auf HDD geschriebenen Daten, das ist in meinem Anwendungsfall nicht schlimm, bei den großen Dateien zumindest. Kleine Dateien sollten weiterhin "direkt" auf Platte landen, denke ich.
Ich werde noch ein wenig lesen und rumspielen.

Danke nochmal und wünsche allen noch einen angenehmen Abend!
 

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
2.430
Punkte für Reaktionen
1.196
Punkte
224
Das man diesen Befehl absetzen muss, ist nicht normal. Das macht DSM normalerweise von alleine. Ich habe 64 GB RAM in der DS923er und der wird alleine morgens beim täglichen Backup zu über 50 GB als Cache genutzt. NAS ist nachts ausgeschaltet - also immer morgendlicher Neustart.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.180
Punkte für Reaktionen
4.915
Punkte
519
Aber als Schreibcache über Netzwerk ist der Anteil des freien RAMs m.W. gedeckelt. Unter DSM 6 stand der m.W. mal auf 20%. Bin mir da aber nicht mehr sicher und ich weiß auch nicht, wie es aktuell aussieht.
 

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
2.430
Punkte für Reaktionen
1.196
Punkte
224
Das kann durchaus sein. Wie bereits geschrieben, wird bei mir der Arbeitsspeicher auch durch das Backup (welches morgens immer 3 Rechner über das Netzwerk sichert) sehr gut und hoch ausgelastet.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat