dm-cache scheint nicht zu funktionieren - kein Leistungsunterschied

dm-cache scheint nicht zu funktionieren - kein Leistungsunterschied

Ich erstelle ein DM-Cache-Gerät mit meinem Skript: http://pastebin.com/KTSzL6EA

Tatsächlich werden folgende Befehle ausgeführt:

dmsetup create suse-cache-metadata --table 0 15872 linear /dev/mapper/suse-cache 0
dmsetup create suse-cache-blocks --table 0 125813248 linear /dev/mapper/suse-cache 15872
dmsetup create storagecached --table 0 2930266112 cache /dev/mapper/suse-cache-metadata /dev/mapper/suse-cache-blocks /dev/mapper/storage 512 1 writethrough default 0
dmsetup resume storagecached

auf einem 60 GB SSD LVM-Volume zum Zwischenspeichern einer 1,5 TB USB 2.0-Festplatte. Ich mounte das zwischengespeicherte DM-Gerät mit:

mount -t btrfs -o noatime,autodefrag,compress=lzo,space_cache /dev/mapper/storagecached /mnt/storage

Es scheint jedoch überhaupt nicht zu funktionieren. Mir ist aufgefallen, dass die externe Festplatte JEDES Mal hochfährt, wenn ich auf Inhalte auf einem zwischengespeicherten Gerät zugreife und jedes Mal, wenn ein Bot auf meine Website zugreift, obwohl diese vermutlich zwischengespeichert sein sollte. Das ist ziemlich ärgerlich und führt nach etwa einer Woche schließlich zu E/A-Fehlern, weil die externe Festplatte kontinuierliches Hoch- und Herunterfahren nicht bewältigen kann.

Ich habe mich entschlossen, tatsächlich einige Benchmarks durchzuführen, und das Kopieren einer 8 GB-Datei nach /dev/null mit dddem Befehl erreicht nur 40 MB/s. Das ist die gleiche Geschwindigkeit wie bei einer nicht zwischengespeicherten Festplatte. Immer. Sowohl beim Probelauf mit gelöschtem Cache als auch beim dritten oder vierten Lesen, das meiner Meinung nach zwischengespeichert werden sollte. Die für den Cache verwendete SSD erreicht 92 MB/s auf der Root-Partition. Natürlich habe ich nach jedem Benchmark den Linux-RAM-Cache gelöscht, um Leistungseinbußen durch RAM-Caching zu vermeiden.

Ich verwende dieses Skript tatsächlich auf zwei PCs und keiner von beiden scheint zu funktionieren. Ich weiß, dass Writethrough das Schreiben nicht beschleunigt, aber ich mache mir sowieso mehr Gedanken über das Lesen.

BEARBEITEN:

Nach der Untersuchung dmsetup statusder Protokolle ist mir aufgefallen, dass ich furchtbar niedrige Cache-Trefferquoten erhalte. Kann das an btrfs liegen?

Antwort1

DM-Cache braucht etwas Zeit, um Blöcke auf das Cache-Gerät zu übertragen. Anders als Linux-RAM-Cache erfordert die Standardrichtlinie von DM-Cache mindestens einige Lesevorgänge bestimmter Daten, um sie auf die SSD zu übertragen, normalerweise viele Lesevorgänge, mehr als 10. In Verbindung mit einer relativ großen Menge an freiem RAM in der Maschine kann es viel Zeit in Anspruch nehmen, DM-Cache zu „trainieren“. Wenn die Cachegröße der Menge an freiem RAM entspricht und häufig verwendete Daten viel Platz beanspruchen, kann es sein, dass es überhaupt nicht mehr ordentlich funktioniert.

Antwort2

Verwenden Sie lvmcache(7) für die Einrichtung, dann sind Sie viel zufriedener. Auch die Manpage ist sehr hilfreich, um loszulegen. Beachten Sie die Writeback-/Writethrough-Richtlinien und die SMQ-Caching-Richtlinie, die nur bei neueren (nach Kernel 4.2) Versionen standardmäßig aktiviert ist. Dies ist auch bei RHEL 7.2+ oder so die Standardeinstellung.

Sie können meinen Vortrag ansehen:https://www.youtube.com/watch?v=6W_xK5Ks-Lw oder lesen Sie die Folien:https://www.linuxdays.cz/2017/video/Adam_Kalisz-SSD_cache_testing.pdf

verwandte Informationen