Newsgroup: it.comp.os.linux.iniziare
Titolo: Come dire al kernel di accedere al disco il meno possibile?

Ciao a tutti,
Ricordo che tempo fa se ne era parlato qui, ma siccome non sono riuscito a
trovare la conversazione originale, chiedo a voi!
Sapete se c'è un modo (e come fare) per dire al kernel di limitare il più
possibile gli accessi al disco, magari usando il più possibile i dati in
RAM piuttosto che leggerli dal disco?
Sto realizzando un server web e come disco sto usando una memoria flash, che
è parecchio più lenta di un normale disco rigido. Poiché alla fine le
pagine che saranno servite saranno più o meno le stesse, immagino che in
questo modo potrei migliorare un po' le performances (che ancora non ho
provato, a dir la verità).
grazie a tutti
gerlos
-- 
"Solo lo scienziato è vero poeta: ci dà la luna, ci promette le stelle,
 ci farà un nuovo universo se sarà il caso."
                 < 
http://gerlos.altervista.org
 >
 gerlos  +- - - >  gnu/linux registred user #311588

 provato, a dir la verità).
Più che delle letture, casomai, mi preoccuperei delle scritture, dato
che le memorie flash si rompono dopo un certo numero di scritture
(circa un milione credo, se non sono migliorate).
--
Ciao
Mattia

 (circa un milione credo, se non sono migliorate).
Hai ragione, il problema è sempre quello: meno letture/scritture ci sono sul
disco, più dovrebbe durare la memoria flash, e migliori dovrebbero essere
le prestazioni (però non è sempre desiderabile rinviare le scritture...).
Ma dove mettere mano? Mi basterebbero solo alcuni indizi, che poi la
documentazione non mi spaventa e me la vado a studiare per bene da me.


 pasticciarci, magari agendo da qualche parte su /sys... ;-)
Il kernel lo puoi pasticciare come vuoi se lo cambi nel sorgente o
nelle configurazioni di compilazione.
Per quanto riguarda quello che puoi fare una volta compilato le cose
sono meno flessibili. Ricordo che tempo fa fu introdotta
un'interfaccia che permetteva di impostare uno o due valori che
modificassero i tempi di accesso al disco, ma francamente non
approfondii più di tanto e la mia memoria vacilla. Quello che ti posso
dire che è c'era chi sconsigliava di metterci le mani perché sono
impostazioni non prese a caso, ma attentamente valutate. Stai sicuro
che su cose come queste l'attenzione è massima, metterci le mani senza
sapere bene le conseguenze dirette ed indirette potrebbe comportare
miglioramenti da una parte (magari minimi), vanificati da
peggioramenti dall'altra (magari grossi). Io non pasticcerei. Anche
perché, come detto, tanto i tuoi file saranno comunque caricati in ram
ed usati da li, e pertanto il disco lo userai veramente poco.
Impostazioni così avanzate le vedrei utili per server che devono per
forza accedere pesantemente al disco e che non possono mettere tutto
in cache, come un database oppure un file server. Ma credo che anche
in questi casi 1 GB di ram in più sia più efficace. Poi, ovviamente,
sei libero di fare quello che ritieni opportuno, il mio è un consiglio
personale. Dato che è una cosa abbastanza avanzata penso troverai
persone più preparate (di me sicuramente) in it.comp.os.linux.sys
--
Ciao
Mattia

 RAM piuttosto che leggerli dal disco?
Quanta RAM hai? E quanto č grossa questa memoria flash? O meglio: quanto 
occupano le pagine effettivamente?
Per i contenuti statici potresti crearti un ramdisk e magari linkare le 
directory con contenuto r/w alla flash (o sincronizzare tu a mano 
periodicamente).

 periodicamente).
Interessante! Potrei tenere /var/www su un ramdisk (ma come lo creo?) e
periodicamente (con cron) sincronizzarlo (con rsync) con una directory sul
disco flash.
Più tardi mi faccio un giro su google per cercare di capirci di più.
grazie
ciao


 swappiness???
Può essere che ti convenga abbassare il valore di swappiness (*mai*
sotto 5, comunque), in /proc/sys/vm/swappiness. Magari fai qualche
prova.
Per quanto le opinioni in merito siano da sempre contrastanti[*], per
quello che ho capito si può riassumere così: più alto è il valore,
più (e più presto, rispetto all'ultimo accesso) il sistema swappa
(sposta sullo swap porzioni di memoria), anche se c'è ancora RAM
libera e non ci sarebbe immediato bisogno di liberarne altra.
Questo atteggiamento può penalizzare, se poi si devon riprendere
dallo swap cose che avrebbero benissimo potuto stare in RAM. D'altro
canto, se si mantiene tutto in ram fino a saturarla, se e quando poi
si ha bisogno di liberarla bisogna:
- o cancellarne pezzi, quando possibile;
- o swappare magari una grande quantità di roba tutta in una volta,
in qual momento: e ciò richiede tempo: se ragioniamo in termini
computazionali, un'enormità di tempo. 
[*] 
http://kerneltrap.org/node/3000
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
__________________________________
Combatti l'AIDS col tuo computer: 
http://fightaidsathome.scripps.edu/

 [*] 
http://kerneltrap.org/node/3000
Letto, interessante, anche se non sono sicuro di aver capito tutto...
grazie mille


 che arrivo a metterci 2-300 MB di pagine web!
Ma almeno nel frattempo, allora, non sarebbe meglio cambiare del
tutto approccio, e copiare all'avvio tutte le pagine in un disco ram
(non so che distribuzione usi, ma se c'è /dev/shm non hai che da usar
quello), e servirle da lì?


 dati tutti insieme piuttosto che farlo a poco a poco.
Certo, però prima bisognerebbe vedere se e quanto il serve
sfrutterebbe la swap, poi bisognerebbe tenere in considerazione che
avendo una flash è meglio tornare a rileggersi i file (e quindi
sacrificare la cache, con uno swappiness basso) che andare a scrivere
sulla swap. Sia perché la scrittura solitamente è molto più lenta, sia
perché sono i cicli di scrittura che la rovinano. Però avere uno
swappiness troppo basso potrebbe condurti a comportamenti
indesiderate.
Se però tu non hai swap... tutto questo discorso non si applica al tuo
caso.
--
Ciao
Mattia