Perché le letture 4k nei benchmark hdd / ssd sono più lente delle scritture?


12

Esistono diversi strumenti di benchmark disponibili per testare la velocità di un'unità PC.

Ecco un esempio di riferimento di un SSD SATA:

  • Lettura sequenziale: 718.498 MB / s
  • Scrittura sequenziale: 777.414 MB / s
  • Lettura casuale 512 KB: 160,541 MB / s
  • Scrittura casuale 512 KB: 838.930 MB / s
  • Lettura casuale 4KB (QD = 1): 26.985 MB / s [6588.1 IOPS]
  • Scrittura casuale 4KB (QD = 1): 135.603 MB / s [33106.2 IOPS]
  • Lettura casuale 4KB (QD = 32): 177.003 MB / s [43213.6 IOPS]
  • Scrittura casuale 4KB (QD = 32): 178.397 MB / s [43554.0 IOPS]

m.2 SSD:

  • Lettura sequenziale (Q = 32, T = 1): 829.119 MB / s
  • Scrittura sequenziale (Q = 32, T = 1): 677.645 MB / s
  • Lettura casuale 4KiB (Q = 32, T = 1): 744.328 MB / s [181720.7 IOPS]
  • Scrittura casuale 4KiB (Q = 32, T = 1): 144.876 MB / s [35370.1 IOPS]
  • Lettura sequenziale (T = 1): 785.600 MB / s
  • Scrittura sequenziale (T = 1): 789.973 MB / s
  • Lettura casuale 4KiB (Q = 1, T = 1): 56.585 MB / s [13814.7 IOPS]
  • Scrittura casuale 4KiB (Q = 1, T = 1): 170.449 MB / s [41613.5 IOPS]

DISCO FISSO:

  • Lettura sequenziale: 114.988 MB / s
  • Scrittura sequenziale: 111.043 MB / s
  • Lettura casuale 512 KB: 39.260 MB / s
  • Scrittura casuale 512 KB: 57,409 MB / s
  • Lettura casuale 4KB (QD = 1): 0,546 MB / s [133,4 IOPS]
  • Scrittura casuale 4KB (QD = 1): 0.757 MB / s [184.9 IOPS]
  • Lettura casuale 4KB (QD = 32): 1.582 MB / s [386.3 IOPS]
  • Scrittura casuale 4KB (QD = 32): 0.700 MB / s [171.0 IOPS]

In ogni caso "Random Read 4KB Q1" è più lento della scrittura e nella maggior parte dei casi è l'opposto di "QD32".

In alcuni forum la gente dice che è una limitazione per quanto riguarda la struttura del chip SSD, ma come al solito i dischi rigidi mostrano lo stesso comportamento sembra essere un altro motivo ?!

Risposte:


9

TL; DR: È perché l'SSD ti sta mentendo e ti dice che la scrittura è fatta prima che lo sia. Non può cavarsela con la stessa cosa per le letture.

La versione più lunga della risposta è scrivere nella cache.

Iniziamo con il caso QD1. L'SSD riporterà la scrittura come completata al sistema operativo una volta ricevuti i dati e salvati in una cache localmente sull'unità, ma prima di averla effettivamente scritta sulla NAND. Questo fa una grande differenza perché in realtà scrivere dati su NAND è piuttosto lento. Per le letture in realtà deve leggere i dati dalla NAND prima di poterli rispedire (a meno che non li abbia letti in precedenza e li abbia ancora nella cache, ma è molto improbabile con letture casuali).

Il rovescio della medaglia di questo è che a fronte di un'improvvisa perdita di potenza può esserci una perdita di dati dei dati scritti sull'SSD ma che non sono ancora arrivati ​​alla NAND. Alcuni SSD aziendali includono un super condensatore che immagazzina energia sufficiente per completare la scrittura dei dati nella cache su NAND in caso di improvvisa perdita di energia.

Vedi la stessa cosa per i dischi rigidi perché stanno anche scrivendo cache. Non sono così aggressivi. Perché l'SSD è così aggressivo? Per rispondere che dobbiamo passare a considerare il caso QD32, che è sia più complicato che più interessante.

Non è vero quello che dici che le letture casuali sono generalmente più veloci delle scritture casuali su QD32. Dipende molto da quali SSD particolari guardi.

Se guardi le letture 4k QD1 casuali su molti SSD SATA, tutte sembrano funzionare nell'intervallo di 20-30 MB / s. Perché? È perché le letture 4k QD1 casuali riguardano principalmente le latenze e non la velocità effettiva. La latenza viene da tre parti:

  1. La latenza dell'interfaccia di SATA / AHCI che implica dire all'unità cosa fare e inviare i dati.
  2. Il controller stesso deve capire cosa fare con i dati e le istruzioni che ha ricevuto.
  3. Il tempo necessario per leggere o scrivere effettivamente i dati su un die NAND.

Né 1. o 3. sono cambiati molto da molto tempo, ed è per questo che le letture casuali 1k QD1 non sono cambiate molto.

La recente mossa degli SSD da SATA / AHCI a PCIe / NVMe ha notevolmente ridotto la latenza di 1., motivo per cui alcuni SSD m.2 e PCIe hanno recentemente mostrato notevoli miglioramenti qui.

Una cosa che un controller SSD può fare per aiutare notevolmente con la latenza è leggere o scrivere su più matrici NAND in parallelo e in questo modo mascherare la maggior parte della latenza di 3. Se si eseguono letture casuali QD32 4k con NCQ, l'SSD può servire la lettura richieste fuori servizio e assicurarsi che stia leggendo il maggior numero possibile di matrici NAND in parallelo.

Per le scritture casuali QD32 4k, l'SSD fa qualcosa chiamato combinazione di scrittura. Quando un sacco di piccole richieste di scrittura arriva nel controller SSD, le memorizza nella cache localmente e quando un buffer abbastanza grande di scritture si è formato, il controller lo divide in blocchi di buone dimensioni e scrive i blocchi su più die NAND in parallelo, sempre per aiutare a mascherare il Latenza NAND. Un altro vantaggio della combinazione di scrittura è che la maggior parte degli SSD al giorno d'oggi hanno una dimensione della pagina (la quantità minima che può essere letta o scritta) maggiore di 4k, e la combinazione di scritture fino a quando non si arriva alle dimensioni della pagina aiuta ad evitare un sacco di amplificazione della scrittura. È per fare queste cose che gli SSD sono così aggressivi nella cache di scrittura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.