[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux_var] PATCH KERNEL LINUX
ciao,
si ionice può essere un'alternativa alla sleep spannometrica che è solo un workaround,
non so come si comporta in realtà ionice nei confronti del problema del seek-time
perché il problema non è nel numero di richieste ma nel fatto che se la testina si deve spostare da una parte all'altra del
disco le prestazioni calano MOSTRUOSAMENTE.
Comunque quello era un workaround, la patch del kernel era tutt'altra cosa:
Ovvero:
Leggere il file/directory 1 sola volta
per ogni inode (eventualmente sorted in ordine crescente per evitare alle testine di andare su e giu')
cancellazione dell'inode (o riduzione del numero del link count nel caso ci fossero + hard link)
considerando poi che di norma in un blocco da 4K ci sono 16 inode, modificare 1 sola volta il blocco (sperando che molti file da cancellare siano in inode consecutivi).
Il filie della directory così verrebbe LETTO UNA SOLA VOLTA e MODIFICATO UNA SOLA VOLTA (CANCELLATO)
invece che RILETTO PER OGNI SINGOLO UNLINK e MODIFICATO PER OGNI SINGOLO UNLINK ed infine CANCELLATO
Nei casi che la directory contenga sub-directory pensavo ad un flag per rendere ricorsiva o meno la funzione, ma questo lo vedo meno importante (e più complicato, anche come risorse richieste)
per adesso mi basterebbe concentrarmi sul problema:
"directory con milioni di file"
non sul problema
"directory con milioni di sotto-directory"
Per inciso ho notato che quando ho cancellato i file da una directory questa non diminuisce di grandezza, anche se non contiene più milioni di file
ma solo poche decine e le prestazioni perfino di un semplice ls continuano ad essere disastrose
(forse questo credo possa essere migliorato con la scelta del F.S. opportuno e con dei flag di indicizzazione etc...)
Non so se esiste una funzione per fare il trim della directory e riportarla a dimensioni "ragionevoli" rendendola di nuovo performante.
(io per adesso in quei casi mi limito a cancellarla e ricrearla, ma non è che sia proprio la cosa piu 'fine' da fare)
Gio
Il giorno 04 aprile 2011 16:41, Gianni Carabelli
<giannicarabelli@gmail.com> ha scritto:
On 04/04/2011 04:22 PM, Giovanni Orlandi wrote:
> 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.
>
Dico la mia...
A parte la scelta del filesystem, che sicuramente avrai già valutato...
Immagino... ma smentiscimi pure.. che un rm -fr e uno script in perl
*senza* sleep abbiano più o meno lo stesso tempo di esecuzione.
Se il tuo scopo è quello di non far crollare la macchina per disk usage,
io valuterei ionice, che funziona come nice, appunto, ma per IO.
Mi sembra anche una soluzione più precisa della sleep "spannometrica",
cosa che riprenderesti pari pari nel modulino in kernel.
--
-----------------------------------------------------------------------------------------
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