Newsgroup: it.comp.os.win.win2000
Titolo: Facciamo chiarezza una volta per tutte sul file di swap ?

Com'è noto, Microsoft afferma che la gestione della memoria dei sistemi
Windows richiede la presenza di uno swapfile.
Se non vado errato però la nozione di swapfile, da che esistono i sistemi
operativi, significa "uno spazio su disco che il sistema utilizza per
simulare memoria aggiuntiva quando quella installata diviene insufficiente".
In altre parole, un OS sposta sul disco i dati dei processi che in quel
momento sono fermi, in modo da poter tenere in memoria quelli dei processi
in esecuzione.
Da questa nozione deriva la conclusione, che molti raggiungono, che in
presenza di una quantità di RAM superiore a quella massima che il sistema
potrà utilizzare uno swapfile non sia necessario.
Microsoft invece afferma che è necessario comunque.
Ora, e qui mi rivolgo particolarmente ai Support, è possibile sapere come
sia strutturata la gestione della memoria di Windows, e *perché* richieda
per forza uno swapfile anche se si ha un GB di RAM e se ne usa al massimo
mezzo ?
Grazie...
Massimo
P.S.
Il crosspost è volontario, la domanda ricorre spessissimo in entrambi i
gruppi.

 sistema potrà utilizzare uno swapfile non sia necessario.
Anche questo e' stato considerato. Togliendo lo swapfile, Windows e'
obbligato a tenere tutto in RAM e l'efficienza delle task in foreground
aumenta; pero' Microsoft raccomanda di mantenere comunque uno swapfile su un
disco, anche se non si desidera usarlo.
Inoltre c'e' questa nota, che probabilmente risponde a quanto chiedi (ometto
l'origine perche' protetta da copyright e perche' non avevo tanta voglia di
tradurre tutto :-)):
A large page file is appropriate for systems with relatively low RAM
configurations-on a system with 128 MB of RAM, for instance, a page file of
192 MB to 384 MB makes perfect sense. With higher RAM counts, overly large
page files simply waste disk space. If you have 512 MB or more of RAM and
your Total Commit Charge never approaches the total physical memory
installed on your computer and you're short of free disk space, you might
want to set your page file to a fixed size, where the initial and maximum
sizes are identical and are equal to your total amount of installed RAM. Be
aware, however, that this option can result in out-of-memory error messages
if your computing requirements change over time.
Ciao
Luca

Microsoft invece afferma che è necessario comunque.
Ciao Massimo, mi permetto di dire la mia.
Come tu dici effettivamente se uno ha un grande quantitativo di RAM lo
swap potrebbe o dovrebbe non servire.
Di tutti i sistemi M$ però solo XP permette di NON tenere un file di
swap mentre con tutti gli altri è necessario averlo.
Io uso a casa WinXP su una macchina con 1 Gb di RAM e la
configurazione migliore è usarla SENZA file di swap.
Quando la riempi tutta... fine, sei arrivato.
Poi dipende dalla applicazioni che ci fai girare...
Se ad esempio cominci a lanciare 3 macchine virtuali VMWare e intanto
ci fai dell'altro anche con un 1Gb di RAM lo swap è necessario.
Ciao
-- 
Per una pera, una pera cazzo...

 essere in stato dormant, idle o waiting for I/O.
Intendevo quello, grazie comunque per la precisazione :-)

Ancora una volta sento dire di mantenere comunque un page file uguale alla
memoria disponibile, *nonostante* nella situazione ipotizzata questa non
venga mai utilizzata del tutto. Facciamo due conti: 512 MB di RAM
installati, con occupazione massima prevista ipotizzabile inferiore al
totale, quindi diciamo 500 (e siamo proprio al limite). Paging file di altri
512, quindi totale 1 GB. Come diavolo dovrebbe accadere un out of memory se
anche se ne usassero 700 MB ? Ma alla Microsoft pensano che l'occupazione di
memoria su un computer raddoppi all'improvviso in maniera più o meno casuale
? :-)
Massimo

 ci fai dell'altro anche con un 1Gb di RAM lo swap è necessario.
Su quello siamo d'accordissimo.
Io continuo solo a non capire perché Microsoft raccomandi comunque swapfile
colossali anche su macchine con quantità industriali di RAM... sembrerebbe
ci sia una ragione più tecnica rispetto al puro e semplice utilizzo di
memoria, ma nessuno ne parla mai in dettaglio.
Massimo

 Microsoft invece afferma che è necessario comunque.
Questa volta Microsft non sbaglia. Un processo e` definito come un programma
in esecuzione. Quando ci sono molti programmi in esecuzione la necessita`
diventa quella di dare loro un adeguato spazio di memoria per la loro
esecuzione. Se il programma e` stato compilato con memoria rilocabile
(cioe` al programma e` sufficiente sapere dove comincia lo spazio di
memoria ad esso assegnato) in teoria la memoria virtuale serve solo quando
la memoria fisica e` piena; in caso contrario bisogna eventualemnte fare un
po' di spostamenti per far spazio tra programmi che vogliono la stessa zona
di memoria. Ora: sono anni che non si compilano programmi con indirizzi
assoluti, quindi questa e` una ragione teorica che lascia il tempo che
trova.
Tuttavia, molti sistemi operativi usano ancora swap. Linux, addirittura,
pretende che esista una specifica partizione su disco che faccia da swap.
In quella partizione vengono ad esempio memorizzate tutte quelle routine di
programma che non vengono necessariamente utilizzate da un programma, e che
vengono spostate "per fare spazio in memoria", che resta sempre una risorsa
importante, anche se tu ne possiedi in quantita`. Un Sistema Operativo e`
infatti un programma sviluppato per gestire uno strumento general-purpose,
e per adattarsi a tutte le situazioni: quando e` ben fatto, non temere,
fara` di tutto per gestire al meglio la memoria, e le pagine piu` richieste
saranno sempre disponibili in RAM. 
-- 
Luca Telloli <telloli [at] cs [dot] unibo [dot] it>
Undergraduate of Computer Sciences @ University of Bologna - Italy

 2) Lo SWAP file se si ha una quantità inusitata di RAM non serve.
Falso. Puoi certamente aprire abbastanza programmi per saturarla. La parola
"inusitata" e` di molto "relativa". E molte persone sui propri PC non ne
hanno poi cosi` tanta. Metti win2000 con meno di 256Mb e togli il file di
swap: sara` di certo un disastro. Il sistema operativo deve funzionare in
tutte le condizioni, anche quando la memoria a disposizione non e` molta. 


 Fai finta di non capire? Qui stiamo parlando di HOME USERS, non di
Chi l'ha detto?
Rileggi il post iniziale.
Ciao
Luca

 E' chiaro che esistono delle eccezioni ma sono, appunto, eccezioni.
Esatto. E non mi pare sia il caso di riscrivere per queste eccezioni un
sistema operativo aggiungendo il supporto per lo swap perche` qualche
tontolone ha creduto in precedenza che con tanta memoria questo non
servisse a nulla.


 interessa capire PERCHE' accade questo, che tu ci creda o meno
Allora: se ti interessa capire PERCHE', informati, ragionaci su e studia
qualche testo serio, anziche' fare test privi di fondamento e accanirti
contro chi non condivide i tuoi risultati; nessuno mette in dubbio che le 4
prove che hai fatto funzionino, ma non sei ancora stato in grado di
spiegarne la ragione.
Pero' ti accanisci contro Microsoft e la sua "gestione RAM da schifo",
ammettendo tu stesso di non sapere come funziona; poi te la prendi con chi
fornisce spiegazioni "da server" e non specificatamente per home users come
vuoi tu ...
Informati su come funziona la gestione della RAM sotto NT e derivati; sulla
kb di Microsoft c'e' fior di documentazione (abbondamente segnalata anche in
passato) sulla gestione della memoria, la sua auto-deframmentazione e lo
swap.
Tanto per mettere li' una metafora del cavolo: se viaggio con un filo di
acceleratore, la mia auto arriva a 120km/h, ma se lo affondo del tutto e non
raggiunge i tremila, dovrei inveire contro il fabbricante perche' mi ha
venduto una "gestione iniezione da schifo"? ;-)
Ciao
Luca

 swap. 
Certo, in un sistema scritto col culo.
Al momento sul mio linux ho attivi i servizi ftp, smtp, web, pop,
nntp, imap, perfino un ircserver e qualche altro servizio minore.
Inoltre a livello client ho X attivo e diversi programmi.
Situazione risorse:
Mem:  256300K av, 164200K used,  92100K free,      0K shrd,   7224K buff
Swap: 136544K av,      0K used, 136544K free                 81780K cached
Tu vedi un uso del file di swap? No: perché di RAM ce n'è in abbondanza,
e allora perché rompere i coglioni al disco?
Ti posso garantire che finché la memoria RAM non va saturata, di usare
il file di swap, qua non se ne parla.
Ma vediamo come se la cava su un sistema con meno risorse, che comunque
fa da firewall, router, webserver, smtpserver, pop e imap:
Mem:   30664K av,  25464K used,   5200K free,  24044K shrd,   4052K buff
Swap:  66524K av,    512K used,  66012K free                 13212K cached
A fronte di una memoria ram quasi esaurita (attualmente 5MB liberi
residui) lo swap su disco si mantiene a livelli irrilevanti (512K),
probabilmente dovuti a un momento di uso più intenso delle risorse.
Ti basta?
Poi se vogliamo ancora difendere Win2000 a tutti i costi, facciamolo
pure: ma se con linux basta un 486 con 32 mb di ram per ottenere le
prestazioni server di un P4-2Ghz 2 GB di ram con Win2000 un motivo
c'è...
-- 
Massimo Bacilieri AKA Crononauta 
mailto:
ulib...@libero.it
 ; ICQ:4005815

Se non vado errato perň la nozione di swapfile, da che esistono i sistemi


Ora, e qui mi rivolgo particolarmente ai Support, è possibile sapere come


1.8 GB DI RAM LIBERI???
e soprattutto, perche' il file di swap rimane li' dopo che la macchina
e' spenta?? o magari contiene info relative e "tracce di memoria" di
sessioni precedenti...??
ma dove sono i tanto super-cazzuti guru di microsoft in questo
momento??
ah... scusate, forse si deve pagare anche per sapere queste
informazioni... allora chiamiamo l'help desk di microsoft... e
sentiamoci dire che non e' autorizzato a dirci... (ma solo dopo avere
pagato)...
meditate, gente, meditate...

 abbestia anche se non serve);
"anche se non serve"?
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.20. C, C++ and ASM developers
                              and beta testers are welcome!

 meditate, gente, meditate...
ma taci, per piacere


 gestione di memoria utilizzi.
sai cosa succede quando la non-paged pool finisce? Nessun messaggio 
d'errore. Nessun preavviso. Nessuna speranza. Il sistema va in crash, 
probabilmente senza nemmeno uno schermo blu. Non avrai una seconda 
chance. Non saprai mai cos'è successo. Nessuno sentirà le tue urla


 c'č...
Trovo strana tanta aggressivita' per una semplice discussione tecnica :-)
Personalmente, anche se certificato MS e riconosciuto MVP, non ho nessun
interesse a santificare un sistema operativo che potrebbe essere molto
migliore/ato, e cerco sempre di essere il piu' obiettivo possibile.
In ufficio i miei server di posta e web/ftp girano da agosto su linux e sono
una vera meraviglia, mentre il server della contabilita' su w2k server si
pianta almeno una volta a settimana. Questo e' per me un dato oggettivo, mi
organizzo di conseguenza e ci convivo senza troppe rogne.
Anche il mio firewall con DMZ e' su linux e non ho proprio nulla da
lamentarmi.
Cio', IMHO, non e' pero' sufficiente a voler parlare male a tutti i costi di
questo o di quel sistema; fortunatamente ogni soluzione ha pro e contro, e
cio' permette la sopravvivenza del mercato e la libera circolazione delle
idee.
A onor della cronaca, in ufficio ho anche macchine Mac e Sun, ciascuna con
fior di vantaggi e svantaggi. Ma non per questo mi incaponisco a sostenere
che un dato sistema operativo e' un bidone, per il semplice motivo che non
si puo' osservare un prodotto da un unico (e quindi miope) punto di vista.
Ciao
Luca

 Tutto il resto sono chiacchiere
Bene. Continua da solo. Tanto, come ho detto, sul dialogo sei perfettamente
autosufficiente.
Ciao
Luca

 SOLO QUANDO NECESSARIO.
Dimenticavo.
Tanto per fare una prova anch'io, ho azzerato lo swap su XP Pro su tutti i
dischi (ho 1GB di RAM).
Il pagefile.sys non esiste fisicamente su nessun drive (prima era da 2Gb su
un raid0 Ultra160), ma mi ritrovo comunque un utilizzo del file di swap di
180MB.
Dato che vai sempre cosi' sul sicuro, me lo spieghi il perche'? :-)
Ciao
Luca

 > prestazioni AUMENTANO nel secondo caso. Fantascienza.
In un sistema multitask non puoi prevedere a priori quanta memoria
utilizzeranno in un dato istante TUTTI i processi attivi.
Quindi SE il sistema è stato configurato per usare il meccanismo della
memoria virtuale E la memoria allocata dai programmi è definita come
paginabile il gestore della memoria la paginerà al fine di preservare
il più possibile memoria fisica per quei programmi che hanno necessità
di memoria non paginabile.
L'alternativa è quella di avere i tuoi bei programmi in errore per
impossibilità
di allocazione di memoria. Fai tu.
Quindi, dimmi cosa ci sarebbe di scandaloso e mal-fatto nell'avere un
sistema
che assicura almeno una ragionevole continuità di servizio?
A parrebbe più grave avere un sistema che si ferma sistematicamente alla
saturazione della memoria fisica installata.
E' ovvio che se tu sai perfettamente quale è l'ammontare di memoria
richiesta
dai programmi da te usati (è già un semplice copia incolla potrebbe farti
saltare tutti i conti) sei libero di non usare memoria virtuale.
--
Saluti e salute a tutti.
________________
Gabriele Del Giovine [Microsoft MVP]
Windows 2000 - Windows NT 4.0
- Le informazioni fornite in questo messaggio sono fornite
  senza vincolo di garanzia e senza responsabilità alcuna.
- This posting is provided "AS IS" with no warranties explicit
  or implied and confers no rights whatsoever.

 potenti e contemporaneamente da saturare una RAM di 2 GB.
Uno che usa un programma di manipolazione dei file Wav per farne degli MP3?
Al limite uno che si diverte a scrivere programmilli il VB
con un'istruzione simile
Dim a(1 To 200000) As String * 10000
--
Saluti e salute a tutti.
________________
Gabriele Del Giovine [Microsoft MVP]
Windows 2000 - Windows NT 4.0
- Le informazioni fornite in questo messaggio sono fornite
  senza vincolo di garanzia e senza responsabilitŕ alcuna.


 c'è...
Notoriamente i processi che hai in esecuzione sulla macchina Linux
non usano allocare parecchia memoria perchè NON hanno strutture
di memorizzazione interne (fatto salvo forse la tabella per le funzioni di
NAT di ipchain o Iptable).
Installati qualcosa tipo MySQL o un WM come Gnome o KDE ed usalo.
Poi nei riparliamo.
--
Saluti e salute a tutti.
________________
Gabriele Del Giovine [Microsoft MVP]
Windows 2000 - Windows NT 4.0
- Le informazioni fornite in questo messaggio sono fornite
  senza vincolo di garanzia e senza responsabilità alcuna.


 d'altro canto si trata di un "sistema a finestre"...
Qui siamo al delirio puro. :-)
Saluti.

 Tutto il resto sono chiacchiere.
Il mondo e` vasto. Scrivi il tuo sistema operativo o il tuo algoritmo di
paging, se e` valido lo useranno in tanti. 


 Poi nei riparliamo.
Ricordo appunto uno screenshot del Task Manager di Gnome. Il piů banale 
dei processi stazzava 7 MB e piů. Almeno Windows, per come č progettata 
l'interfaccia grafica, puň sgonfiare i processi quando le loro finestre 
vanno in background (che poi ad esempio un Opera richieda anche qualche 
minuto per tornare in foreground, sono compromessi da accettare)


 Se mi dici di no o mi prendi in giro o non sei in buona fede.
oppure è che non riesco a prenderti sul serio


 Tutto il resto sono chiacchiere.
io dico che tu non capisci un accidente di programmazione in kernel 
mode, e se non fossi sicura di traumatizzarti, ti spedirei a chi di 
dovere per rispondere alle tue domande. Tutte chiacchere? è che non 
riesco proprio a prenderti sul serio



no l'ho letto su un manuale... quale delirio...

 no l'ho letto su un manuale... quale delirio...
Mi dici quale manuale e quale pagina?
Saluti.

 piu` grave.
A me sono circa 230 Mb... sigh...
Stef_Ozzy

 Poi nei riparliamo.
Mysql ce l'ho, ma il fatto di usarlo non è che cambia la logica di
impiego del file di swap. Che, finché la memoria è disponibile, non
viene usato...
E non mi pare che per questo linux sia un sistema che vada spesso in
blocco causa carenza di risorse... anzi... semmai... mah! :-b


 blocco causa carenza di risorse... anzi... semmai... mah! :-b
Anche qui non ci siamo capiti.
Linux non va in errore perchè quando un processo deve allocare memoria
eccedente quella fisica disponibile la surroga con quella paginata.
Esattamente come deve fare un OS a memoria Virtuale.
Quello che cambia nella strategia di gestione della memoria dei due OS
è il quantitativo di memoria fisica da preservare. La strategia del
VM di Microsoft (che è anche quella del VMS di Digital) è quella
di preservare il quantitativo massimo di memoria fisica in un dato istante.
Quello di Linux è quello di sfruttare la memoria fisica il più possibile
quando
questa c'è.
Saluti.

 memoria, ma nessuno ne parla mai in dettaglio.
Premesso che condivido in pieno quello che dici (io ho ~400 MB e, con uno swap di 100 MB faccio girare di tutto :-)
Comunque la ragione tecnica è questa:
Windows, quando si carica un programma, non può sapere a priori quanta memoria il suddetto richiederà cioè, per esempio, se una
volta caricato il Photoshop si apre una grossa immagine, l'occupazione di memoria aumenterà all'improvviso.
Windows è progettato per garantire le massime prestazioni a runtime, per cui, anche se al momento la cosa non è necessaria, mette le
mani avanti e sposta comunque tutto ciò che non è indispensabile sullo swap.
Questo comportamento può essere utile in determinate circostanze o totalmente inutile in altre.
Modificando delle chiavi di registro si può obbligare windows a non paginare mai il kernel (e già questo riduce il problema).
Comunque, a mio parere, quando si hanno più di 500 MB la cosa migliore è quella di ridurre al minimo (100 MB ad esempio) lo swap
(alcuni programmi lo richiedono, per cui non si può eliminare del tutto) e di aumentarlo solo se durante il funzionamento windows
avverte che viene richiesto uno swap più grande.