Windows-Server-2008
如何監控大於 4GB 的 Windows 程序的工作集?
顯然,.NET 框架存在一個錯誤,該錯誤會阻止準確確定大於 2GB 的工作集值。在 2 到 4GB 之間,可以應用一些 xor-ing 計算來獲得值,但是沒有辦法獲得大於 4GB 的工作集值(使用 .Net 或 WMI)
當工作集大於 4GB 時,可以使用什麼方法(最好是 PowerShell 腳本)來獲得對程序工作集的準確測量?
(一些細節可以在這個 StackOverflow 問題中找到)
這是用於監視特定過程:
"\Process(<process name>)\Working Set" | get-counter -computer <computer>
輸出以字節為單位,但您可以在以下命令中將其轉換為 GB:
"\Process(<process name>)\Working Set" | get-counter -computer <computer> | ForEach {$_.CounterSamples} | ForEach {[math]::round($_.cookedvalue/1GB,2)}
編輯: 閱讀 SO 文章,我看到您正在嘗試獲取超過 4 GB 的任何程序,而不將特定程序傳遞給腳本。下面是執行此操作的腳本,這裡是Scripting Guy 部落格文章的連結,該文章解釋瞭如何使用
Get-Counter
cmdlet:"\Process(*)\Working Set" | Get-Counter -computer <computer> | ForEach {$_.CounterSamples} | ? {$_.cookedvalue -gt 4294967296} | ft -AutoSize