Skip to main content

Perché gli SSD diventano lenti con il passare del tempo

Mettere in pratica la teoria: comprendere il problema del degrado delle prestazioni SSD

Diamo un’occhiata al problema nel mondo reale. Tu, io e il nostro migliore amico abbiamo deciso di iniziare a creare SSD. Acquistiamo un po’ di flash NAND e costruiamo un controller. La tabella seguente riassume le caratteristiche del nostro azionamento:

Il nostro ipotetico SSD

Dimensioni della pagina

4KB

Misura del blocco

5 pagine (20KB)

Dimensioni unità

1 blocco (20 KB

Velocità di lettura

2 KB / s

Velocità di scrittura

1 KB / s

 

Attraverso un marketing impressionante e il tuo aspetto incredibilmente bello, vendiamo un disco. Il nostro cliente va prima a salvare un file di testo da 4KB sul suo nuovissimo SSD. La richiesta arriva al nostro controller, che rileva che tutte le pagine sono vuote e assegna la prima pagina a questo file di testo.

L’immagine è 8KB e quindi occupa due pagine, che per fortuna sono vuote

Il sistema operativo segnala che il 60% del nostro disco è ora pieno, il che è vero. Tre delle cinque pagine aperte sono occupate dai dati e le restanti due pagine sono vuote. Supponiamo ora che l’utente torni indietro e cancelli quel file di testo originale. Questa richiesta non arriva mai al nostro controller, per quanto riguarda il nostro controller abbiamo tre pagine valide e due vuote.

Per la nostra scrittura finale, l’utente desidera salvare un JPEG da 12 KB, che richiede tre pagine da 4KB per l’archiviazione. Il sistema operativo sa che il primo LBA, quello assegnato al file di testo 4KB, può essere sovrascritto; quindi dice al nostro controller di sovrascrivere quell’LBA e di memorizzare gli ultimi 8 KB dell’immagine negli ultimi LBA disponibili.

Ora abbiamo un problema una volta che queste richieste arrivano al nostro controller SSD. Abbiamo tre pagine di richieste di scrittura in arrivo, ma solo due pagine libere. Ricorda che il sistema operativo sa che abbiamo 12 KB liberi, ma sull’unità solo 8 KB sono effettivamente liberi, 4KB è utilizzato da una pagina non valida. Dobbiamo cancellare quella pagina per completare la richiesta di scrittura.

Uhoh, problema. Non abbiamo abbastanza pagine vuote.

Ricordati di tornare a Flash 101, anche se dobbiamo cancellare solo una pagina non possiamo; non puoi cancellare pagine, solo blocchi. Dobbiamo cancellare tutti i nostri dati solo per sbarazzarci della pagina non valida, quindi riscriverli di nuovo. Per fare ciò, prima leggiamo l’intero blocco nella memoria da qualche parte; se abbiamo un buon controller, lo leggeremo in una cache on-die (passaggi 1 e 2 di seguito), se non si spera che ci sia un po’ di memoria off-die che possiamo usare come blocco per appunti. Con il blocco letto, possiamo modificarlo, rimuovere la pagina non valida e sostituirla con dati validi (passaggi 3 e 4). Ma l’abbiamo fatto solo nella memoria da qualche parte, ora dobbiamo scriverlo nella flash. Poiché abbiamo tutti i nostri dati in memoria, possiamo cancellare l’intero blocco in flash e scrivere il nuovo blocco (passaggio 5).

Ora pensiamo a quello che è appena successo. Per quanto riguarda il sistema operativo, dovevamo scrivere 12 KB di dati e il file è stato scritto. Tuttavia, il nostro controller SSD sa cosa è realmente accaduto. Per scrivere quei 12 KB di dati abbiamo dovuto prima leggere 12 KB, quindi scrivere un intero blocco o 20 KB. Il nostro SSD è piuttosto lento, può scrivere solo a 1KB / s. e leggere a 2KB / s. La scrittura di 12 KB avrebbe dovuto richiedere 12 secondi, ma poiché abbiamo dovuto leggere 12 KB e quindi scrivere 20 KB, l’intera operazione ora ha richiesto 26 secondi.

All’utente finale sembrerebbe che la nostra velocità di scrittura sia scesa da 1 KB / s. a 0,46 KB / s., poiché ci sono voluti 26 secondi per scrivere 12 KB. Le cose iniziano ad avere un senso adesso? Questo è il motivo per cui Intel X25-M e altri SSD diventano più lenti man mano che li usi, ed è anche il motivo per cui le velocità di scrittura diminuiscono di più mentre le velocità di lettura rimangono più o meno le stesse. Quando si scrive su una pagina vuota, l’SSD può scrivere molto velocemente, ma quando si scrive su una pagina che contiene già dei dati c’è un sovraccarico aggiuntivo che deve essere affrontato riducendo così le velocità di scrittura.