psh*_*e73 5 sql-server memory sql-server-2008-r2 vmware windows-server
我以前从未见过这种情况,尽管这可能很常见。我正在查看虚拟化 (VMWare 5.5) SQL Server(Windows 2008 R2 上的 2008R2)。我看到的是,在任务管理器 * 中,sqlserver.exe
使用了大约 163 MB 的 RAM,如果我使用procexp,则相同的服务显示使用的 RAM 不到 500 MB。
VM 有 32GB 的 RAM,任务管理器显示正在使用该 RAM 的 31.7GB。VMWare Perfmon 计数器似乎没有指示任何膨胀(也许我读错了一些东西)。
想法/指导表示赞赏。我正在尝试调整新 SQL VM 的大小。此时,我还没有获得对 vSphere 或 vCenter 数据库的访问权限。
* 使用任务管理器是因为我正在查看整体内存利用率,而不仅仅是 SQL Server。一位性能敏感的管理员警告我要让我的脚步保持非常轻松。
我看到的是,在任务管理器中,sqlserver.exe 使用了大约 163 Mb 的 RAM,如果我使用 procexp,相同的服务显示使用了不到 500 MB 的 RAM。
您永远不应该查看任务管理器来检查 SQL Server 内存利用率。它永远不会向您显示正确的结果。如果您使用的是 SQL Server 2008 及更高版本,您应该使用 DMV sys.dm_os_process_memory来检查 SQL Server 内存利用率。
select
(physical_memory_in_use_kb/1024) as PhyMemory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024 ) as Locked_pages_used_Sqlserver_MB,
(virtual_address_space_committed_kb/1024 ) as Total_MemoryUsed_in_MB,
process_physical_memory_low,
process_virtual_memory_low
from sys. dm_os_process_memory
Run Code Online (Sandbox Code Playgroud)
笔记:
PhyMemory_usedby_Sqlserver_MB
是提交的内存,由物理 RAM 支持。
Total_MemoryUsed_in_MB
是SQL Server 使用的总内存(RAM 和页面文件)
您犯了一个错误,这可能是许多“新手”在提及 SQL Server 使用的内存时所犯的错误。如果运行 SQL Server 服务的帐户存在内存特权 (LPIM) 中的锁定页面,则它永远不会在任务管理器中显示正确的内存利用率。这是因为任务管理器只显示Process Private Bytes
通过Virtual_alloc 函数分配的内存,它是可分页的。现在,如果 SQL Server 服务帐户具有 LPIM,则大部分内存分配将由AWE API完成。通过 AWE API 分配的内存不可分页,因此不会显示在任务管理器中,最终会显示不同(不正确)的值。
进一步阅读:
锁定页面、AWE、任务管理器和工作集的乐趣……(CSS SQL Server 工程师)
归档时间: |
|
查看次数: |
200 次 |
最近记录: |