Bene, prima di entrare in una risposta più dettagliata. Nel tuo primo screenshot, il tuo Non-Paged Pool (un tipo di utilizzo della memoria del kernel) è a 1,3GB. Questo mi sembra insolitamente alto, specialmente per soli 30 minuti dopo l'avvio. Immagino che potrei vedere il Pool NP diventare così alto dopo un lungo periodo di utilizzo o con un programma che perde come un colabrodo. Per contrasto, il mio NP Pool è di solito tra i 100 e i 200 megabyte, e il mio pool impaginato potrebbe arrivare a 400 o 500 (e questo dopo aver fatto funzionare il mio sistema senza un riavvio per settimane).
Puoi abilitare alcune colonne aggiuntive in Task Manager cliccando con il tasto destro sulle intestazioni delle colonne e scegliendo seleziona colonne. Dovresti aggiungere Working Set (private)
, Working Set (shared)
, Commit
e NP Pool
. Farei una scansione di tutti i tuoi processi da tutti gli utenti, e vedere se qualcuno di loro ha un NP Pool più di circa 256KB. Se ne vedi qualcuno, specialmente qualcuno che è considerevolmente più alto, potrebbe essere la fonte del problema, o almeno parte di esso.
Il vostro working set totale, la quantità di memoria fisica in uso da un processo, è la combinazione dei working set (WS) privati e condivisi. Quello privato è solitamente più grande per la maggior parte dei processi, tuttavia ce ne possono essere alcuni che usano una quantità maggiore di WS condiviso. I due dovrebbero normalmente sommarsi al totale del WS. Commit è la quantità del tuo set di lavoro che è stato impegnato nel backing store (nella maggior parte dei casi, il file di pagina di Windows). Le applicazioni in background avranno spesso un Commit maggiore del WS, indicando che molto del loro pool di paginazione è stato scambiato fuori dalla memoria e nel vostro file di paginazione (che è abbastanza normale per le applicazioni desktop che sono state minimizzate e non utilizzate per un po’).
Il Non-Paged Pool è la memoria che non può, e non sarà mai, scambiata fuori dalla memoria fisica… che è effettivamente il tuo uso minimo permanente della memoria fisica. La memoria NP Pool spesso contiene codice di programma e sezioni critiche che devono essere nella memoria fisica per comportarsi correttamente o in modo sicuro, heaps speciali, ecc. Su 60 processi, se tutti hanno 256KB di memoria NP Pool, allora il tuo utilizzo minimo assoluto di memoria fisica sarebbe di circa 15.360KB. Nella maggior parte dei casi una o due applicazioni possono avere un pool NP di 256KB, mentre la maggior parte ne ha meno, spesso molto meno (o nessuno). È altamente improbabile che il sistema paghi l'intero set di processi in funzione, quindi non aspettatevi mai che l'uso della memoria sia così basso.
Infine, lo scopo di avere più memoria è quello di evitare di dover impaginare i dati da e verso lo spazio di memoria esteso (swap, page file) su un disco fisico. Il paging è un processo che comporta lo spostamento di blocchi di memoria fisica allocata, spingendone alcuni sul disco e portandone altri nella memoria fisica dal disco. Il paging è, per farla semplice, altamente indesiderabile. Non è “cattivo” di per sé, ma può essere un vero freno alle prestazioni quando si verifica troppo frequentemente. Lo scopo ultimo di aumentare la RAM fisica totale in un sistema è di permettere a più processi di tenere più del loro impegno nella memoria fisica (set di lavoro più grande). Il consumo di memoria non è un problema, e quando più processi in esecuzione utilizzano più memoria, le prestazioni totali del sistema e quelle dei processi attivi saranno solitamente più alte, poiché l'attività del disco fisico relativa agli accessi alla memoria (errori di pagina, in particolare) sarà inferiore.
Windows gestisce la memoria al posto vostro, e automaticamente esegue la pagina dei dati in e dalla memoria verso e dal file di pagina (swap) per voi. Se esegui un processo che ha bisogno di 9GB di memoria e il tuo sistema sta già usando 4GB (su 12GB), allora il sistema capirà automaticamente quali processi non hanno bisogno di un accesso immediato al loro intero set di lavoro, e pagherà alcuni o tutti i loro pool paginati in swap per liberare 1GB extra. Se il vostro grande processo alla fine ha bisogno di più memoria, windows ridurrà ulteriormente l'insieme di lavoro degli altri processi finché non avrà abbastanza spazio libero per allocare il nuovo blocco richiesto. Il vostro grande processo potrebbe alla fine consumare tutta la memoria disponibile eccetto il Pool NP e forse un minimo overhead aggiuntivo per i processi in esecuzione periodica che non stanno permettendo a Windows di liberare più del loro insieme di lavoro (cioè hanno errori di pagina pendenti che Windows altrimenti scambierebbe fuori dalla memoria fisica, ma poiché sono richiesti, non possono essere spostati).
Se un processo ha bisogno di più memoria di quella a cui può accedere (i processi a 32bit possono di solito accedere a 2Gb, e alcuni un po’ meno di 4Gb con tecniche avanzate, mentre i processi a 64bit possono di solito accedere a circa 48Gb di memoria, ciascuno), allora Windows a volte cercherà di virtualizzare la sua memoria con spazio di swap. Se un'applicazione a 32bit vuole usare il suo massimo consentito di 2Gb di spazio, ma solo 1.2Gb sono disponibili, windows riserverà l'intero 2Gb nel file di pagina, e sposterà i dati del processo dentro e fuori il file di pagina come necessario per supportare l'uso della memoria dell'applicazione. L'utilizzo totale della “memoria” in questo caso può sembrare essere maggiore della memoria fisica disponibile, quando si va per Impegno totale. Total Commit di solito raggiunge il massimo alla grande dimensione totale del file di pagina, che quando è gestita dal sistema, è di solito 2-3 volte la quantità di memoria fisica. Nel tuo caso, Total Commit sarebbe circa 24Gb, o 2x i tuoi 12Gb di memoria fisica (e questo è indicato nel tuo primo screenshot, dove c'è scritto: Commit (GB) 3 / 23).
Un ultimo punto. Hai detto nella tua risposta che avevi 16Gb di RAM, mentre Task Manager vede solo 12Gb di RAM. Una delle due cose qui. O il tuo sistema ha davvero solo 12Gb di RAM, o uno dei tuoi stick non si sta registrando correttamente. Se uno stick di RAM (sto assumendo 4 stick da 4Gb), potrebbe essere difettoso, potrebbe non essere posizionato del tutto correttamente nella tua scheda madre, o la tua scheda madre potrebbe avere un problema di rilevamento della memoria.
Per verificare se è quest'ultimo, dovreste prima aggiornare il BIOS della vostra scheda madre all'ultima versione. Ho avuto un problema simile… i miei sei stick di ram DDR3 Tripple-Channel (6x 2Gb) erano tutti buoni basati su test individuali di ciascuno… ma la mia scheda madre decideva casualmente di non contarne uno o due ogni tanto, lasciandomi spesso con soli 8Gb di ram. Un aggiornamento del BIOS ha risolto il problema, e ora ho un accesso affidabile a tutti i 12Gb della mia memoria.