Perdita di memoria a 64 bit di Windows Server 2008 R2


12

Sto riscontrando problemi in uno dei server dell'ufficio. È un server Windows 2008 R2 virtualizzato con 6 GB di memoria RAM. Ha solo Microsoft SQL Server (memoria assegnata massima = 3 GB) e solo un software che non consuma più di 1 GB di RAM. Tuttavia, la memoria RAM del server è quasi piena e, osservando i processi in Task Manager, non sembrano riassumere questo. Ho installato RamMap, ma non riesco a interpretarlo molto facilmente, c'è qualche "alto valore" che puoi identificare?

inserisci qui la descrizione dell'immagine


1
L'ordinamento per "Totale" o "Attivo" avrebbe reso la risposta abbastanza ovvia.
Dmitry Grigoryev il

Risposte:


18

Bene, vedo ~ 3,2 gigabyte di memoria Driver Locked, che si distingue immediatamente come sospetta.

Questo tipo di memoria, memoria bloccata dal driver, è la memoria che è stata bloccata da un driver in modalità kernel. In genere allo scopo di trasferire piccole quantità di dati, di solito per brevi periodi di tempo.

Quindi, se hai una grande fetta di memoria bloccata dal driver, per lungo tempo, di solito è un segno che qualcosa non va.

Ho intenzione di fare un'ipotesi qui e indovinare che da quando hai menzionato che è un server virtualizzato, che è il driver del palloncino VMware che lo sta facendo. Non ho abbastanza dati per essere in grado di dirti perché lo sta facendo, ma ci sono molti casi e VMware supportano KB, come questo , che parlano specificamente del driver del palloncino che conserva erroneamente grandi quantità di memoria quando non dovrebbe essere.

È inoltre necessario considerare la possibilità che il driver del fumetto si stia comportando come previsto e che sta tentando di rendere la memoria del server pagina esaurita perché deve disperatamente fornire memoria a un'altra macchina virtuale sullo stesso host.

C'è ancora un'altra possibilità che non sia affatto un driver di memoria dinamica hypervisor, ma solo un driver di dispositivo non autorizzato.

I driver di solito allocano la memoria "taggata" con un tag di 3 o 4 caratteri che fornisce un suggerimento su quale driver è stato responsabile per l'allocazione.
poolmon.exe, parte di Windows SDK / DDK, può aiutare a diagnosticare.

Come ho detto, indovina, ma è il massimo che posso fare con i dati che ho.


16

Bene, ho tutte le versioni immaginabili di SQL Server sul posto, dal 2005 al 2016, e non ho visto perdite di memoria enormi quanto il 100% dei mem effettivamente utilizzati. Verifica se hai la memoria dinamica abilitata per la tua macchina virtuale .

Driver Lockedè una figura su cui dovresti concentrarti. Nel tuo caso specifico, Driver Lockedè probabilmente uno dei driver Hyper-V, che ha bloccato tutta la memoria inutilizzata (assegnata alla VM, ma non utilizzata da essa atm), quindi può "darla" a qualche altra VM configurata con la memoria dinamica, o anche a sistema operativo host, a seconda di quale ne abbia bisogno al momento. Puoi testarlo aprendo alcuni file di grandi dimensioni o un'app ad alta intensità di memoria all'interno di quella macchina virtuale: la memoria DriverLocked dovrebbe andare giù con l'aumento di altre metriche. IMHO questo non dovrebbe essere motivo di preoccupazione se non è stato effettuato il provisioning eccessivo della memoria in tutte le macchine virtuali.


5
Ti ho battuto per circa 8 secondi ... benvenuto in Server Fault. :)
Ryan Ries,

In effetti l'hai fatto :-)
Kitet,
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.