O que significa quando PM (K) de ps obtém valores negativos?

0

Recebi os seguintes valores de PM negativos (A quantidade de memória paginável que o processo está usando, em kilobytes) quando executar o comando ps . O que significa quando os valores são negativos?

PS H:\> ps sqlservr

Handles  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

Handles  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

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   6481    4258 -1218832    1537376   981 ...56.55   8344 sqlservr
    
por Flou 31.08.2015 / 18:14

1 resposta

0

O campo PM é um número de 32 bits e o valor vem de uma chamada de sistema de 32 bits. O maior número que pode caber em um campo de 32 bits é de 4 GB.

Parece que a memória paginada que o sqlservr está usando é maior que 4 GB.

Mas isso não importa, porque os objetos Process também contêm propriedades de 64 bits. Você pode apenas usá-los em vez disso. Para obter a memória paginada, faça o seguinte:

(ps sqlservr).PagedMemorySize64

Para obter o valor em KB (como o campo "PM (K)"), faça isso:

(ps sqlservr).PagedMemorySize64 / 1kb
    
por 01.09.2015 / 04:07