Newsgroup: it.comp.os.win.windows7
Titolo: Perché la memoria di kernel è in paging anche se c'è memoria fisica libera?

Salve a tutti.
 
Dal task manager vedo che win7 (mi) mette sempre in paging una parte del 
kernel, anche quando c'è della ram libera:
https://www.dropbox.com/s/c5xpjh87qwb1bcb/2013-11-20%2010.51.16.jpg
 
 
C'è qualche motivo perché ciò avvenga? Perché non allocare il kernel nella 
ram libera, che per definizione è lì a non fare niente? :-)
 
Ciao, e grazie,
Francesco
 

Rotfl, scusate, ho sbagliato a linkare la foto.
Quella giusta è questa: 
https://www.dropbox.com/s/9jxsf5vagm4jws4/Screenshot%202013-11-20%2012.04.45.png
 
(i porcini sono buoni, comunque).
 
F.
 
 


 
-- 
 
Bob
 
http://www.webalice.it/argonex/
 

Ciao
 
-- 
Marco
 


 
Mica tanto.
L� dice "Generally, If you have enough RAM to run, then the virtual memory 
will not be used."
Che mi pare cosa buona e giusta, appunto. Per questo non mi spiego perch� 
win (mi) metta in paging una parte del kernel anche quando c'� ram libera.
 
Ciao,
Francesco
 

 
http://supermodding.blogspot.it/2011/11/lettura-swap-file-il-file-di-paging.html
 
 
S�, grazie, conoscevo quel parametro (nel senso che me l'aveva suggerito 
gugle). Mettendo '1' s'impedisce al kernel di essere messo nello swap; 
lasciando '0' si consente di metterlo in paging quando win decide che ce ne 
sia bisogno.
Ma a me va bene che sia messo in paging quando ce n'� bisogno (anche perch�, 
a quanto leggo, l'opzione '1' pu� rendere instabile il sistema se c'� forte 
richiesta di memoria); quel che invece non mi spiego (e che chiedevo) � 
perch� venga messo in paging anche quando c'� ram libera.
 
Per dire, in questo momento ho 7.5 giga di ram libera, 240 mb di memoria di 
kernel di paging e 80 mb di memoria di kernel non di paging.
Mi parrebbe di maggior buonsenso (ma non sono un programmatore) che quei 240 
mb fossero caricati in ram, salvo trasferirli in paging quando la memoria 
libera iniziasse a scarseggiare (l'ultima cosa viene impedita dall'opzione 1 
di DisablePagingExecutive).
In termini di prestazioni credo che la differenza sia insignificante (non ci 
vuol molto a trasferire 240 mb dall'ssd alla ram) ma ero curioso di sapere 
la ragione del comportamento di default di windows (immagino ne esista una, 
di ragioni).
 
Ciao,
Francesco 
 

 Francesco
 
Non so se questo tipi do politica sia anche in win7 e win8 (ma visto gli 
effetti direi di si)  ma anni fa (ai tempi di xp) lessi qualcosa su questo
il kernel divide il suo codice in paged pool e non paged pool
Un driver (il quale gira un kernel mode) al caricamento richiede pagine 
pool e non pool per allocare dati indipendentemente dalla quantità di ram
Ecco perchè anche se la ram libera è alta codice o dati mai usati stanno 
nella area di swap
Questo è ben diverso ad esempio nel kernel linux dove fino a quando non 
si raggiunge un determinato picco di memoria usata l' area di swap non è 
mai usata
Puoi anche tentare di cambiare questo comportamento ma credo che non sia 
consigliato
Per approfondire
http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx
 
 
 
 
 
 
 
 
 
 

 nella area di swap
 
Ah, ok.
Quindi quella "memoria di kernel di paging" è memoria che è stata allocata 
(perché un driver ha chiesto al sistema operativo di riservarla) ma non 
utilizzata.
In pratica si svolge un dialogo di questo tipo:
Driver: -"OS, riservami 240 mb di memoria. Ora non la uso, ma devo averla 
disponibile se c'è bisogno, altrimenti vado in crash. Non deve essere per 
forza ram, va bene anche nella memoria virtuale"
OS: -"D'accordo. Visto che non la usi, te li riservo nello swap: anche se ho 
della ram libera, è inutile 'bloccarla' inutilmente. Se poi la usi, passo 
tutto in ram"
Driver: -"perfetto, grazie e buona giornata".
 
Beh, se è così ha del senso.
 
Grazie,
Francesco
 
 
 
 
 
 
 


Sostanzialmente dovrebbe essere cosi