Windows-Server-2008

如何監控大於 4GB 的 Windows 程序的工作集?

  • August 1, 2014

顯然,.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-Countercmdlet:

"\Process(*)\Working Set" | Get-Counter -computer <computer>
| ForEach {$_.CounterSamples} | ? {$_.cookedvalue -gt 4294967296} | ft -AutoSize

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