Throughput
La velocità effettiva è utile quando si eseguono operazioni come la copia di file. Quando fai quasi tutto il resto, le letture e le scritture casuali sul disco ti limiteranno.
IOPS
Gli IOPS in genere specificano la dimensione di ciascun pacchetto di dati. Ad esempio, AWS gp2 può eseguire 10.000 IOPS con una dimensione di payload di 16 KiB . Ciò si moltiplica fino a 160 MiB / sec. Tuttavia, è probabilmente improbabile che tu utilizzi sempre l'intera dimensione del payload, quindi la velocità effettiva sarà probabilmente inferiore. NB KiB è 1024 byte, KB è 1000 byte.
Perché IOPS specifica una dimensione del pacchetto che fornisce anche un throughput totale. Considerando che un throughput elevato non significa che si dispone di IOPS elevati.
scenari
Considera questi scenari:
- Avvio del PC. Considera la differenza tra un SSD e un disco rotante nel tuo computer, che è qualcosa con cui molte persone hanno esperienza diretta. Con un disco rotante il tempo di avvio può essere di un minuto, mentre con un SSD questo può scendere a 10-15 secondi. Questo perché IOPS più elevati portano a una latenza inferiore quando vengono richieste informazioni. Il throughput del disco rotante è abbastanza buono, 150 MB / sec, anche se l'SSD è probabilmente più alto, non è per questo che è più veloce: è la latenza più bassa a restituire informazioni.
- Esecuzione di un aggiornamento del sistema operativo. Sta andando su tutto il disco, aggiungendo e patchare i file. Se avessi IOPS bassi sarebbe lento, indipendentemente dalla velocità effettiva.
- Esecuzione di un database, ad esempio selezionando una piccola quantità di dati da un database di grandi dimensioni. Legge dall'indice, legge da un numero di file, quindi restituisce un risultato. Ancora una volta sta andando su tutto il disco per raccogliere le informazioni.
- Giocare sul tuo PC. Probabilmente carica un gran numero di trame da tutto il disco. In questo caso sono probabilmente richiesti IOPS e throughput.
Nastro LTO
Considerare per un momento un sistema di backup su nastro. LTO6 può fare 400 MB / sec, ma (immagino che qui) probabilmente non può nemmeno fare un IOP casuale, potrebbe essere basso quanto i secondi per IOP. D'altra parte, può probabilmente eseguire molti IOPS sequenziali, se un IOPS è definito come lettura o scrittura di un pacchetto di dati su nastro.
Se si tenta di avviare un sistema operativo dal nastro ci vorrebbe molto tempo, se funzionasse affatto. Questo è il motivo per cui la IOPS è spesso più utile della produttività.
Per comprendere un dispositivo di archiviazione, probabilmente vorrai sapere se si tratta di IOPS casuali o sequenziali e delle dimensioni di I / O. Da ciò è possibile ricavare velocità effettiva.
AWS
Si noti che AWS pubblica sia IOPS sia dati di velocità effettiva per tutti i suoi tipi di archiviazione, in questa pagina . L'SSD per scopi generici (gp2) può eseguire 10.000 IOPS da 16 KiB, che fornisce un massimo di 160 MB / sec. Gli IOPS forniti (io1) sono 20.000 IOPS da 16 KiB, che fornisce un massimo di 320 MB / sec.
Si noti che con i volumi gp2 si ottiene il provisioning di 30IOPS per GB, quindi per ottenere 10.000 IOPS è necessario un volume di 333.33GB. Non ricordo se i volumi di io1 abbiano una limitazione simile (è passato un po 'di tempo da quando ho fatto gli esami associati in cui quel tipo di cose è stato testato), ma sospetto che lo facciano, e in tal caso è probabilmente 60IOPS per GB.
Conclusione
Un throughput sequenziale elevato è utile e in alcuni casi è il fattore limitante per le prestazioni, ma è probabile che un elevato IOPS sia più importante nella maggior parte dei casi. Ovviamente hai ancora bisogno di un throughput ragionevole indipendentemente dall'IOPS.