Che cos'è una cache di backup della batteria?

6

Ho letto un articolo sull'ottimizzazione delle prestazioni di Innodb in in quel post l'autore ripeteva ripetutamente di nominare un "cache di riserva della batteria". Non è chiaro per me di cosa stia parlando e neanche Google ha aiutato. La mia ipotesi è che questa sia una sorta di archivio di backup nel caso ci sia un'interruzione di corrente. Ho ragione?

    
posta Adam Arold 29.08.2013 - 13:49
fonte

3 risposte

5

Gli array RAID utilizzano una cache con batteria tampone, in modo che possano elaborare i dati più velocemente di quanto possano scriverli. Senza la batteria, non potevano fare il caching senza il rischio di perdita di dati durante un'interruzione di corrente.

Questa è l'unica istanza che riesco a pensare a dove avresti bisogno di una cache che sia specificamente battery backed . Se supportasse la memoria volatile, non avrebbe importanza.

Suppongo che dovrei notare che questa è una caratteristica di una configurazione RAID hardware di livello professionale, e non un software o RAID "on board" di livello consumer. Le batterie sono considerevoli, circa le dimensioni di un altoids stagno . Tendono a peggiorare ogni 4-5 anni, il che uccide il caching e causa un colpo di performance al tuo backing store.

    
risposta data 29.08.2013 - 14:04
fonte
3

Lo spazio magnetico è lento, quindi è meglio mettere una cache di fronte ad esso. È facile vedere come accelera la lettura, ma può accelerare anche le scritture?

  • una cache di scrittura no, perché sebbene conservi una copia dei dati scritti nella cache (per le letture successive), non riconosce l'operazione come andata a buon fine finché non è su storage reale ("colpisce l'ossido di ferro").

  • esiste una cache di writeback , perché segnala all'host che l'oprazione è terminata non appena si trova nella cache. Scriverà in memoria permanente (magnetica) un po 'più tardi, in background.

In un primo momento, le cache di writeback suonano meglio, ma introducono una finestra di vulnerabilità: se c'è una perdita di alimentazione, qualsiasi dato riconosciuto ma non ancora scritto andrebbe perso. I filesystem o database non possono impedirlo, poiché qualsiasi journalling, barriere dello scheduler, ordini operativi, ecc. Dipendono dal riconoscimento della scrittura per indicare che i dati sono già scritti in modo sicuro.

La soluzione è di aggiungere una piccola batteria alla cache, per consentirgli di sopravvivere a una perdita di energia. Non appena viene ripristinata l'alimentazione, tutte le scritture in sospeso verranno completate (anche prima che l'host venga avviato).

Ora ci sono anche altre due alternative:

  • sostituisce la cache RAM con una memoria non volatile. Gli SSD possono essere molto più grandi con lo stesso costo, ma non sono veloci quanto la RAM. Tuttavia, in molti casi sono più veloci del collegamento dati, quindi possono essere abbastanza veloci.

  • aggiungi una piccola memoria non volatile alla cache. In caso di perdita di alimentazione, una batteria molto piccola (o un supercondensatore) consente il tempo sufficiente per salvare le voci della cache in sospeso a lampeggiare. Non è necessario mantenere in vita la RAM per un numero indeterminato di ore.

risposta data 29.08.2013 - 18:15
fonte
1

La cache viene utilizzata per velocizzare le operazioni. Un tipico schema di utilizzo per un utente è di accedere allo stesso record un paio di volte. Leggilo, esaminalo, prendi alcuni dettagli su di esso, ecc. Se il sistema sottostante mantiene qualunque record in memoria, anche brevemente, la prossima volta che l'utente prova ad interagire con il record, l'accesso è migliaia di volte più veloce del caricamento da disco di nuovo.

il problema si presenta quando gli ingegneri hanno la brillante idea che, per migliorare le prestazioni del sistema, metteranno per un po 'di tempo le cose che l'utente ha aggiunto al record . I dati non vengono scritti sul disco fino a quando non viene svuotata la cache, che potrebbe essere di alcuni secondi o forse dieci secondi, ma poiché la cache è piccola e molte modifiche non si adattano, rimane la possibilità che alcune modifiche siano scritti su disco, mentre altri resteranno nella cache di scrittura brevemente . Se l'alimentazione si interrompe mentre è in un limbo, i risultati possono essere devastanti per l'integrità di un file o di un sistema di database.

Quindi alcuni sistemi implementano uno schema di protezione logico nel software, datando le modifiche o registrando le modifiche memorizzate nella cache o qualsiasi tipo di cose leggermente maliziose. Ma se hai una cache di scrittura con batteria, puoi tranquillamente rinunciare a queste cose e sapere che la cache di scrittura sarà sempre scritta .

    
risposta data 29.08.2013 - 14:13
fonte

Leggi altre domande sui tag