SPECIALE PANTHER


hocico
 Share

Recommended Posts

  • Replies 4.3k
  • Created
  • Last Reply

Top Posters In This Topic

Proprio pochi minuti fa ho dovuto riavviare il Powerbook: il sistema aveva creato quattro file swap per un totale di 1 GB che avevano ridotto lo spazio libero sulla partizione dedicata al sistema e alle applicazioni a meno di un GB; quello che non capisco e' che i file sono stati creati ieri sera alle 20 e 40 quando nessuno stava usando il computer e lo stesso non era neanche collegato alla rete, ammesso che questo c'entri qualcosa. Mi sto chiedendo se non valga la pena di ripartizionare il disco dedicando uno spazio apposta alla sola memoria virtuale, so gia' che questo non serve a nulla ai fini delle prestazioni ma non mi va che si occupi tutto questo spazio senza sapere neanche perche': c'e' un comando da terminale o una utility per chiedere al sistema di rimuovere i file di swap?

Link to comment
Share on other sites

Dunque. Il demone che gestisce i file di swap si chiama dynamic_pager; con man dynamic_pager puoi vedere gli argomenti che accetta. Il funzionamento è questo: quando lo spazio libero nei file di swap scende sotto a un certo limite (hi_water), il kernel segnala a dynamic_pager di creare un file di swap; quando lo spazio libero sale oltre un certo limite (low_water), il kernel lo segnala a dynamic_pager, d_p chiede al kernel di disattivare lo swap sul file creato più recentemente (spostando le pagine lì contenute, se necessario), e, se l'operazione riesce, cancella il file.

Di default, dynamic_pager utilizza dei file di swap di dimensione variabile (crescente). Dal sorgente ho compilato questa tabella:

<TABLE BORDER=1><TR><TD>file #</TD><TD>size</TD><TD>low_water</TD><TD>total</TD><TD>used_lw </TD></TR><TR><TD>0</TD><TD>64</TD><TD>128</TD><TD>64</TD><TD>-64 </TD></TR><TR><TD>1</TD><TD>64</TD><TD>128</TD><TD>128</TD><TD>0 </TD></TR><TR><TD>2</TD><TD>128</TD><TD>192</TD><TD>256</TD><TD>64 </TD></TR><TR><TD>3</TD><TD>256</TD><TD>320</TD><TD>512</TD><TD>192 </TD></TR><TR><TD>4</TD><TD>512</TD><TD>640</TD><TD>1024</TD><TD>384 </TD></TR><TR><TD>5</TD><TD>1024</TD><TD>1280</TD><TD>2048</TD><TD>768</TD></TR></TABLE>

File # indica il numero del file di swap e size le sue dimensioni; quando il file indicato è l'ultimo creato, total indica le dimensioni totali dei file di swap, low_water lo spazio di swap libero necessario per iniziare la compattazione, e used_lw lo spazio occupato corrispondente (total - low_water).

Se i miei calcoli sono corretti, il primo file non viene mai cancellato, il secondo solo quando lo swap non è più utilizzato, il terzo quando l'occupazione scende a 64 MB (su 256), etc. Quando ci sono cinque file, per un totale di 1 GB occupato, la compattazione avviene solo se l'uso dello swap scende a 384 MB (37,5%). In pratica, è piuttosto difficile che accada.

L'unico modo di risolvere il problema è modificare il file di inizializzazione del sistema /etc/rc e cambiare gli argomenti di invocazione di dynamic_pager. Le opzioni interessanti sono:

-S, dimensioni di ciascun file di swap

-H, livello di spazio di swap libero sotto il quale viene aggiunto un file

-L, livello di spazio di swap libero sopra il quale viene rimosso un file

Da notare che se è presente anche uno solo dei parametri "manuali" l'uso di file a dimensioni variabili viene disattivato, e tutti i file saranno delle dimensioni indicate nell'argomento -S, o, in sua assenza, di 20000000 byte.

Quindi, prova a modificare il file /etc/rc (fai un backup, mi raccomando), sostituendo questa riga:

<FONT COLOR="0000ff">dynamic_pager -F ${swapdir}/swapfile</FONT>

con questa, per esempio:

<FONT COLOR="0000ff">dynamic_pager -S 67108864 -L 100663296 -F ${swapdir}/swapfile</FONT>

per avere file tutti di 64 MB, ed iniziare la cancellazione quando sono liberi 96 MB (cioè un file e mezzo).

Link to comment
Share on other sites

Camillo> trasforma il post in un articolo per Maity o per chi più preferisci...

Comunque, <FONT COLOR="ff0000">Quando ci sono cinque file, per un totale di 1 GB occupato, la compattazione avviene solo se l'uso dello swap scende a 384 MB (37,5%). In pratica, è piuttosto difficile che accada. </FONT>

384 MB? non mi paiono pochi... Sotto win xp con 256 di ram io genralmente ho 160 MB di swap... sotto OS X quasi tutti hanno mega e maga di ram, motivo in più per dire che 384 MB sono molti.

Link to comment
Share on other sites

Gianmarco: <FONT COLOR="aa00aa">Grazie Camillo, sei stato prezioso; appena posso faccio qualche prova.</FONT>

Prego, e facci sapere.

Olaf: <FONT COLOR="ff6000">Camillo> trasforma il post in un articolo per Maity o per chi più preferisci...</FONT>

Meglio di no, non vorrei che la PSEUDO conoscenza di qualche STRINGA UNIX mi desse alla testa.

<FONT COLOR="ff6000">Comunque, Quando ci sono cinque file, per un totale di 1 GB occupato, la compattazione avviene solo se l'uso dello swap scende a 384 MB (37,5%). In pratica, è piuttosto difficile che accada.

384 MB? non mi paiono pochi... Sotto win xp con 256 di ram io genralmente ho 160 MB di swap... sotto OS X quasi tutti hanno mega e maga di ram, motivo in più per dire che 384 MB sono molti.</FONT>

Bisogna vedere come il kernel determina lo spazio libero nei file di swap. Immagina che un programma allochi un grosso buffer in memoria, e che vi scriva sopra, costringendo il kernel a swappare su disco una grande quantità di pagine. Poi il buffer viene deallocato: a questo punto c'è una grande quantità di RAM libera, ma le pagine swappate prima non verranno ricaricate finché qualcuno non le utilizzerà, quindi continueranno ad occupare swap.

Inoltre, quando una pagina viene ricaricata dallo swap non è affatto detto che il kernel liberi lo spazio di swap corrispondente. Può darsi che lo faccia solo se la pagina viene modificata in memoria: in questo modo, se la pagina deve essere di nuovo swappata senza essere stata modificata, non c'è bisogno di scriverla su disco: è già presente. Visto il risparmio di tempo in swap-out, è probabile che il kernel si comporti così. In questo caso, per rimuovere una pagina dallo swap bisognerebbe che essa venisse modificata in memoria o deallocata (oppure sostituita da un'altra pagina swappata, ma in questo caso lo spazio libero non aumenterebbe comunque). Quindi bisognerebbe vedere se, nel calcolare lo spazio di swap inutilizzato ai fini della compattazione, il kernel conta anche queste pagine "di riserva" oppure no.

Link to comment
Share on other sites

incuriosito da un dibattito nato in altra discussione; ho approfondito la conoscenza dei filtri al quarzo opzionabili in fase di stampa (menu ColorSync).

sono rimasto colpito, era una funzione che avevo dimenticato... anzi mai usata, a dir la verità.

credo che, a perderci un po' di tempo per comprenderne le funzionalità, possano dare indubbie soddisfazioni.

si possono scegliere filtri preimpostati:

Posted Image

oppure crearne di nuovi, con diverse opzioni di personalizzazione:

Posted Image

infine, per velocizzare il processo di stampa, si può salvare la configurazione di stampa (e vale per tutte le impostazioni, anche per la qualità di stampa, la gestione carta, ecc...), richiamando velocemente le impostazioni preferite a seconda del tipo di stampa:

Posted Image

Link to comment
Share on other sites

Matteo: <FONT COLOR="119911">sono rimasto colpito, era una funzione che avevo dimenticato... anzi mai usata, a dir la verità. </FONT>

Diciamo che ero uno dei pochi a sapere della sua esistenza, modestamente. ;D

Link to comment
Share on other sites

Sì, è decisamente una funzione interessante, visto che si può personalizzare e richiamare.

Ho già provato a "schiarire" di default alcuni file pdf realizzati con immagini a livelli di grigio (fotografie di documentazione clinica) con buoni risultati, e gran risparmio di tempo rispetto ad una operazione batch eseguita sui singoli file jpeg.

Diciamocela tutta: se non avessi sollevato il solito distinguo sui problemi di OSX, queste informazioni sulle print options non saltavano mica fuori ;-)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share