Post by Andreas M. KirchwitzPost by Marcel MuellerAber wenn Trim aktiviert ist, was heute so ziemlich jedes OS kann, dann
zählt der komplette freie Speicher aller Partitionen mit zum
Handlungsspielraum der SSD. Das sind fast immer 10% oder mehr, wenn man
die Partitionen nicht an einer Tour asymptotisch vollschreibt.
Mit der Zeit dürfte jener freie Speicher zumindest aus Sicht des
Betriebssystems ziemlich wild verteilt sein. Fragmentation ist
bei SSDs zwar für sich gesehen kein Ding mehr, aber SSDs können
ja nicht jedes Bit völlig frei einzeln ansprechen. Deshalb frage
ich mich, ob z.B. freie 10 GB aus Sicht des Betriebssystems von
der SSDs ebenso gut genutzt werden können (da gibt es sicherlich
viele Überlappungen mit anderen Daten) wie ein Bereich von 10 GB
im Stück (z.B. durch eine ungenutzte Partition).
SSDs sind keine Direct-Mapped-Storage-Devices (und Festplatte eigentlich
auch schon lange nicht mehr). Die Adressierung erfolgt über logische
Block Nummern (LBA).
SSDs haben intern ihr eigene Mapping-Tabelle, die eine Zuordnung
zwischen logischen Blocknummern und physikalischen Blöcken abbildet.
Dabei können auch logische Blocknummern fehlen bzw. unzugeordnet sein
(im Auslieferzustand bzw. nach Trim).
Post by Andreas M. KirchwitzWas wird bei TRIM eigentlich freigegeben? Blöcke bestimmter Größe?
Logische Blocknummern.
Die SSD ist relativ frei im zuordnen von logischen Blöcken. Jeder
einzelne kann nicht zugeordnet werden, aber typischerweise Cluster a 8
Blöcken; die Blockgröße ist traditionell 512 Bytes. Bei kleineren
Schreibzugriffen muss die SSD einen Cluster lesen, modifizieren und
komplett wieder schreiben. Das ist Write-Amplification, weil statt 512
Bytes auf einmal das 8-fache geschrieben werden muss.
Die allermeisten Dateisysteme verwenden intern aber ebenfalls Cluster
mit mindestens 4k Größe. Das passt; aber eben nur, wenn das Dateisystem
nicht auf einer krummen LBA-Adresse startet. Daher kommt daher die Sache
mit dem 4k Alignment, dass für SSDs wichtig ist.
Vernünftiger wäre natürlich, wenn die SSD nach außen gleich 4k logische
Blockgröße melden würde. Damit wäre das Alignment gegenstandslos. Aber
da machen einige Betriebssysteme Heckmeck, wenn sie davon booten sollen,
deshalb hat man das gelassen. Bei einigen Festplatten gibt es das: 4k
native. Bei SATA SSDs habe ich es noch nicht gesehen.
Die 4k sind aber nur die Write-Block-Size. Beim Löschen sieht die Sache
ganz anders aus. Die Erase-Block-Size gängiger Flash-Chips liegt im
Megabyte-Bereich, 1MB, 8MB ... unterschiedlich.
Das bedeutet, es können nur große, zusammenhängende, physikalische
Blöcke gelöscht werden. (Im Übrigen altern die Flash-Speicher nur beim
Löschen, nicht beim Schreiben.)
Da jeder Flash-Block gelöscht werden muss, bevor er neu beschrieben
wird, und die SSD keine Write-Amplifikation von 4k auf xMB haben will,
wird ein und derselbe logische Block, mehrfach hintereinander
geschrieben immer in /unterschiedliche/ physikalische Blöcke
geschrieben. Die Abnutzung eines einzelnen physikalischen Blockes durch
vielfaches Schreiben eines LBA-Blocks existiert also schon deshalb
nicht. Und der Speicher der SSD ist /immer/ stark fragmentiert.
Die Kunst der Firmware ist es jetzt, möglichst viele physikalische
zusammenhängende Blöcke als frei zu bekommen, damit sie einen
Löschvorgang initiieren kann. Das gelingt natürlich selten auf Anhieb.
Meist müssen dabei einige logische Blöcke zuvor in andere Flashzellen
verschoben werden. Auch das trägt zur Write-Amplification bei.
Je mehr Blöcke insgesamt frei sind, desto größer ist die
Wahrscheinlichkeit, dass wenig Daten gerettet werden müssen. Das ist der
Punkt an dem Overprovisioning und Trim ins Spiel kommen.
Solange die SSD in Summe noch weniger Daten geschrieben hat, als sie
incl. Overprovisioning groß ist, stellt sich die Frage nicht. Da wird
einfach in den nächsten freien Block geschrieben. Deshalb sind SSDs am
Anfang immer sauschnell beim Schreiben.
Wenn dann zwischendurch Trim-Kommandos rein rutschen, werden natürlich
Erase-Blöcke weitgehend oder ganz frei. Die Firmware wird dann im
Hintergrund schon mal aufräumen, und dafür sorgen, dass immer genügend
bereits gelöschte Blöcke zur Verfügung stehen, damit das Schreiben der
nächsten Daten sofort erfolgen kann.
Zuguterletzt muss die Firmware noch dafür sorgen, dass nicht immer
wieder dieselben physikalischen Blöcke gelöscht werden. Zu diesem Zweck
verschiebt sie gelegentlich mal einen selten gelöschten Erase-Block in
einen schon häufig gelöschten. Das ist das Wear-Leveling; auch das zählt
zur Write-Amplification. Allerdings kommt das gar nicht so oft vor. Die
Zahlen in den Smart-Daten sind oft nach Jahren noch zweistellig.
Post by Andreas M. KirchwitzDie SSD weiß ja nichts von Filesystemen, sondern die gaukelt dem
Betriebssystem irgendeine virtuelle Geometrie vor, und umgekehrt
ist auch dem Betriebssystem klar, dass die ausgelesene Geometrie
eine künstliche Vereinbarung ist, aber keine Rückschlüsse auf die
Physik dahinter erlaubt. Trotzdem müssen sich ja beide auf etwas
einigen, wenn das OS per TRIM sagt, es gibt freien Platz.
LBA
Die Geometrieangaben werden nur für die 16 Bit INT13 BIOS Aufrufe mit
CHS Adressen gebraucht, die einige Betriebssysteme früher zum Starten
benutzten (und DOS auch dauerhaft). Diese sind aber schon bei knapp 8GB
endgültig übergelaufen. Die Geometrieangaben sind bei größeren Devices,
also faktisch allen SSDs, gegenstandslos.
Post by Andreas M. KirchwitzPost by Marcel MuellerEs gibt nur sehr wenige Anwendungen, wo man auf die Endurance einer SSD
aufpassen muss. Das Transaktionslog von Datenbanken ist z.B. so ein
Kandidat, vor allem, wenn es im Simple Recovery Model gefahren wird.
In einem normalen SOHO Desktop braucht man sich keine Sorgen machen.
So lange ist es nicht her, da hat der gute Firefox interne
Datenstrukturen ziemlich häufig auf Disk geschrieben, wodurch
SSDs gefährdet worden sind.
Nicht wirklich.
Ich hatte selten weniger als 30 Tabs offen, und das 24/7 in den VMs.
Wirklich signifikante Datenmengen sind da nie zusammengekommen.
Das einzige, was mal einen merklichen aber immer nicht kritischen
Ausschlag erzeugt hat, sind Betriebssystem- oder Software-Update. Der
Rest ist unter ferner liefen.
Post by Andreas M. KirchwitzBei solchen Tests wird zudem immer nur gegen die Garantie
gerechnet. Also bei mir halten PCs mitsamt ihren verbauten
Speichermedien um ein Vielfaches länger. Dann rutschen die
Datenmengen, die man pro Tag schreiben dürfte, in einen
gewöhnlichen Bereich.
Exakt, genau das ist der Punkt.
Es ist gar nicht so einfach, /jeden Tag/ 10GB oder mehr zu schreiben,
was aktuelle SSDs immer noch Jahre durchhalten.
Post by Andreas M. KirchwitzJeder hat natürlich ein anderes Nutzungsverhalten oder ein
anderes Bedürfnis, wie oft er sich neue Hardware kauft.
Auch das.
Aber SSDs werden bei mir (noch) nicht schlecht. Ich habe alle gekauften
noch in Betrieb. Zum Pimpen alter Notebooks oder Rechner taugen sie
durch die Bank noch.
Marcel