SSDs 2009: So groß ist der Vorteil gegenüber HDDs im Alltag

 3/9
Norman Dittmar
845 Kommentare

Leistungsverlust

In diesem Abschnitt wollen wir versuchen, das Thema Leistungsverlust bei SSDs so detailliert und einfach wie möglich zu erläutern. Grundsätzlich gibt es zwei Prozesse bzw. Zustände, die für den Leistungsverlust bei SSDs in Betracht kommen. Um zu verstehen, was diese bewirken, werden noch einmal kurz den Aufbau und die Funktionsweise von Solid State Drives erklären.

Die beiden wichtigsten Komponenten der SSD sind der Controller und die Flash-Speicher-Chips, auf denen die Daten gespeichert werden. Diese Chips sind intern in Blöcke unterteilt, die Blöcke wiederum in sogenannte Seiten. Ein Block ist normalerweise 512 Kilobyte, eine Seite 4 Kilobyte groß. Nun werden im laufenden Betrieb wie bei einer Festplatte Dateien gelesen und geschrieben. Das Lesen funktioniert dabei immer gleich, es wird einfach der Inhalt der entsprechenden Seiten geladen. Deshalb kann es bei Lesevorgängen mit einer SSD niemals zum Leistungsverlust kommen. Bei Schreibvorgängen ist das Ganze ein wenig komplizierter. Wenn ein Block leer ist, können die Seiten darin einfach beschrieben werden. Sollen Daten aber geändert bzw. überschrieben werden, muss der gesamte Block erst in den Cache geladen und gelöscht werden, bevor er wieder beschrieben werden kann. Das ist wie mit einem gefüllten Glas. Wenn sich Wasser in dem Glas befindet und Orangensaft hinein gefüllt werden soll, muss zuerst das Wasser entfernt werden. Dieser Vorgang dauert natürlich länger als wenn das Glas leer wäre.

Hinzu kommt die Tatsache, dass beim Löschen von Dateien die Daten nicht von der Festplatte oder SSD entfernt werden. Deshalb ist eine Datenwiederherstellung bei Festplatten auch problemlos möglich, solange die entsprechenden Bereiche nicht bereits überschrieben wurden. Da die Daten nie wirklich gelöscht werden, sind irgendwann alle Seiten bzw. Blöcke auf einer SSD mit Daten gefüllt, obwohl unser Betriebssystem anzeigt, dass beispielsweise nur die Hälfte der Kapazität genutzt wird. Wie wir eben erläutern haben, dauert das Schreiben von Dateien nun viel länger, wir haben also einen Leistungsverlust.

Das zweite Problem ist die sogenannte Blockdefragmentierung. Mit zunehmender Gebrauchsdauer der SSD werden Dateien gespeichert, gelöscht, gespeichert usw. Damit das Speichern bzw. Schreiben sehr schnell geht, nutzt der Controller der SSD bevorzugt leere Blöcke, um das eben beschriebene Problem zu vermeiden. Das heißt irgendwann werden alle Blöcke Daten enthalten, viele davon aber nur zum Teil gefüllt sein. Nehmen wir also vereinfacht an, dass wir den ganzen Tag Dateien mit einer Größe von 256 KB speichern, manche davon wieder löschen und wieder neue Dateien speichern. Dann könnte es im Extremfall passieren, dass jeder Block nur eine Datei enthält (also 256 KB). Damit hätten wir wieder das oben beschriebene Problem, dass zusätzliche Speichervorgänge langsamer werden. Halten wir also noch einmal die drei wichtigsten Punkte fest:

  • Lesevorgänge bleiben immer gleich schnell
  • Eine Ursache für Leistungsverlust sind gefüllte Blöcke mit invaliden (eigentlich gelöschten) Daten
  • Die zweite Ursache für Leistungsverlust ist die Blockdefragmentierung

Lösungsmöglichkeiten: Das Problem der Befüllung mit invaliden Daten lässt sich lösen, indem vom Betriebssystem gelöschte Daten auch auf der SSD gelöscht werden. Das kann auf unterschiedliche Weise realisiert werden. Möglichkeit eins ist die Verwendung eines Tools, wie es aktuell für Indilinx-SSDs angeboten wird. Das Tool mit dem Namen „Wiper“ fragt vereinfacht gesagt das Betriebssystem, welche Blöcke valide Daten enthalten und welche nicht. Diese Informationen werden dann an den Controller weitergegeben, welcher die Angaben mit den Blöcken auf den Flash-Chips vergleicht. Blöcke mit invaliden Daten werden gelöscht und können somit wieder schnell beschrieben werden. Die zweite Möglichkeit besteht darin, dass der Controller diese Aufgabe automatisch übernimmt, sobald die SSD keine oder nur sehr wenig Aktivität hat. Die dritte Möglichkeit ist die Verwendung des TRIM-Befehls. Unter Windows 7 wird dieser Befehl beim Leeren des Papierkorbs an den Controller gesendet, damit dieser weiß, welche Daten nicht mehr benötigt werden. Die entsprechenden Blöcke kann der Controller der SSD dann reinigen.

In unserem Test werden wir ausschließlich die Problematik untersuchen, wenn Blöcke mit invaliden Daten gefüllt sind. Denn es ist unmöglich einen Zustand der Blockfragmentierung herzustellen, der identisch auf alle Testkandidaten übertragen werden kann. Es ist für uns ebenso unmöglich nachzuvollziehen, wie der Controller die Daten beim Aufspielen eines Abbildes in den Flash-Chips anordnet. Hinzu kommt das Wear-Leveling, welches Daten auf jeder SSD unterschiedlich verteilt bzw. verschiebt.

25 Jahre ComputerBase!
Im Podcast erinnern sich Frank, Steffen und Jan daran, wie im Jahr 1999 alles begann.