IOPS - Cosa sono e cosa significano?


2

OK, so tecnicamente cosa sono gli IOPS . La definizione tecnica è ottima ma non capisco le implicazioni più ampie. La mia conoscenza è fondamentalmente:

  • Gli IOPS sono le operazioni di input e output eseguite da un'applicazione
  • Esistono IOP HD, IOP RAM, IOP di rete, ecc.
  • Gli IOPS possono essere sequenziali o casuali (in media per un'applicazione specifica)
  • Gli IOPS sequenziali sono buoni, gli IOPS casuali sono cattivi.

Ma questo riguarda la profondità della mia comprensione. Quindi, quando qualcuno chiede "L'applicazione che stai sviluppando ha un IOPS alto o basso?" Non so cosa comporta. L'applicazione è basata sul Web, quindi significa che devo contare gli IOPS di IIS o solo gli IOPS creati dalla mia app Web? Non c'è molto IO di livello file in corso, ma c'è molto traffico di database. La "media" si basa su una singola sessione, su tutte le sessioni di un giorno, su tutti i giorni di una settimana, ecc. Come posso sapere se gli accessi al mio database sono alti o bassi? Cosa è alto e cosa è basso per quella materia? Come posso sapere se sono sequenziali o casuali?

E una volta che ho capito tutto e ho capito cosa significa tutto, come posso migliorarlo? Come puoi abbassare lo IOPS o cambiarlo da casuale a sequenziale? O dovrei anche preoccuparmi o preoccuparmi di queste cose? Ci sono strumenti per misurare questa roba? Come posso vedere quali sono gli IOPS del mio database, ad esempio?

Risposte:


3

A meno che l'applicazione Web non sia molto semplice, quasi sicuramente richiede un database come back-end. Se ti aspetti che la tua applicazione web supporti molti utenti simultanei, puoi vedere dove la velocità del database sarà cruciale nel determinare la reattività del tuo sito. Quindi questo è ciò su cui dovresti concentrarti.

A meno che la tua applicazione web sia quella in cui gli utenti inviano cose e poi vengono attaccati alla fine del database (nel qual caso non avresti davvero bisogno di un database), avrai utenti che fanno cose che vogliono cose da tutte le posizioni di il database. Quindi puoi considerare un database rientrare nella categoria "IOPS casuali".

I dischi rigidi in rotazione possono leggere e scrivere più velocemente in sequenza che in modo casuale, perché la ricerca di tracce diverse richiede tempo. Un'unità abilitata per NCQ, che sono tutte le nuove unità al giorno d'oggi, può mitigare un po 'questo consentendo all'unità di determinare l'ordine in cui esegue l'I / O in una certa misura, ma aiuta solo un po'. Gli SSD possono scrivere più rapidamente in sequenza che in modo casuale, specialmente se sono abilitati per TRIM e si sta scrivendo in una sezione di flash appena cancellata. Tuttavia, poiché stai servendo molti utenti unici e casuali, dovresti assumere l'I / O casuale nel caso peggiore per la tua situazione, poiché non puoi controllare cosa faranno gli utenti.

Nella tua situazione probabilmente ti interesserai degli IOPS del disco più che degli IOPS di rete. Quindi vorrai monitorare il livello di accesso al tuo database, nel tempo, per un giorno, un mese e diversi mesi, raccogliendo informazioni significative per il tuo sistema. Dovrai essere sicuro che il tuo server di database disponga di molta RAM per consentirgli di memorizzare nella cache i dati utilizzati di frequente e utilizzare concetti SQL come il partizionamento e l'indicizzazione corretta. Ad esempio, è possibile che si desideri inserire il registro del database su un disco fisico separato rispetto al database effettivo. Questi sono argomenti avanzati e richiederanno alcune ricerche serie da parte tua.

Credo che SQL Server Performance Monitor e SQL Profiler se desideri approfondire esattamente ciò che sta facendo la tua app Web, sono ciò che dovresti iniziare a esaminare.

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.