Performance di un SSD
Ci sono tre modi per misurare le performance di un SSD:
-
Larghezza di banda: la larghezza di banda (in inglese chiamata “bandwidth”) è un’unità di misura della quantità di dati che si possono trasferire su un canale di comunicazione. Essa dipende dall’interfaccia e dal protocollo dell’SSD e più è alto questo numero meglio è. Attualmente gli SSD più veloci sul mercato sono i PCIe 5.0 che hanno un
bandwidth di 16 GB/s (o 16.000 MB/s) ma il
throughput (ossia l’effettiva quantità di dati trasmessa sul canale di comunicazione) è di circa 14,9 GB/s o di 14.900 MB/s.
-
Input/output per second: gli
input/output per second (IOPS) sono una misura delle performance input/output (I/O), ossia quante operazioni di lettura/scrittura vengono effettuate per secondo. Più è alto questo numero, meglio è. Per i nuovi SSD PCIe 5.0 ci aggiriamo sui due milioni.
-
Latenza: con latenza di si intende la latenza di accesso, ossia il tempo richiesto per l’SSD per recuperare i dati richiesti dal sistema
[9]. Più è basso questo valore, meglio è.
Per misurare queste performance vengono effettuati dei benchmark con vari software: i più utilizzati sono sicuramente CrystalDiskMark (da non confondere con CrystalDiskInfo), ATTO Disk Benchmark, AS SSD, HD Tune Pro e Iometer.
Però… c’è un “però”: le performance che vediamo nelle specifiche tecniche espresse dai produttori vengono ottenute con condizioni favorevoli al drive, dove sì, sicuramente vengono raggiunti quei valori, ma non verrebbero raggiunti in altre condizioni come per il 90% dei carichi di lavoro dell’utente medio. Quindi non sono “fake” le velocità espresse nelle specifiche tecniche, sono semplicemente lontane dall’utilizzo reale.
Per spiegare meglio questo concetto dobbiamo parlare di profondità della coda (in inglese “queue depth (QD)”), di thread, sequenziale e
random che vanno a costruire la nostra configurazione di benchmark.
Molto semplicemente, la QD è il numero di richieste I/O che possono essere messe in coda contemporaneamente. Se abbiamo quindi una QD di 5 vuol dire che ci sono 5 richieste I/O nello stesso momento. I thread, invece, sono un insieme di richieste I/O.
Se dovessi fare un esempio lo farei con delle persone e se il benchmark che stessimo andando ad eseguire fosse Q4T4 (quindi QD di 4 e 4 thread) vorrebbe dire che avremmo 4 persone (thread) che starebbero chiedendo 4 informazioni allo stesso momento (QD).
A maggiore QD e thread abbiamo maggiori performance; ecco svelato il motivo per il quale nelle operazioni “normali” (che per il 90% dei casi non superano una QD di 4 [
10, pagina 12]) gli SSD che sono pubblicizzati come 14,9 GB/s ne fanno magari molti meno.
Le performance degli SSD variano anche dalla dimensione del blocco con il quale sta trattando. Solitamente le operazioni sequenziali (cioè quelle operazioni che si susseguono l'una con l'altra a seconda dell'ordine dei LBA) sono più veloci di quelle randomiche (cioè quelle operazioni in cui gli LBA sono "casuali" e non ben "ordinati") e questo è dovuto, appunto, dal fatto che le operazioni sequenziali sono tipicamente eseguite con blocchi di grandi dimensioni come 128kB e 1MB mentre quelle randomiche con blocchi da 4kB. Se le operazioni sequenziali e randomiche avessero le stesse dimensioni dei blocchi la velocità non cambierebbe.
Per dare dei numeri, in Q32T16 (configurazione a caso) con un blocco di 1MB (quindi sequenziale) un SSD PCIe 5.0 fa circa 14,9 GB/s ma in Q1T1 con lo stesso blocco non fa più di 10,8 GB/s
[11]. In
random, invece, in Q32T16 vengono raggiunti i 2 milioni (o poco meno) di IOPS ma in Q1T1 poco più di 100.000 IOPS
[12].
Cache SLC
La cache SLC è una tecnologia presente in tutti gli SSD più recenti che permette di memorizzare 1 bit per cella anziché 3 (in caso di NAND flash TLC) o 4 (in caso di NAND flash QLC) bit per cella. Usando questa modalità si riescono ad ottenere i vantaggi delle NAND flash SLC, ovvero alta velocità (motivo per il quale gli SSD attuali fanno più di 4.500 MB/s) e alta durata. Una volta terminata la cache SLC l'SSD scriverà sulle NAND flash TLC/QLC con velocità molto più basse. La cache SLC viene poi ripristinata in un primo momento di
idle per il controller.
Esistono tre tipi di cache SLC:
-
cache SLC statica: si trova all'interno dello spazio OP e ha una capienza di piccole dimensioni, solitamente si aggira sui 40-50GB. È quella meno usata ma è anche quella che fornisce la maggior durata visto che garantisce fino a 100.000 PEC in più per le NAND flash con casi anche di 250.000 PEC per gli ultimi sviluppi eseguiti sulle NAND flash PLC Intel 192L
[13].
-
cache SLC dinamica: questa non si trova all'interno dello spazio OP ed è anche il motivo per il quale diminuisce di dimensioni man mano che vengono archiviati dati sull'SSD. Tuttavia, è programmabile per le intere NAND flash TLC/QLC, ciò significa che, per esempio, per un SSD TLC 2TB (2.048GB) può avere una dimensione fino a circa 682,6GB (2.048 / 3 = 682,6GB), mentre per un SSD QLC sempre 2TB massimo 512GB (2.048 / 4 = 512GB). I conti tornano perché 682,6 * 3 = circa 2.048GB e 512 * 4 = 2.048GB. Quando un SSD ha una cache SLC del genere è chiamato anche "full-drive SLC". La cache SLC dinamica è in grado di aumentare la durata delle NAND flash fino ad un massimo di 20.000 PEC [
14, [0048]] ma aumenta anche il WAF dal momento che i dati prima vanno scritti in SLC e poi in TLC/QLC
[15], [16]. Altro aspetto negativo della cache SLC dinamica (specialmente se l'SSD è un
full-drive SLC) è che potrebbe eseguirsi del
folding dopo le scritture sulle NAND flash TLC. Il
folding è l'unione di 3-4 blocchi SLC in 1 TLC/QLC per ripristinare la cache SLC e durante questo momento c'è anche molto overhead e GC causando un ulteriore abbassamento di performance (solitamente si parla di meno di 1.500 MB/s).
-
cache SLC ibrida: chiamata anche "TurboWrite" da Samsung e "nCache 4.0" da WD, la cache SLC ibrida è formata da una porzione di cache SLC statica e una porzione di cache SLC dinamica fondendo i due tipi insieme. Non ci sono numeri su quanto aumenti la durata questo tipo di cache SLC.
Il caso più comune in cui possiamo testare la cache SLC del nostro SSD è durante un trasferimento di file, specialmente se i file sono di grandi dimensioni (costituendo quindi un trasferimento sequenziale): quando vediamo le performance scendere di botto vuol dire che è finita la cache SLC e l'SSD sta scrivendo sulle NAND flash TLC/QLC "integre".
__________________
Software utili
Quando utilizziamo il nostro SSD è sempre bene controllare sia la salute dal punto di vista performante sia dal punto di vista vitale. Per fare ciò elenco qui sotto i vari tool utili per misurare le performance e per controllare
Self-Monitoring, Analysis, and Reporting Technology (S.M.A.R.T.), un sistema di monitoraggio della salute degli SSD e degli HDD che fornisce attributi rilevanti ad errori, usura, ecc.
Benchmark
-
CrystalDiskMark: il più famoso tra tutti i software, è sufficiente usare il programma con le condizioni di test di default, anche con la dimensione di pattern (quella misurata in GiB) visto che aumentarla non cambierebbe in maniera sostanziale i risultati del drive/disco.
-
ATTO Disk Benchmark: conducendo un test di scrittura e lettura sequenziale con un blocco che varia di dimensione durante il benchmark (da 512kB a 64MB) fornisce numeri utili per il nostro SSD.
-
AS SSD Benchmark: più completo rispetto agli scorsi software perché fornisce anche la latenza di lettura e scrittura ma non il mio preferito dal momento che non è possibile modificare la configurazione della QD e dei thread.
-
HD Tune Pro: penso che sia il software più completo di tutti. Si possono testare le performance simulando un trasferimento di file, è in grado di misurare la cache SLC (anche se non in modo molto preciso), calcola la latenza di accesso ai dati e fornisce anche una panoramica S.M.A.R.T. Questo software è molto utilizzato per scansionare la salute dei settori logici degli HDD.
-
Iometer: il più vecchio e il più preciso, soprattutto per la misurazione della cache SLC. È anche il più difficile da utilizzare grazie alla sua interfaccia grafica stile anni '90.
Qui c'è un'ottima guida di Micron su come usarlo.
Salute
-
CrystalDiskInfo: quello più usato attualmente. Gli attributi utili da vedere sono quelli della colonna "Valori grezzi" e sono in esadecimale.
-
Hard Disk Sentinel: leggermente più completo di CrystalDiskInfo.
Il contenuto di questo post è rilasciato con licenza Creative Commons Attribution-Noncommercial-Share Alike 2.5