Not*_*tMe 7 windows-server-2008 memory sql-server
我有一个安装了 8GB RAM 的 Windows 2008 x64 服务器。
任务管理器和资源监视器都坚持使用 7.5GB 的 RAM。但是,Processes (Memory Private Bytes) 下的内存列表并没有加起来。我确实检查了所有用户的 Show Processes 并手动添加了我想出的大约 3.5GB RAM 的数字。
我还查看了 SysInternals Process Explorer 的最新副本。并且私有字节或工作集加起来都不会超过大约 3.5GB 的正在使用的 RAM。
这是怎么回事?
======
更新:我重新启动服务器以查看内存利用率会发生什么。启动和常规操作开始后,它的 RAM 使用量为 3GB。18 小时后,它恢复到 6.8GB 的使用量,但没有迹象表明额外的 3.5GB 左右的 RAM 正在使用何处。
以下是资源监视器和任务管理器屏幕截图的链接:
更新 2:好吧,我相信我找到了问题所在。当我从我的 sql server 中分离一个较大的数据库时,显示为“正在使用”的 ram 数量急剧下降。Memory Private Bytes 计数几乎没有移动。所以我猜测 SQL Server 有某种分配内存的方法,它不会真正出现在任何监视器中。
我进一步创建了一个新的数据库文件,然后从我分离的那个文件中传输了所有数据。即使它有相同的数据,并且有相同的事务通过它,使用的内存仍然很低。也许数据库中有一些损坏?我将把它留给 DB 大神,然后去寻找另一个“问题”;)
我今天发现这篇文章详细讨论了锁定页面、AWE 和 64 位系统。 http://blogs.msdn.com/psssql/archive/2009/09/11/fun-with-locked-pages-awe-task-manager-and-the-working-set.aspx
要点之一(#3)是标题“为什么任务管理器没有显示为 SQL Server 分配的所有内存”
这是一个非常好的解释。最终没有出现的原因是 sql server 已经“锁定”了内存中的这些页面。锁定页面不是工作集的一部分,因此它们不会出现在任务管理器中,甚至不会作为应用程序内存集的一部分出现。
如果你运行select * from sys.dm_os_process_memory你可以看到locked_page_allocations_kb 字段,它会告诉你sql server 在这些页面中分配了多少内存。
| 归档时间: |
|
| 查看次数: |
9368 次 |
| 最近记录: |