Canali
20080829221358

Guida definitiva alla memoria virtuale

06/10/2006
- A cura di
Zane.
Trucchi & Suggerimenti - Ogni sorta di suggerimento è stato pubblicato riguardo questa importantissima funzionalità di Windows. Mettendo da parte le erronee credenze tanto diffuse, ecco qualche suggerimento ragionato.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

virtuale (2) , memoria (1) , memoria virtuale (1) .

Valutazione

  •  
Voto complessivo 5 calcolato su 714 voti
Il dibattito è aperto: partecipa anche tu! AvvisoQuesto contenuto ha ricevuto un numero significativo di commenti. Una volta conclusa la lettura, assicurati di condividere con tutti anche le tue impressioni! La funzionalità è accessibile subito in coda, ai piedi dell'ultima pagina.
Il pezzo che stai leggendo è stato pubblicato oltre un anno fa. AvvisoLa trattazione seguente è piuttosto datata. Sebbene questo non implichi automaticamente che quanto descritto abbia perso di validità, non è da escludere che la situazione si sia evoluta nel frattempo. Raccomandiamo quantomeno di proseguire la lettura contestualizzando il tutto nel periodo in cui è stato proposto.

Fra miti, leggende Rete e formule alchimistico-matematiche davvero opinabili, la regolazione ottimale della memoria virtuale sotto Windows è sempre stata oggetto di ogni sorta di discussione.

Con il presente articolo spero finalmente di poter fare definitivamente un po' di chiarezza: nel corso dell'articolo tenterò di fare il punto della situazione sulle notizie circolate fino ad ora, riflettere sul perché si tratta in molti casi di suggerimenti inesatti (o quantomeno obsoleti) e di fornire qualche spunto realmente utile per ottenere il meglio, ponderato in base alle tecnologie oggi disponibili e a numerose ore di ricerche ed esperimenti di ogni tipo.

Che cosa è la memoria virtuale

Il meccanismo della memoria virtuale (altresì chiamato swap (Windows 98/98SE/ME) oppure paging (Windows NT/2000/XP/2003) ed a sua volta implementato nei sistemi Windows con un file di swap oppure file di scambio è stato ideato per consentire al sistema operativo di poter utilizzare più memoria RAM di quanta effettivamente presente sulla macchina.

Volendo semplificare al massimo, questa funzionalità si appoggia al disco fisso per spostare fuori RAM i dati o programmi inattivi, consentendo al sistema operativo di caricare su richiesta dell'utente molti più programmi e dati di quelli che potrebbero fisicamente essere immagazzinati dalla memoria centrale.

Allo stesso modo, la macchina diventa in grado di eseguire un programma più grande di quanto non possa essere caricato in RAM, semplicemente appoggiando temporaneamente sul disco fisso la pozione di codice non inutilizzata.

Il problema però è di natura prestazionale: il disco fisso è estremamente più lento della memoria centrale, e la lettura/scrittura di dati richiede parecchio tempo. Ecco quindi che un uso intenso della memoria virtuale può rapidamente degradare le prestazioni del sistema.

Come regolarlo

La gestione del file di scambio, oggetto di questo articolo, è impostabile in alcune opzioni essenziali direttamente da Windows: per la procedura passo-passo rimando all'ottimo articolo "Modifichiamo il file di Swap di Windows".

Nel prosieguo darò per scontato che il lettore sappia regolare queste impostazioni.

La migliore ottimizzazione dello swap? Non usarlo..

.. o meglio, usarlo il meno possibile. Sebbene per come sia strutturato un personal computer (e Windows in particolare) non sia possibile disattivare la memoria virtuale (ad esempio, sulla macchina che sto usando per scrivere questo articolo sono montati 2 GB di RAM, ma in questo momento il sistema sta utilizzando comunque circa 400 MB di memoria virtuale) installare memoria addizionale limiterà sicuramente gli accessi al disco.

I vantaggi prestazioni sono considerevoli: i tempi per accedere ad un tradizionale disco fisso motorizzato a piatti rotanti sono infatti ordine di 1.000 volte maggiori di quelli necessari per accedere ai dati in memoria RAM...

Partizione diversa / disco fisso diverso

Una delle leggende metropolitane più diffuse in Rete riguardo la configurazione della memoria virtuale suggerisce di spostare il file di swap su una partizione diversa del disco. Si tratta però di una interpretazione sbagliata di un consiglio valido.

La raccomandazione corretta, per le motivazioni che mi accingo ad esporre, è di spostare il file di swap sul secondo disco fisso, qualora fosse presente, ma di mantenerlo sulla partizione di sistema in caso sulla macchina fosse installato un solo hard disk.

Spostando la memoria virtuale sul secondo disco infatti, possiamo sfruttare in parallelo le due testine di lettura/scrittura: mentre il primo disco accede ai file, il secondo può gestire la memoria virtuale, senza dover attendere la conclusione della prima operazione. In altre parole, si parallelizza il problema, mentre sfruttando un solo drive la seconda operazione non può iniziare fino a quando non sia terminata la prima.

Ad ulteriore riprova di quanto appena affermato, faccio notare che la guida all'ottimizzazione di Adobe Photoshop suggerisce di impostare la memoria virtuale e lo scratch disk del programma (una sorta di memoria virtuale riservata a Photoshop) su dischi fissi diversi: il motivo è esattamente quello di parallelizzare gli accessi ai due file. Talune versioni di Photoshop addirittura avvisano l'utente con una finestra di dialogo all'avvio del programma in caso questo suggerimento non sia rispettato..

Impostando la memoria virtuale su di una seconda partizione dello stesso disco invece, le prestazioni tendono a diminuire: la singola testina di lettura dovrebbe eseguire fisicamente grandi spostamenti fra la partizione che contiene il sistema operativo e quella in cui viene impostato lo swap. In caso invece si trovassero sulla stessa partizione, la distanza da coprire per lo spostamento è minore e quindi l'operazione è più veloce.

Lasciare un po' di swap su C:

Molti documenti e riflessioni trovati in Rete consigliano di lasciare sempre e comunque un piccolo file di swap (grande 2MB oppure 50MB a seconda delle fonti) sul disco C: , anche in caso il file di swap primario venga spostato sul secondo disco fisso.

Questa procedura viene consigliata per aggirare un (presunto?) baco di Windows: senza questo piccolo file il sistema operativo ignorerebbe del tutto l'indicazione di spostare lo swap sul secondo disco, e continuerebbe ad utilizzare lo spazio sulla partizione di sistema. Nei test che ho eseguito per preparare questo articolo non ho mai riscontrato questo inconveniente. Ad ogni modo, se per caso doveste riscontrare qualche incongruenza fra il comportamento del sistema operativo ed i valori da voi impostati tenete a mente questo suggerimento (e magari raccontatemi la vostra esperienza!).

Riassumendo

In linea di massima quindi, la scelta migliore è quella di impostare il file di swap su di un secondo disco fisso oppure di mantenerlo sulla partizione di sistema in caso sulla macchina fosse installato un solo hard disk. La scelta peggiore è invece quella di spostare la memoria virtuale sulla partizione secondaria del drive di sistema.

Se la differenza fra una configurazione a due dischi e quella ad un solo hard disk può essere tangibile in caso il sistema sia sotto sforzo, la differenza prestazionale fra lasciare lo swap sulla partizione di sistema e spostarlo sulla secondaria era significativa soprattutto nel passato, quando i dischi erano estremamente lenti: con i dischi fissi moderni, capaci di rotazioni di 7.200 giri al minuto e più, il tempo necessario per il posizionamento della testina è calato drasticamente, e con esso la differenza in termini di performance fra le due scelte.

E Linux allora?

Al contrario di Windows, Linux utilizza una partizione separata per gestire la memoria virtuale, anche in caso sia presente un solo disco. Sebbene questo possa sembrare in contraddizione con quanto appena affermato, è in realtà frutto di una strategia totalmente diversa per la gestione dello swap.

Mentre Windows utilizza un tradizionale, grosso file sullo stesso filesystem in cui vi sono anche dati e cartelle (si chiama pagefile.sys: potete vederlo attivando la visualizzazione dei file nascosti e di sistema), Linux utilizza un filesystem completamente diverso da quello utilizzato per il sistema operativo e i dati utente: lo scopo è chiaramente quello di sfruttare una disposizione diversa dei dati memorizzati su disco per poter sfruttare alcuni algoritmi più efficienti per accedere a questo particolarissimo file.

Come dire quindi, si perde un po' nello spostamento della testina, ma si guadagna nettamente di più nell'accesso ai dati.

Dimensione minima / dimensione massima

Windows consente di regolare due distinti parametri per la memoria virtuale: un valore minimo ed uno massimo. È estremamente importante ai fini di garantire la massima resa del sistema impostare entrambi i campi ad uno stesso valore.

In caso contrario infatti il sistema ridimensiona il file "al volo", a seconda delle esigenze: l'operazione però richiede una serie di accessi al disco davvero impegnativo, che riduce le prestazioni in modo tangibile. Impostando sempre lo stesso valore invece si evita questo problema.

Questa distinzione di valori è stata ereditata da Windows 95: a quei tempi infatti la capienza dei dischi fissi era estremamente ridotta (stiamo parlando di tagli tipici attorno a 2.1 GB!) e non era quindi pensabile poter preallocare uno spazio così significativo: la scelta è stata quindi quella di sacrificare le prestazioni velocistiche in favore di una migliore usabilità dello strumento.

Visti i già ricordati aumenti di capienza dei dischi, non mi stupirei davvero se nelle prossime versioni di Windows i campi memoria virtuale minima/massima venissero unificati in un valore solo...

Fatta chiarezza su alcuni aspetti della tecnologia, veniamo al punto cruciale del problema: le dimensioni.

Pagina successiva
Grande è meglio!
Pagine
  1. Guida definitiva alla memoria virtuale
  2. Grande è meglio!
  3. Monitorare il sitema
  4. Fonti e riferimenti

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2014 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising

    • Gen. pagina: 0.12 sec.
    •  | Utenti conn.: 107
    •  | Revisione 2.0.1
    •  | Numero query: 19
    •  | Tempo totale query: 0