我有一台安装了8GB内存的Windows 2008 x64服务器。
任务pipe理器和资源监视器都坚持认为7.5GB的RAM正在使用中。 但是,进程(内存专用字节)下的内存列表不会加起来。 我确实有所有用户的显示进程检查,并添加我提出了约3.5GB的RAM的数字。
我还查看了SysInternals Process Explorer的最新版本。 私人字节或工作集合中使用的RAM总数不超过3.5GB。
这是怎么回事?
=====
更新 :我退回了服务器,看看内存利用率会发生什么。 引导和正常的操作开始后,坐在3GB的RAM使用。 18个小时之后,它的备份速度达到了6.8GB,而没有指出附加的3.5GB内存在哪里。
以下是资源监视器和任务pipe理器截屏的链接:
资源监视器
任务pipe理器
更新2 :那么,我相信我find了问题。 当我从我的sql服务器上分离出一个较大的数据库时,显示为“正在使用中”的ram数量急剧下降。 内存专用字节计数几乎没有移动。 所以我猜测,SQL服务器有一些分配内存的方式,它并不真正显示在任何监视器中。
我进一步创build了一个新的数据库文件,然后从我分离的那个数据库中转移了所有的数据。 即使它具有相同的数据,并且通过相同的事务处理,正在使用的内存也一直很低。 也许在DB有一些腐败? 我会把它留给DB神,去寻找另一个“问题”;)
我今天发现了这篇文章,详细讨论了locking页面,AWE和64位系统。 http://blogs.msdn.com/psssql/archive/2009/09/11/fun-with-locked-pages-awe-task-manager-and-the-working-set.aspx
其中一个要点(#3)是标题“为什么任务pipe理器不显示为SQL Server分配的全部内存”
这是一个非常好的解释。 最后,这个不显示的原因是,sql server已经“locking”了内存中的这些页面。 locking页面不是工作集的一部分,因此它们不会出现在任务pipe理器中,甚至不会显示为应用程序内存集的一部分。
如果你select * from sys.dm_os_process_memory运行select * from sys.dm_os_process_memory你可以看到locked_page_allocations_kb字段,它会告诉你在这些页面中有多lessRAM的sql服务器已经分配了。
任务pipe理器在CPU栏/图下方有一个内存条/graphics。 这是应用程序使用的数量。
这个图表显示的金额和显示为“可用”的金额的总和应该等于您的8GB总金额。
“可用”超过“免费”,因为“caching”包含在“可用”中。
我有类似的问题。 遇到这个technet文章 – 907877.尝试使用SQL命令DBCC MEMORYSTATUS并检查是否AWE分配条目等于您的内存不足。
你很可能与你的显卡共享RAM。 检查您的BIOS设置。
那么不是一个线索。 这里有一些build议是testing内存模块。
你正在运行什么应用程序? 可能是你的运行开发应用程序或第三方软件包有内存泄漏?