当执行ps命令时,我得到了以下负面的PM(进程正在使用的可分页内存量,以千字节为单位)。 当价值观为负时,这意味着什么?
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使用大量内存和页面,所以这种types的行为在SQL Server中很常见。
编辑:这也可能是因为Int32的大小…在这种情况下,使用提供的64位属性:
ps sqlserver | select WorkingSet64
要么
ps sqlserver | select PagedMemorySize64
大多数内存属性都有相应的64位版本。