Windows
當 ps 的 PM(K) 為負值時,這意味著什麼?
執行命令時,我得到了以下負 PM(程序正在使用的可分頁記憶體量,以千字節為單位)值
ps
。當值為負時,這意味著什麼?PS H:\> ps sqlservr 處理 NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 5947 4145 -1218888 1537304 981 ...50.77 8344 sqlservr PS H:\> ps sqlservr 處理 NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 6060 4172 -1218876 1537316 981 ...52.08 8344 sqlservr PS H:\> ps sqlservr 處理 NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 6481 4258 -1218832 1537376 981 ...56.55 8344 sqlservr
負值可能是
Int32
? 但是,下面的語句顯示分頁記憶體是 4TB?這是不可能的。$m = [int32]::MaxValue ($m + ($m -1218832) + 2)/1024/1024 # returns 4094.83763122559 (GB)
如果頁面文件在過去的某個時間點增長,並且此後縮小,則可能會出現負值。SQL Server 使用大量記憶體和大量頁面,因此這種類型的行為對於 SQL Server 來說非常常見。
編輯:這也可能是因為 Int32 的大小……在這種情況下,使用提供的 64 位屬性:
ps sqlserver | select WorkingSet64
或者
ps sqlserver | select PagedMemorySize64
由於這個原因,大多數記憶體屬性都有相應的 64 位版本。