[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux_var] PATCH KERNEL LINUX



sono funzioni per ottimizzare operazioni su filesystem di grosse dimensioni con molti files.

Per adesso pensate solo per ext2/3/4, da reimplementare su altri fs

Banalmente sono la cancellazione diretta di una directory con milioni di files,
adesso sto lavorando con dischi in RAID di diversi TERA e capita che alcune directory si "riempiano" di milioni di FILE
poi per cancellare il tutto con il classico "rm -r" occorrono ALCUNI GIORNI nonostante dei server Dual Xeon che 
vantano 24 processori (12 core * 2 con hypertrading)
E naturalmente in quel lasso di tempo il server diventa inservibile con iostat al 100% sul disco in questione.

Per adesso in produzione ovvio al problema con degli script perl che mi cancellano 100 file alla volta con sleep di 1 secondo,
per giorni e giorni e giorni e giorni e giorni...

Il problema di performance nasce da 2 fattori:
L'accesso alle directory molto grosse è particolarmente lento, e questo credo che si senta in particolare quando il file della directory finisce su più 
gruppi di blocchi con la testina che si sposta quà e là.
Le partizioni sono suddivise in gruppi di blocchi, tipicamente un gruppo contiene 32K blocchi (a 4K sono 128MB)
poi questi gruppi sono a loro volta collegati in gruppi-consecutivi che condividono lo stesso spazio per la tabella degli inode.
Quando si inizia a lavorare su blocchi molto distanti tra loro le performance crollano per via del seek time.
Per ogni singolo file cancellato anche la directory deve essere aggiornata, per cancellare un milione di file devo riscrivere la directory 1 milione di volte.

Certo capisco che sarebbe meglio evitare tout-court di creare directory con milioni di file, ma a me questo discorso suona 
come dire "non mettiamo AirBag sulle auto perché è meglio evitare tout-court di fare incidenti"

Credo che questa funzione diventerà sempre più necessaria per tutti mano mano che
crescono le dimensioni degli hard disk. Ormai anche per i PC domestici ci sono hard disk da un Tera o più.
A meno che in futuro con l'utilizzo massiccio di SSD il problema che è anche legato al seek-time sia meno sensibile
(non ho provato, ma mi pare che comunque i dischi ssd siano sensibili alle molte scritture e riscrivere il contenuto di
una directory un milione di volte non è "smart")



Una seconda funzione un po' più specifica riguarda la possibilità di fare un "du" veloce.
Per veloce intendo 20 minuti invece di 12 ore.
Al solito i problemi di performance del "du" sono legati a come i dati sono distribuiti sulla partizione.
Si tratterebbe di leggere "in una sola passata" tutti gli inode e tutte le directory
(non tutto il contenuto degli inode ma solo le info che servono come proprietario, gruppo, tipo, dimensione del file)
(anche per le directory basterebbero poche info, nome/path, la lista degli inode presenti e poco altro)

Una volta che si dispone di queste due liste di dati calcolare il du della partizione diventa veloce.


Il giorno 04 aprile 2011 14:18, Mr. P|pex <gianluca@pipex.name> ha scritto:
curiosità: cosa farebbero le tue patch?

se servono esclusivamente a te, potresti implementarle x te, punto.
Ricorda la licenza GPL e trova modo di convidere la cosa.

Per farle entrare nel kernel di default credo che l'iter sia
complesso, e che queste patch riguardino funzionalità utili a molti.

ciao

--
Per cancellare l'iscrizione: <talking-unsubscribe at ml.linuxvar.it>
Archivi web e configurazione: http://ml.linuxvar.it/ml/



--
-----------------------------------------------------------------------------------------
Luca 18,5 : "Poiché questa vedova è così molesta le farò giustizia, perché non venga continuamente a importunarmi".
Neemia 8,10 : "...questo giorno è consacrato al nostro Signore; non siate tristi; perché la gioia del Signore è la vostra forza".
GSM 345.6050488 / 327.0547392 / 392.0698126 - Fax 06.62204735