执行该命令时,我得到了以下负的 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