RAM als Cache nutzen


Recommended Posts

Hi Zusammen,

 

ich wollte meinen RAM als "Cache" nutzen und hatte dafür auch schon Einstellungen vorgenommen gehabt.

 

Videos hab ich mir auch schon dazu angeschaut. wie z.B.: 

Unraid Cache erklärt: HDD vs SSD vs RAM - YouTube

https://www.youtube.com/watch?v=bEYt_Y7llO0

 

 

 

Dies hab ich in die "boot/confi/go" geschrieben:

 

#!/bin/bash
# Start the Management Utility
/usr/local/sbin/emhttp &

# -------------------------------------------------
# Optimize write cache
# -------------------------------------------------
sysctl vm.dirty_ratio = 80
sysctl vm.dirty_expire_centisecs = 3000

 

auch testweise andere Zahlen genommen bzw. alles zusammengeschrieben (...._ratio=80 oder _centisecs=3000) aber der RAM bewegt sich nicht in dem Hauptfenster!

 

Wie kann ich meinen RAM als Cache nutzen damit die Daten erstmal auf dem RAM "abgelagert" und dann auf die SSD's verschoben werden?

 

image.thumb.png.43c9e88d2d7ac24515ef9a763bcde34f.png

 

Grüzzi

MasterD

 

System:

2x2690v4

256GB

Gigabyte MW70-3S0

Edited by MasterD
Link to comment
2 hours ago, MasterD said:

auch testweise andere Zahlen genommen bzw. alles zusammengeschrieben (...._ratio=80 oder _centisecs=3000) aber der RAM bewegt sich nicht in dem Hauptfenster!

Kann es sein, daß Du das Plugin "Dynamix System Statistics" suchst (siehe Screenshot unten).

 

2 hours ago, MasterD said:

 

Wie kann ich meinen RAM als Cache nutzen damit die Daten erstmal auf dem RAM "abgelagert" und dann auf die SSD's verschoben werden?

Ist das nicht default?

 

RMCACHE-2022-06-14 14_33_11-UR-TESSA_Stats.png

Link to comment
Posted (edited)

Hi,

ich hab mich an das Video gehalten, dort wird es ohne einen Plugin umgesetzt.

Im Video ist zu sehen, dass von HDD kopiert wird mit 1GBit TransferSpeed!

Default sind es 20% vom RAM...aber der macht nicht seine Arbeit...also ich sehe den Speed-Unterschied nicht

 

Ich erreiche meinen SSD Speed mit ca.500MB übers 10G Netzwerk

 

 

Edited by MasterD
Link to comment
8 hours ago, MasterD said:

ich hab mich an das Video gehalten, dort wird es ohne einen Plugin umgesetzt.

Ich bezog mich auf Deine Aussage "aber der RAM bewegt sich nicht in dem Hauptfenster".

Im Hauptfenster zeigt er auch einen Cachevorgang nicht an.
Das Plugin ist nicht notwendig um das Cachen auszuführen, aber es kann eben darstellen, daß der Cache benutzt wird.

Link to comment
12 hours ago, MasterD said:

Dies hab ich in die "boot/confi/go" geschrieben:

 

sysctl vm.dirty_ratio = 80

sysctl vm.dirty_expire_centisecs = 3000

Ich habe es testweise auch mal in meien go geschrieben und (im Rahmen des Updates auf 6.10.3) neu gestartet.

Da fiel mir eine Fehlermeldung auf, die ich dann auch bestätigt fand:

Du hast Dich verschrieben!

Ein paar Leerzeichen zuviel stören Deine Zeile(n).

Ich habe es danach mal auf der Kommandozeile wiederholt.

Siehst Du den Unterschied?

Oben die Zeile von Dir (nur mit 80 Prozent) wird mit Fehler bemämgelt

Darunter die Leerzeichen raus (nur diesesmal mit 60 Prozent) wird bestätigt.

RAMCACHE---------2022-06-14 23_51_29-root@UR-TESSA_ ~ _ bash --login (UR-TESSA).png

  • Like 1
Link to comment
Posted (edited)
12 hours ago, DataCollector said:

Ich habe es testweise auch mal in meien go geschrieben und (im Rahmen des Updates auf 6.10.3) neu gestartet.

Da fiel mir eine Fehlermeldung auf, die ich dann auch bestätigt fand:

Du hast Dich verschrieben!

Ein paar Leerzeichen zuviel stören Deine Zeile(n).

Ich habe es danach mal auf der Kommandozeile wiederholt.

Siehst Du den Unterschied?

Oben die Zeile von Dir (nur mit 80 Prozent) wird mit Fehler bemämgelt

Darunter die Leerzeichen raus (nur diesesmal mit 60 Prozent) wird bestätigt.

RAMCACHE---------2022-06-14 23_51_29-root@UR-TESSA_ ~ _ bash --login (UR-TESSA).png

Ich hatte das mit dem Leerzeichen auch gehabt...habs dann richtig eingegeben und der Befehl wurde auch geschluckt...Aber an der Transferrate hat sich nicht geändert.  

 

@warp760: die beiden Befehle in der Konsole und in die 

"boot/confi/go" eingeben:

 

sysctl vm.dirty_ratio=80

sysctl vm.dirty_expire_centisecs=3000

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

EDIT:

ich hab eben nochmal folgendes getestet:

1. von SSD (Workstation) über (10GB Network) auf SSD = ca.500MB

2. von SSD (Workstation) über (10GB Network) auf m.2 = ca.500MB

3. von m.2 (Workstation) über (10GB Network) m.2 = ca.500MB

4. von SSD (Workstation) über (10GB Network) ZFS_Pool (selben SSDs als vierer Pack gebündelt) = ca.1000MB

5. von m.2 (Workstation) zu (10GB Network) ZFS_Pool (selben SSDs als vierer Pack gebündelt) = ca.1000MB

 

wieso klappt das mit dem ZFS Pool super und mit den Array nicht ?!

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Würde mich freuen wenn ihr das nochmal testen könntet damit wir herausfinden woran es liegt das der Speed nicht über den RamCache läuft.

 

THX

Edited by MasterD
Link to comment
4 hours ago, warp760 said:

Ist dass das einzigste was man machen muss? Dann würde ich beim RAM evtl. auch mal 50% freigeben. Oder gibts noch mehr Einstellungen?

Wie in dem Video mehrfach erwähnt: Nur, wenn Dir Deien Daten im RAMCache nicht wichtig sind oder Du mit einer USV oder so vorgesorgt hast.

Aber ja, ich habe spasseshalber auch mal so auch 60 (respektive 50% je nach meinem System) eingestellt.

Den zweiten angegebenen Befehl (mit der 3000) habe ich erst einmal weg gelassen.

Link to comment
1 hour ago, MasterD said:

Würde mich freuen wenn ihr das nochmal testen könntet damit wir herausfinden woran es liegt das der Speed nicht über den RamCache läuft.

Ich kann aktuell nicht weitertesten, weil meien Systeme sich in einem Prueflauf befinden, der (je nach System) wohl 1-4 Wochen dauern kann.

Viele Daten = lange Überpruefung ob wirklich alles identisch im unraid angekommen ist.

Link to comment
Posted (edited)
26 minutes ago, DataCollector said:

Ich kann aktuell nicht weitertesten, weil meien Systeme sich in einem Prueflauf befinden, der (je nach System) wohl 1-4 Wochen dauern kann.

Viele Daten = lange Überpruefung ob wirklich alles identisch im unraid angekommen ist.

 

 

alles gut...das bekommen wir schon irgendwie hin...ansonsten warten wir einfach bis du wieder testen kannst :)

 

aber kann mir jemand erklären warum das mit dem ZFS Pool so schnell ist obwohl das SSDs sind?

Edited by MasterD
Link to comment
2 hours ago, MasterD said:

aber kann mir jemand erklären warum das mit dem ZFS Pool so schnell ist obwohl das SSDs sind?

Gegenfrage: Warum sollten gerade SSD nicht schnell sein? Gerade deswegen nutze ich überwiegend NVMe und SATA SSD als Cache, weil die schneller als meine 'Dreheisen'-Festplatten im Array sind.

Link to comment
Posted (edited)

ne ich wundere mich das mein SSD Array aus 7 Platten langsamer ist wie ein ZFS Pool (2Pools mit 4 SSDs) mit den selben SSDs ! 

der ZFS Pool schiebt mit 1000MB und das Array "nur" mit 500MB. 

Edited by MasterD
Link to comment
On 6/14/2022 at 11:49 AM, MasterD said:

aber der RAM bewegt sich nicht in dem Hauptfenster!

Der Dirty Page Cache reserviert keinen RAM, sondern nutzt x % vom freien RAM ohne ihn zu blockieren. Daher zeigt das Dashboard auch nichts an.

 

Die standardmäßigen 20% oder deine eingestellten 80% beziehen sich auch nicht auf den kompletten RAM, sondern nur den, der gerade frei ist. Und Linux nimmt immer den kompletten freien RAM für das Caching. Hast du zb 6GB von 256GB in Nutzung, dann hast du 250GB frei. Stellst du 80% für den Schreibcache ein, dann nutzt Linux 200GB für den Schreibcache und 50GB für den Lesecache. Also der eingestellte Schreibcache beeinflusst auch direkt die Größe des Lesecache (50GB sind immer noch viel).

 

Die 250GB bleiben aber jederzeit "frei", auch wenn sie gerade verwendet werden. Linux kennt also so gesehen keinen "freien" RAM, sondern benutzt immer alles.

 

6 hours ago, MasterD said:

kann mir jemand erklären warum das mit dem ZFS Pool so schnell ist obwohl das SSDs sind?

Gute Frage. Ich schlage vor, dass du während du die Datei hochlädst (ist es eigentlich eine Datei oder mehrere kleine?), im Terminal "htop" ausführst und die Prozesse beobachtest. Gibt es bei ZFS evtl weniger Prozesse? Ich tippe auf den Fuse Overhead (sshfs), der beim Kopieren auf /mnt/user entsteht.

 

Dies lässt sich durch Aktivierung von SMB Multichannel + RSS oder durch Kopieren auf Disk Shares umgehen. Siehe auch:

 

 

Nach Aktivierung von RSS gibt es dann mehrere Prozesse und die Last wird besser auf die CPU Kerne verteilt.

Link to comment

Hi,

Also der RAM ist immer zu 99% frei. Da sollte es also von der Regelung passen und etwa 200GB frei zur Verfügung stehen.

Es wird immer eine großes Image für denTestkopiervorgang verwendet.

 

Im Video sieht das alles so einfach aus :)

Werde mal die Prozesse im Auge halten.

 

 

Das mit den ZFS Pools hatte seit Anfang an einwandfrei funktioniert.... wie gesagt ich wundere mich immer noch dass es mit dem Pool so schnell ist obwohl array und Pool dieselben SSDs verwenden.

 

Ich hab mal gelesen dass für SSDs es sowieso gesünder wäre das die in ZFS Pools gepackt werden als in Arrays. Stimmt das ?

Link to comment
3 minutes ago, MasterD said:

Ich hab mal gelesen dass für SSDs es sowieso gesünder wäre das die in ZFS Pools gepackt werden als in Arrays. Stimmt das ?

Kann es sein, dass du da ZFS Pools und Unraid Pools/Arrays verwechselst?

 

Für Unraid ist das weitestgehend korrekt. In erster Linie sollte man allerdings kein 08/15 SSD als Paritätslaufwerk nutzen. Das können die mangels TRIM nicht ab und werden im dümmsten Fall auch noch extrem langsam. Als "normale" Datenplatte im Array kann man SSDs hingegen nutzen.

Link to comment
On 6/15/2022 at 11:36 AM, MasterD said:

wieso klappt das mit dem ZFS Pool super und mit den Array nicht ?!

 

Ist doch verständlich. Ein traditionelles RAID verteilt die Schreibzugriffe auf alle Platten (Striping). Auf eine einzelne Platte zu schreiben kommt da nicht gegen an. Eine einzelne SATA SSD kann nur so um die 550 MB/s.

 

Das Unraid Array thematisiere ich nicht mehr. Das ist schon 1000x hier im Forum geschrieben worden: Stromsparen (Unraid Array mit Parity) vs. Performance (traditionelles RAID). Das ist jedermanns Entscheidung. Man kann nicht alles gleichzeitig haben.

 

Link to comment

@jj1987 Sorry wenn ich das etwas unklar definiert habe. Ich meine wirklich ZFS Pools. Wird in den meisten Videos gezeigt wie man sie anlegt. 
 

Hab zwei ZFS Pools bestehend aus 2x(4x1TB) SSDs und dann nochmal 7x im Array … alles dieselben Platten. 
Crucial mx500-1TB

 

Mir gehts ja nicht um die einzelne SSD im Array sondern das der RAM nicht als Cache dient und zwischenspeichert!

 

@hawihoney und ein Array kannst auch so einstellen das alle Platten gleichzeitig arbeiten. 
keiner hat erwartet das du das Array thematisiert. 
 

Wie schon gesagt im Video ist klar zu sehen das von HDDs aus mit 1Gbits kopiert wird. Es werden lediglich ein zwei Befehle eingeben und das wars! 
 

 

THX

MasterD


 

Link to comment
5 hours ago, MasterD said:

wie gesagt ich wundere mich immer noch dass es mit dem Pool so schnell ist obwohl array und Pool dieselben SSDs verwenden.

Und wie gesagt: Folge den Anweisungen meines letzten Beitrags. Ich tippe wie gesagt auf den FUSE Overhead, der bei ZFS nicht vorhanden ist.

 

5 hours ago, MasterD said:

Ich hab mal gelesen dass für SSDs es sowieso gesünder wäre das die in ZFS Pools gepackt werden als in Arrays. Stimmt das ?

Spielt eigentlich keine Rolle. ZFS hat den Nachteil der Write Amplification dh bei jedem Schreiben, hat man erhöhte Schreiblast auf allen SSDs des Pools. Und beim Unraid Array hat man den Nachteil, dass beim Befüllen der SSDs jedes mal die Parität überschrieben wird. Hat man also 10 SSDs im Array, wird die Parität bei der Erstbefüllung des Servers 10x korrigiert.

 

Aber was sind schon 10x 4TB (wenn man so große SSDs hätte), also 40TB Schreiblast für eine 4TB Paritäts-SSD? Eine SanDisk Ultra 3D hat zB 600TBW. Also wären das 7% Abnutzung. Klingt erst mal viel, aber wie schreibt man weitere 560TB ins Array, wenn das bereits voll ist? Und bekanntlich ist die TBW Angabe nur für die Garantie relevant. SSDs gelten als viel haltbarer (im Petabyte Bereich geben die erst auf).

 

PS Wenn man bei der Erstbefüllung einfach die Paritäts-SSD weglässt, hat man die 40TB auch noch eingespart.

 

Der eigentliche Vorteil von ZFS liegt woanders. Nämlich in der Selbstheilung von gekippten Daten, der hohen Performance eines RAID und der Möglichkeit Snapshots zu erstellen. Ich persönlich bin aber kein Fan von RAIDs, weil ich nicht möchte, dass meine 10 SSDs die ganze Zeit aktiv sind. Denn das bedeutet einen 10x höheren Stromverbrauch als bei einem Array, wo nur eine SSD läuft (oder zwei, wenn gerade geschrieben wird). Hier muss man einfach abwägen was einem wichtiger ist.

 

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.