Obtuve la siguiente definición de Bob Dorr sobre lo que controla la memoria máxima del servidor en SQL Server 2012. También puede leer Libros en línea para obtener más detalles.
La memoria máxima del servidor controla la asignación de memoria del servidor SQL, incluida la agrupación de almacenamiento intermedio, la memoria de compilación, todas las memorias caché, las concesiones de memoria qe, la memoria del administrador de bloqueos y la memoria CLR (básicamente cualquier "empleado" como se encuentra en dm_os_memory_clerks). La memoria para las pilas de subprocesos, los montones de memoria, los proveedores de servidores vinculados que no sean SQL Server o cualquier memoria asignada por una DLL "no SQL Server" no está controlada por la memoria máxima del servidor.
La memoria asignada a la pila de subprocesos, la DLL de terceros, el proveedor del servidor vinculado que no sea Microsoft (como MySQL.PostgreSQL, etc.) o cualquier DLL cargada en el espacio de direcciones de SQL Server que no sea SQL Server se asigna fuera de la memoria máxima del servidor. La operación de copia de seguridad de IIRC en SQL Server 2012 también tiene memoria asignada fuera del grupo de búferes.
¿Está utilizando un servidor vinculado para consultar otros RDBMS? Cualquier otro software instalado en la misma máquina Windows. ¿Puedes publicar en alguna ubicación compartida el resultado de las siguientes consultas?
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
¿También puede cargar la DBCC MMEMORYSTATUS
salida completa en alguna ubicación compartida y publicar el enlace aquí? Esto ayudaría a comprender qué componente está tomando memoria
Editar: según la salida dbcc memorystatus, puedo ver 2 nodos NUMA y la memoria utilizada por cada nodo es aprox.
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
Nuevamente, si ve el Administrador de memoria en la salida de estado de memoria, su
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
La máquina virtual comprometida es en realidad la memoria virtual comprometida por SQL Server y, como esta memoria está comprometida, lo ha hecho physical memory backing it
. Esto nuevamente, lo que me hace pensar que SQL Server está usando 65 G como se establece en la memoria máxima del servidor
Esto es lo que es la memoria máxima del servidor. Entonces, la memoria está bien distribuida entre ambos nodos, ¿también puede agregar la salida de la consulta a continuación para verificar? Por favor agregue captura de pantalla
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?