2009-07-17 17 views
7

Devo eseguire molti piccoli accessi casuali a un intero gruppo di file. Ho una memoria più che sufficiente per contenere tutti i dati.Il file system Linux è automaticamente supportato dal disco ma è ospitato interamente nella memoria?

Quando copio i dati su un filesystem ramfs temporaneo e li elaboro, ciò richiede solo una piccola parte del tempo che l'attesa per l'accesso al disco richiederebbe.

C'è un file system Linux che contiene tutti i suoi dati nella memoria principale, scrive eventuali modifiche su un disco di supporto, ma non tocca mai il disco per eventuali letture?

In caso contrario, è possibile, ad esempio, che le cache ext3 siano sintonizzate in modo da garantire il 100% dei dati e dei metadati?

risposta

1

Perché non provi a creare un mirror RAID tra un disco RAM e un disco fisico?

Non sono sicuro che sia efficiente. Se il mirror deve essere sempre sincronizzato, dovrà comunque attendere il disco quando si scrive, ma per la lettura si dovrebbe ottenere qualcosa. Ma sì, per me sembra molto complicato, ruota reinventata piazza IO caching :)

Sarebbe un buon esperimento, però.

+0

Questa è stata la risposta corretta, con mdadm --write-principalmente. – mikaelhg

+0

@mikaelhg: hai parametri di riferimento? –

+0

In realtà, sto solo eseguendo i benchmark oggi. Amazon EC2 è davvero incredibilmente utile per testare queste idee pazze. – mikaelhg

8

Se stai leggendo solo i dati, allora si può davvero caching sintonizzarsi in modo tale che tutti i dati saranno memorizzati nella cache in RAM - vedi/usr/src/linux/Documentation/sysctl/ fs.txt vm.txt per i dettagli di cosa puoi modificare qui. Il problema sorge quando si scrivono dati, in particolare se si utilizza fsync() o simili per assicurarsi che i dati siano stati commessi sul disco reale.

come il sistema operativo ha per aggiornare il disco nel caso di un fsync(), non c'è molto che si può fare se si vuole ancora per garantire che i dati è consistente e non sarebbe perso in mancanza di alimentazione elettrica.

Uno dei problemi in cui ci si imbatte è il atime o il tempo di accesso: per impostazione predefinita ogni volta che si accede a un file, il tempo di accesso viene aggiornato nell'inode. Ciò causerà la scrittura del disco anche quando pensi di eseguire solo letture. Questo può essere un problema particolare nel tuo scenario in cui accedi a molti piccoli file. Se non ti interessa monitorare il tempo di accesso, puoi montare il tuo filesystem con lo noatime per disabilitare questa 'funzione'.

+0

Non sembra che fs.txt sia pertinente a questa domanda, a meno che non mi sia sfuggito quello che intendevi specificamente lì dentro? – mikaelhg

+0

@mikaelhg: Scusa, ho commesso un errore lì - intendevo "sysctl/vm.txt" che ha varie manopole che puoi modificare, come vfs_cache_pressure. Aggiornerò la risposta – DaveR

Problemi correlati