有一台機器,具有非常快速的 RAID 陣列和快速的互聯網連接。但是,它只有 8GB 的內存,已經用完了真的當上傳速度加快時,速度很快。
有什麼想法可以停用或限制快取嗎?
(我嘗試從裝置管理員停用寫入快取。但這只是寫入緩存,而且沒有幫助。)
答案1
快取的重點在於它使用沒用過ram,並在應用程式請求更多時立即放棄它。因此,您不想限制其大小,因為這樣做只會完全浪費可用的記憶體。
答案2
您必須呼叫系統 API SetSystemFileCacheSize()
文件如下:http://msdn.microsoft.com/en-us/library/aa965240.aspx
一些 GUI 程式允許這樣做:http://technet.microsoft.com/en-us/sysinternals/bb897561
但您可能更喜歡 CLI,在系統啟動時自動運行它:http://www.uwe-sieber.de/ntcacheset_e.html(看頁中間,它適用於2k8)
或只是寫一個呼叫 SetSystemFileCacheSize() 的 powershell 腳本
請注意,強烈建議不要停用生產用途的快取。
通常將虛擬機器的快取大小限制為較小的值,而不是停用它。
答案3
我們公司的Windows Server 2008 R2上也曾經遇到這個問題。在我們的例子中,機器完全卡住了。這似乎是此 Windows 伺服器版本上的一個錯誤,因為在相同的情況下,無論是在 VirtualBox 中運行的小得多的 Windows 7 機器上還是在 Linux 下,它都沒有發生。
您可以使用 API 將快取設為一定限制,正如其他人已經發布的那樣,但是您可以找到直接使用它的應用程序,例如設定係統檔案快取大小.exe或者NT 快取設定器。
缺點是每次重新啟動後都需要設定快取。您也可以一次性刷新整個快取。
我們將具有 14 GB RAM 的 VM 上的檔案快取設定為 4 GB,並且它可以運作。刷新效果也很好,您可以直接在任務管理器中看到它。
命令列範例:
顯示目前 Windows 設定:
SetSystemFileCacheSize.exe
顯示幫助:
SetSystemFileCacheSize.exe /?
將最小大小設為 8 MB,最大大小設定為 128 MB:
SetSystemFileCacheSize.exe 8 128
停用最小大小並將最大大小設為 128 MB:
SetSystemFileCacheSize.exe off 128
禁用最小和最大尺寸:
SetSystemFileCacheSize.exe off off
刷新檔案緩存:
SetSystemFileCacheSize.exe flush
注意:工具必須以管理員權限啟動。
答案4
若要限製檔案緩存,請確保未啟用檔案共享效能的最大選項,並且您可以透過選擇最小化記憶體使用或平衡來指定最小記憶體檔案快取量。
若要檢查目前配置,請前往:開始 -> 控制台 -> 網路連線 -> 本機連線 -> 在常規標籤上,屬性 -> 選擇檔案和印表機 -> 屬性。任何其他選項。