我有一个64位Windows 2003服务器,有48个CPU核和128 48的RAM运行一个应用程序(SQL2008AnalysisServices)。SSAS目前正在使用大约50 is的内存。
SSAS在很大程度上依赖于Windows来保存经常使用的数据(例如,请参阅这篇文章 )。在我的服务器上,windows文件缓存通常在10-15GB的范围内,但偶尔会突然下降到5-6GB (Memory\System Cache Resident Bytes)。当发生这种情况时,所有SSAS页面读取都必须转到磁盘,并且查询开始超时,直到文件缓存重新填充。
我有第二个服务器(只有24个核心,但在其他方面接近相同),它没有表现出相同的症状,甚至运行完全相同的SSAS实例、相同的查询和相同的负载(这是一个负载平衡的环境)。
我问过一个专注于SSAS的问题 on dba.stackexchange.com,但是有几个关于Windows行为的问题:
有一次,我们确实改变了服务器上的网络优化设置,以“最大限度地提高文件共享的数据吞吐量”,以匹配另一个框,但这似乎并没有产生很大的影响。
编辑:增加赏金。如果我们不能回答“为什么”,那么也许只是一种更好地理解哪些进程目前正在使用缓存,或者在缓存中有哪些文件,或者某种可能导致我们朝着正确方向前进的方法。
发布于 2011-12-08 18:01:09
我通常不只是张贴一个链接,但由于你还没有得到任何帮助,请查看这。这是一篇关于缓存管理器如何工作的非常详细的文章。
进程每秒钟运行一次,以评估可以写入磁盘并从缓存中刷新的内容。您特别询问了是否有一种方法可以查看哪些进程正在使用缓存,或者缓存中有哪些文件。我的理解是,所有磁盘读和写都是缓存的,所以所有读或写到磁盘的进程都将“使用”缓存。我还没有找到任何办法偷看里面的内容。
系统文件缓存中的文件数据按操作系统确定的间隔写入磁盘,并释放该文件数据以前使用的内存-这称为刷新缓存。延迟将数据写入文件并将其保存在缓存中直到缓存刷新的策略称为延迟写入,由缓存管理器在确定的时间间隔内触发。文件数据块被刷新的时间部分基于在缓存中存储的时间和上次在读取操作中访问数据以来的时间。这将确保经常读取的文件数据在系统文件缓存中保持可访问的最长时间。详细信息
在Server 2003中,如果缓存管理器不尝试将修改后的文件数据写回文件,而空闲内存变得稀缺,则内存管理器的修改后的写入线程将未写入的数据写入文件。系统不依赖内存管理器将文件数据刷新回磁盘。相反,缓存管理器试图通过使用“延迟写入”过程,及时将数据写回非易失性存储。当程序修改文件数据时,缓存管理器会跟踪修改了多少数据或“脏”。缓存管理器每秒钟将缓存修改后的数据写回磁盘。详细信息
发布于 2011-12-08 19:19:16
LimitSystemFileCacheSizeMB设置的值是多少?
分析服务操作指南
http://download.microsoft.com/download/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SSASOpsGuide2008R2.docx
RAMMap是一个有趣的实用工具,它将为您提供关于服务器内存在哪里使用的详细信息。特别是,您可能不知道在StandBy缓存上使用的内存。
https://serverfault.com/questions/338227
复制相似问题