CacheSet v1.0

作者:Mark Russinovich

發佈日期: 2006 年 11 月 1 日



介紹

CacheSet 是一種小應用程式,讓您可以處理系統檔案快取的工作組參數。不像 CacheMan,CacheSet 在不需修改新的 Service Pack 版本的情況下,就能在 NT 所有版本上執行。除了提供您控制工作組大小的最小和最大功能之外,它還能夠讓您重新設定「快取」的工作組,強制它從最小的起始點長成必須的大小。同時,和 CacheMan 另一個不同的地方,就是以 CacheSet 產生的變更具有「快取」大小的立即效果。包括完整的原始程式碼。

使用 CacheSet 效能調整系統「快取」大小的方式,就是必須以 CacheMan 的方式變更內部變數。

附註:若要在 NT 4.0 Service Pack 4 或更新版本上使用 CacheSet,您必須擁有「增加配額」權限 (依預設系統管理員帳戶擁有此權限)。CacheSet 已經更新以啟用這個權限,因此可以在 SP4 上執行。

CacheSet Screenshot

回到頁首 回到頁首


安裝和使用

CacheSet 在所有 NT 發行的版本上皆能執行。啟動 CacheSet 之後,它呈現系統檔案快取的現行大小 (每秒更新兩次),也就是尖峰容量 (上次重新開機之後最大的),讓您設定新的最小和最大的工作組大小。

設定新的大小
只要輸入新的最小和最大值,再按一下 [套用] 按鈕即可。如果發生錯誤,則是因為以下其中一個情況:您輸入的最大值小於最小值、您輸入的最小值則是小於最小系統工作組大小,或是您輸入的最大值超過最大系統工作組大小。調整您輸入的數值,然後再試一次。

您可能會注意到,「快取」大小立即變更,然後快速進行縮小或成長。這是因為系統在每秒鐘會自動調整工作組大小。發行的「快取」頁面仍存在記憶體中,但是會由其他需要更多記憶體的程式快速將之移除以供使用。相同地,「快取」能夠在應用程式存取檔案系統資料時,輕易地重新取回頁面。

重新設定之前的數值
您可以隨時還原上一次按了 [重新設定] 按鈕啟動 CacheSet 的使用中「快取」工作組數值。

清除「快取」的工作組
您可以按一下 [清除] 按鈕,強制「快取」發行所有頁面。請注意,必要時「快取」可以再度成長,而且和清除「快取」不同 – 被指定的頁面只是為了讓其他程式可以使用,而且能夠被「快取」重新取得。

使用命令列介面
您可以在 CacheSet 的命令列上輸入最小和最大的工作組大小。CacheSet 將會無訊息式套用這些新的值。因此,您可以將 CacheSet 加入至您的「啟動」程式群組,使得你每次開機即自動設定「快取」的大小。

用法:CacheSet [minimum working set] [maximum working set]

回到頁首 回到頁首


如何運作

CacheSet 使用 NtQuerySystemInformation 呼叫以取得有關「快取」的設定資訊和 NtSetSystemInformation,來設定新的調整大小資訊。處理序的工作組資訊供 NT 記憶體管理員在有關應該指定到應用程式的實體記憶體頁面的數量之議題上,做為指南。正因為供做指南之用,可以產生像是記憶體管理員將工作組的大小變得比最大值還大,或是縮小得比最小值還小等情況。不過,設定是影響整體配置的因數,因此應用程式的回應相對顯得重要。在 CacheSet 的案例中,應用程式是檔案系統「快取」。

內部 NtSetSystemInformation 呼叫 MmAdjustWorkingSetSize 會造成應用程式的工作組成長或是調整大小。如果傳到 MmAdjustWorkingSetSize 的第三個參數是 1,則系統「快取」工作組就會調整,不然就是在目前處理序中調整 (系統資訊呼叫只會影響系統快取)。傳送 -1 的最小和最大值會造成MmAjustWorkingSetSize 執行一個工作組清除作業,從應用程式工作組發行所有頁面。

回到頁首 回到頁首


安全性漏洞

CacheSet 用在工作上有關介面最特別有趣的地方,就是它不需要特殊的權限來叫用。因此,您甚至於可以從「來賓」帳戶執行 CacheSet,而比較難說明的是它並非像安全性漏洞的型式,所以任個人都可以影響到系統快取調整大小原則。

更新:使用 NT 4.0 Service Pack 4 時 Microsoft 藉由要求帳戶變更「快取」的工作組以擁有「增加配額」權限的方法,已經關閉這個漏洞。根據預設,系統管理員使用者和群組帳戶皆擁有此權限。

下載 Regjump (40 KB)



回到頁首 回到頁首