Windows-Server-2008

Windows Server 2008 上缺少記憶體

  • November 30, 2012

我有一個安裝了 8GB RAM 的 Windows 2008 x64 伺服器。

任務管理器和資源監視器都堅持使用 7.5GB 的 RAM。但是,Processes (Memory Private Bytes) 下的記憶體列表沒有加起來。我確實檢查了所有使用者的顯示程序並手動添加了我想出的大約 3.5GB RAM 的數字。

我還查看了 SysInternals Process Explorer 的最新副本。而且,私有字節或工作集加起來都不會超過大約 3.5GB 的正在使用的 RAM。

這是怎麼回事?

=====

更新:我反彈了伺服器,看看記憶體使用率會發生什麼。啟動和正常操作開始後,它的 RAM 使用量為 3GB。18 小時後,它恢復到 6.8GB 的​​使用量,但沒有任何跡象表明額外的 3.5GB 左右的 RAM 被用於何處。

以下是資源監視器和任務管理器螢幕截圖的連結:

資源監視器

任務管理器

更新 2:好吧,我相信我找到了問題所在。當我從我的 sql 伺服器中分離出一個較大的數據庫時,顯示為“正在使用”的 ram 數量急劇下降。記憶體專用字節數幾乎沒有變化。所以我猜測 SQL 伺服器有某種分配記憶體的方式,它並沒有真正出現在任何監視器中。

我更進一步,創建了一個新的數據庫文件,然後從我分離的那個中傳輸了所有數據。即使它有相同的數據,也有相同的事務通過它,使用中的記憶體仍然很低。也許數據庫中有一些損壞?我會把它留給數據庫之神,然後去尋找另一個“問題”;)

我今天發現這篇文章詳細討論了鎖定頁面、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_pa​​ge_allocations_kb 欄位,它將告訴您在這些頁面中分配了多少RAM sql server。

引用自:https://serverfault.com/questions/76902