Domanda

Qual è la differenza tra scrittura sequenziale e scrittura casuale in caso di: - 1) sistemi a disco basati 2) SSD [Flash dispositivo] sistemi basati

Quando l'applicazione scrive qualcosa e deve essere modificata sul disco quindi le informazioni / dati come facciamo a sapere se si tratta di una scrittura sequenziale o un write.As casuale fino a questo punto una scrittura non può essere distinto come "sequenziale" o "random" .La scrittura è appena tamponato e poi applicata al disco quando ci sarà svuotare il buffer.

Si prega di correggermi se sbaglio.

È stato utile?

Soluzione

Quando si parla di sequenziale vs casuale , scrive in un file, sono generalmente una distinzione tra la scrittura senza intermedio cerca ( "sequenziale"), a fronte di un modello di cerca-write-cercare write-cercare-scrittura, ecc ( "random").

La distinzione è molto importante nei sistemi tradizionali basati su disco, in cui ogni disco cercano porterà in giro per 10ms. In sequenza scrittura dei dati su disco che lo stesso richiede circa 30ms per MB. Quindi, se si scrive in modo sequenziale 100MB di dati su un disco, ci vorranno circa 3 secondi. Ma se si fa 100 scritture casuali di 1 MB ciascuna, che avrà un totale di 4 secondi (3 secondi per la scrittura vera e propria, e 10ms * 100 == 1 secondo per tutta la ricerca di).

Come si riduce ogni scrittura casuale, si paga sempre di più di una penale per il disco cerca. Nel caso estremo in cui si esegue 100 milioni casuale 1 byte scrive, sarà ancora netti 3 secondi per tutte le operazioni di scrittura reali, ma si sarebbe ora hanno 11.57 giorni vale la pena di cercare di fare! Così chiaramente il grado in cui i tuoi scrive sono sequenziale vs casuale può davvero influenzare il tempo necessario per compiere il proprio compito.

La situazione è un po 'diverso quando si tratta di lampeggiare. Con il flash, non si dispone di una testina del disco fisico che è necessario muoversi. (Questo è dove le 10ms cercano costo proviene da un disco tradizionale). Tuttavia, dispositivi flash tendono ad avere grandi dimensioni di pagina (la dimensione pagina "tipica" più piccola è circa 512 byte secondo wikipedia , e 4K dimensioni di pagina sembrano essere comune come bene). Quindi, se si sta scrivendo un piccolo numero di byte, flash ha ancora in testa nel senso che si deve leggere una pagina intera, modificare i byte che stai scrivendo, e poi scrivere di nuovo l'intera pagina. Non conosco i numeri caratteristici per il flash fuori dalla parte superiore della mia testa. Ma la regola generale è che il flash, se ciascuna delle vostre operazioni di scrittura è generalmente di dimensioni paragonabili alle dimensioni della pagina del dispositivo, quindi non si vedrà differenza di prestazioni molto tra scritture casuali e sequenziali. Se ognuno dei tuoi scrive è piccolo rispetto alle dimensioni pagina di dispositivo, poi vedrete un certo overhead quando si fa scritture casuali.

Ora, per tutto quanto sopra, è vero che a livello di applicazione molto è nascosto da voi. Ci sono strati nel kernel, del disco / controller di flash, ecc che potrebbero ad esempio interject non ovvio cerca nel bel mezzo della sua scrittura "sequenziale". Ma nella maggior parte dei casi, scrivendo che "sembra" sequenziale a livello di applicazione (non cerca, un sacco di continuo I / O) avranno prestazioni sequenziali-scrittura, mentre scrivendo che "sembra" casuale a livello di applicazione avrà la (generalmente peggiore) prestazioni random-scrittura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top