当 ps 的 PM(K) 取负值时意味着什么?

当 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

答案1

PM 字段是一个 32 位数字,其中的值来自 32 位系统调用。32 位字段中可以容纳的最大数字是 4GB。

看起来 sqlservr 使用的分页内存大于 4GB。

但这并不重要,因为事实证明 Process 对象也包含 64 位属性。您可以直接使用它们。要获取分页内存,请执行以下操作:

(ps sqlservr).PagedMemorySize64

要获取 KB 中的值(如“PM(K)”字段),请执行以下操作:

(ps sqlservr).PagedMemorySize64 / 1kb

相关内容