Utilizzo della memoria della macchina virtuale non visualizzato in TaskManager


28

C'è qualcosa nella gestione della memoria di Windows ed è una relazione con TaskManager che non capisco e spero che qualcuno mi possa illuminare.

Se sto eseguendo una macchina virtuale (non importa se si tratta di Virtual PC 2007, Virtual Server 2005 o VirtualBox poiché agiscono allo stesso modo) e visualizzo TaskManager, nella scheda dei processi posso vedere alcune voci per la VM ma il i valori di memoria sono abbastanza piccoli (circa 30 MB). Ovviamente non include la memoria effettivamente consumata dalla VM stessa. Nessuna delle varie colonne relative alla memoria che è possibile rendere visibili sembra funzionare diversamente. L'utilizzo della memoria nella scheda Prestazioni sembra essere corretto per l'utilizzo totale della memoria, inclusa la macchina virtuale.

Quindi la mia domanda è: perché l'utilizzo della memoria della VM (che sarà di 100 MB) non viene visualizzato nella scheda Processi?

Risposte:


30

VirtualPC, HyperV e probabilmente prodotti simili usano qualcosa chiamato memoria bloccata dal driver, che non è visibile in Process Explorer, Task Manager, ecc. RAMMap mostrerà la memoria bloccata dal driver utilizzata da un processo.


1
Per la cronaca, RAMMap è solo Vista o superiore.
Tim Abell,

1
RAMMap non mostrava memoria bloccata per un processo, mostrava un totale di memoria bloccata richiesta
NeDark

Solo per sottolineare per gli altri, non ha detto che il processo ha bloccato la memoria. Ha detto che il conducente ha bloccato la memoria. È come funziona la memoria dinamica. Se non ti piace o pensi che stia scherzando con la tua app, puoi semplicemente configurare la VM per la memoria statica anziché dinamica. Ho visto alcune app Java avere problemi quando si utilizza la memoria dinamica in una macchina virtuale, impostandole su statico risolto il problema tecnico .
Giovanni C

Quale processo effettivamente alloca quella memoria? Ho provato VMMap di SysInternals e quando scegli il VBoxHeadless.exeprocesso giusto (è una foglia sul ramo dell'albero del processo, cioè non ha nessun altro figlio, puoi usare ad esempio Process Explorer per trovarlo), quella memoria "persa" appare sotto sia Byte privati e di lavoro Set di quel processo (anche se Process Explorer sta mostrando molto meno per entrambi i valori). Quindi sono un po 'confuso perché mostrano valori diversi ma VMMap sembra mostrare il numero reale .
Dawid Ferenczy Rogožan,

6

Qualsiasi sistema di virtualizzazione ospitato come quelli che hai elencato includerà un driver di dispositivo che gira nel kernel del sistema operativo host. Ciò è necessario poiché i programmi in modalità utente non possono impartire le istruzioni necessarie per creare una macchina virtuale.

Il motivo per cui non si vede la memoria in Task Manager è che si sta cercando memoria per i programmi in modalità utente associati alle macchine virtuali e non per il driver di dispositivo in modalità kernel che ha effettivamente allocato la memoria per le macchine virtuali.


Quale processo effettivamente alloca quella memoria? Ho provato VMMap di SysInternals e quando scegli il VBoxHeadless.exeprocesso giusto (è una foglia sul ramo dell'albero del processo, cioè non ha nessun altro figlio, puoi usare ad esempio Process Explorer per trovarlo), quella memoria "persa" appare sotto sia Byte privati e di lavoro Set di quel processo (anche se Process Explorer sta mostrando molto meno per entrambi i valori). Quindi sono un po 'confuso perché mostrano valori diversi ma VMMap sembra mostrare il numero reale .
Dawid Ferenczy Rogožan,

5

Per visualizzare la quantità di memoria utilizzata da una VM, è necessario assicurarsi che la colonna Working Set sia visibile nel Task Manager. Spesso è visibile solo il set privato.

Per abilitare questa colonna:

1) Avvia Task Manager

2) Vai alla scheda Processi

3) Visualizza> Seleziona colonne

4) Assicurarsi che "Memory - Working Set" sia selezionato

Ad esempio, il set privato della VM che ho in esecuzione al momento è 43mb, mentre il working set è 2.3Gb


1
Qual è la quantità totale di memoria utilizzata dall'applicazione? Set di lavoro + set privato o solo set di lavoro?
zendar,

2
Forse è diverso nelle diverse versioni di Windows, ma in Windows 7 non è quello che vedo. I numeri "Working Set" sono più grandi dei numeri "Private Working Set", ma non abbastanza remotamente per tenere conto della memoria della VM. Ho provato tutte le colonne relative alla memoria e nessuna di esse lo fa. Questo è sia con Windows Virtual PC che con VirtualBox. Quale versione di Windows e quale host VM stai utilizzando?
Scott Bussinger,

Sfortunatamente, non esiste un unico numero che indica "quanta memoria" sta utilizzando un processo, poiché si verificano complicazioni come la memoria condivisa, la memoria mappata sui file, la memoria paginata e alcune altre. Ecco una buona spiegazione di alcuni concetti: stackoverflow.com/questions/1984186/...
tylerl

Non penso che il Working Set ti stia dicendo qualcosa di utile in questo caso. All'interno della VM, sta segnalando che utilizza circa 6 GB di memoria mentre i processi di VirtualBox non consumano più di 100 MB nei loro working set .
Dawid Ferenczy Rogožan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.