Paging di memoria
Ferranti AtlasEdit
Il primo computer a supportare il paging fu il supercomputer Atlas, sviluppato congiuntamente da Ferranti, l’Università di Manchester e Plessey nel 1963. La macchina aveva una memoria associativa (indirizzabile al contenuto) con una voce per ogni pagina di 512 parole. Il Supervisore gestiva le interruzioni di non equivalenza e gestiva il trasferimento di pagine tra core e drum al fine di fornire un archivio di un livello ai programmi.
Microsoft WindowsEdit
Windows 3.x e Windows 9xEdit
Paging è stata una caratteristica di Microsoft Windows da Windows 3.0 nel 1990. Finestre 3.x crea un file nascosto denominato 386SPART.PAR
o WIN386.SWP
da utilizzare come file di scambio. Si trova generalmente nella directory principale, ma può apparire altrove (in genere nella directory di WINDOWS). La sua dimensione dipende da quanto spazio di swap ha il sistema (un’impostazione selezionata dall’utente sotto Pannello di controllo → Migliorata sotto “Memoria virtuale”). Se l’utente sposta o elimina questo file, una schermata blu apparirà la prossima volta che Windows viene avviato, con il messaggio di errore “Il file di swap permanente è danneggiato”. All’utente verrà richiesto di scegliere se eliminare o meno il file (se esiste o meno).
Windows 95, Windows 98 e Windows Me utilizzano un file simile e le impostazioni per esso si trovano sotto Pannello di controllo → Sistema → Scheda prestazioni → Memoria virtuale. Windows imposta automaticamente la dimensione del file di paging per iniziare a 1,5× la dimensione della memoria fisica, ed espandere fino a 3× memoria fisica, se necessario. Se un utente esegue applicazioni ad alta intensità di memoria su un sistema con poca memoria fisica, è preferibile impostare manualmente queste dimensioni su un valore superiore a quello predefinito.
Windows NTEdit
Il file utilizzato per il paging nella famiglia Windows NT è pagefile.sys
. Il percorso predefinito del file di paging si trova nella directory principale della partizione in cui è installato Windows. Windows può essere configurato per utilizzare lo spazio libero su tutte le unità disponibili per i file di pagina. È necessario, tuttavia, per la partizione di avvio (es., l’unità contenente la directory di Windows) per avere un file di pagina su di esso se il sistema è configurato per scrivere kernel o dump di memoria completa dopo una schermata blu della morte. Windows utilizza il file di paging come memoria temporanea per il dump della memoria. Quando il sistema viene riavviato, Windows copia il dump della memoria dal file di paging in un file separato e libera lo spazio utilizzato nel file di paging.
FragmentationEdit
Nella configurazione predefinita di Windows, il file di paging può espandersi oltre la sua allocazione iniziale quando necessario. Se questo accade gradualmente, può diventare fortemente frammentato che può potenzialmente causare problemi di prestazioni. Il consiglio comune dato per evitare questo è quello di impostare una singola dimensione del file di pagina “bloccato” in modo che Windows non lo espanderà. Tuttavia, il file di paging si espande solo quando è stato riempito, che, nella sua configurazione predefinita, è il 150% della quantità totale di memoria fisica. Pertanto, la domanda totale di memoria virtuale supportata da file di paging deve superare il 250% della memoria fisica del computer prima che il file di paging si espanda.
La frammentazione del file di paging che si verifica quando si espande è temporanea. Non appena le regioni espanse non sono più in uso (al successivo riavvio, se non prima) le allocazioni di spazio su disco aggiuntive vengono liberate e il file di paging ritorna allo stato originale.
Il blocco delle dimensioni di un file di paging può essere problematico se un’applicazione Windows richiede più memoria della dimensione totale della memoria fisica e del file di paging, causando richieste di allocazione della memoria non riuscite che potrebbero causare il fallimento delle applicazioni e dei processi di sistema. Inoltre, il file di paging viene raramente letto o scritto in ordine sequenziale, quindi il vantaggio in termini di prestazioni di avere un file di paging completamente sequenziale è minimo. Tuttavia, un file di pagina di grandi dimensioni in genere consente l’uso di applicazioni pesanti per la memoria, senza penalità oltre a utilizzare più spazio su disco. Mentre un file di pagina frammentato potrebbe non essere un problema di per sé, la frammentazione di un file di pagina di dimensioni variabili creerà nel tempo diversi blocchi frammentati sull’unità, causando la frammentazione di altri file. Per questo motivo, un file di pagina contiguo a dimensione fissa è migliore, a condizione che la dimensione allocata sia abbastanza grande da soddisfare le esigenze di tutte le applicazioni.
Lo spazio su disco richiesto può essere facilmente allocato su sistemi con specifiche più recenti (es. un sistema con 3 GB di memoria con un file di pagina a dimensione fissa da 6 GB su un’unità disco da 750 GB o un sistema con 6 GB di memoria e un file di pagina a dimensione fissa da 16 GB e 2 TB di spazio su disco). In entrambi gli esempi, il sistema utilizza circa lo 0,8% dello spazio su disco con il file di paging pre-esteso al massimo.
La deframmentazione del file di paging è anche occasionalmente consigliata per migliorare le prestazioni quando un sistema Windows utilizza cronicamente molta più memoria della sua memoria fisica totale. Questa vista ignora il fatto che, a parte i risultati temporanei dell’espansione, il file di pagina non si frammenta nel tempo. In generale, i problemi di prestazioni relativi all’accesso ai file di pagina sono affrontati in modo molto più efficace aggiungendo più memoria fisica.
Sistemi Unix e Unix-like
I sistemi Unix e altri sistemi operativi Unix-like usano il termine “swap” per descrivere l’atto di sostituire lo spazio su disco per la RAM quando la RAM fisica è piena. In alcuni di questi sistemi, è comune dedicare un’intera partizione di un disco rigido allo scambio. Queste partizioni sono chiamate partizioni di swap. Molti sistemi hanno un intero disco rigido dedicato allo scambio, separato dall’unità dati(s), contenente solo una partizione di swap. Un disco rigido dedicato allo scambio è chiamato “swap drive “o” scratch drive “o”scratch disk”. Alcuni di questi sistemi supportano solo lo scambio di una partizione di swap; altri supportano anche lo scambio di file.
LinuxEdit
Il kernel Linux supporta un numero virtualmente illimitato di backend di swap (dispositivi o file) e supporta anche l’assegnazione di priorità di backend. Quando il kernel scambia le pagine dalla memoria fisica, utilizza il backend con priorità più alta con spazio libero disponibile. Se a più backend di swap viene assegnata la stessa priorità, vengono utilizzati in modo round-robin (che è in qualche modo simile ai layout di archiviazione RAID 0), fornendo prestazioni migliorate purché i dispositivi sottostanti possano essere accessibili in modo efficiente in parallelo.
Scambia file e partizionimodifica
Dal punto di vista dell’utente finale, scambia file nella versione 2.6.x e versioni successive del kernel Linux sono praticamente veloci come le partizioni di swap; la limitazione è che i file di swap dovrebbero essere allocati contiguamente sui loro file system sottostanti. Per aumentare le prestazioni dei file di swap, il kernel mantiene una mappa di dove sono posizionati sui dispositivi sottostanti e li accede direttamente, bypassando così la cache ed evitando l’overhead del filesystem. Indipendentemente da ciò, Red Hat consiglia di utilizzare le partizioni di swap. Quando risiedono su HDD, che sono dispositivi multimediali magnetici rotazionali, uno dei vantaggi dell’utilizzo di partizioni di swap è la possibilità di posizionarli su aree HDD contigue che forniscono un throughput dei dati più elevato o un tempo di ricerca più rapido. Tuttavia, la flessibilità amministrativa dei file di swap può superare alcuni vantaggi delle partizioni di swap. Ad esempio, un file di swap può essere posizionato su qualsiasi file system montato, può essere impostato su qualsiasi dimensione desiderata e può essere aggiunto o modificato secondo necessità. Le partizioni di swap non sono così flessibili; non possono essere ingranditi senza l’utilizzo di strumenti di partizionamento o di gestione dei volumi, che introducono varie complessità e potenziali tempi di inattività.
SwappinessEdit
Swappiness è un parametro del kernel Linux che controlla il peso relativo dato allo scambio dalla memoria di runtime, al contrario di eliminare le pagine dalla cache della pagina di sistema, ogni volta che una richiesta di allocazione della memoria non può essere soddisfatta dalla memoria libera. Swappiness può essere impostato su valori compresi tra 0 e 200 (incluso). Un valore basso fa sì che il kernel preferisca eliminare le pagine dalla cache delle pagine mentre un valore più alto fa sì che il kernel preferisca scambiare pagine di memoria “fredde”. Il valore predefinito è 60
; impostazione di un livello più alto può causare alta latenza se il freddo le pagine devono essere scambiata in (quando si interagisce con un programma che era stato inattivo per esempio), mentre inferiore (anche 0) può causare alta latenza quando i file che erano stati sfrattati dalla cache devono essere leggere di nuovo, ma fare programmi interattivi più reattivo come saranno meno propensi a scambiare indietro fredda pagine. Lo scambio può anche rallentare ulteriormente gli HDD perché comporta molte scritture casuali, mentre gli SSD non hanno questo problema. Certamente i valori predefiniti funzionano bene nella maggior parte dei carichi di lavoro, ma desktop e sistemi interattivi per qualsiasi attività prevista potrebbero voler abbassare l’impostazione durante l’elaborazione batch e sistemi meno interattivi potrebbero volerlo aumentare.
Swap deathEdit
Quando la memoria di sistema è altamente insufficiente per le attività correnti e una gran parte dell’attività di memoria passa attraverso uno swap lento, il sistema può diventare praticamente incapace di eseguire qualsiasi attività, anche se la CPU è inattiva. Quando ogni processo è in attesa sullo swap, il sistema è considerato in swap morte.
La morte di swap può verificarsi a causa di un sovraccarico di memoria configurato in modo errato.
La descrizione originale del problema” swapping to death ” si riferisce al server X. Se il codice o i dati utilizzati dal server X per rispondere a una sequenza di tasti non sono nella memoria principale, se l’utente inserisce una sequenza di tasti, il server prenderà uno o più errori di pagina, richiedendo che tali pagine vengano lette dallo swap prima che la sequenza di tasti possa essere elaborata, rallentando la risposta ad essa. Se quelle pagine non rimangono in memoria, dovranno essere nuovamente inserite in errore per gestire la sequenza di tasti successiva, rendendo il sistema praticamente insensibile anche se in realtà esegue normalmente altre attività.
macOSEdit
macOS utilizza più file di scambio. L’installazione predefinita (e consigliata da Apple) li posiziona sulla partizione root, anche se è possibile posizionarli invece su una partizione o un dispositivo separato.
AmigaOS 4Edit
AmigaOS 4.0 ha introdotto un nuovo sistema per l’allocazione della RAM e la deframmentazione della memoria fisica. Utilizza ancora lo spazio di indirizzi condiviso piatto che non può essere deframmentato. Si basa sul metodo di allocazione della lastra e sulla memoria di paging che consente lo scambio. Il paging è stato implementato in AmigaOS 4.1 ma può bloccare il sistema se tutta la memoria fisica è esaurita. La memoria swap può essere attivata e disattivata in qualsiasi momento consentendo all’utente di scegliere di utilizzare solo la RAM fisica.
Leave a Reply