Valor negativo da memória do Get-Process do Powershell

8

Eu estava fazendo algumas verificações com o cmdlet Powershell Get-Process e obtive alguns valores estranhos sobre alguns processos. Testei em um servidor com uma Instância do SQL Server executando e consumindo 3 GB + RAM, conforme relatado pelo Monitor de Recursos, e ao executar o Get-Process, obtive valores negativos para WorkingSet no processo do servidor SQL, outro processo consumia mais de 2 GB de PrivateMemorySize e obteve o mesmo valor negativo no PM.

Abaixo estão as capturas de tela dos resultados.

Monitor de recursos O sistema operacional está em português, desculpe.

Powershell:

insira a descrição da imagem aqui Verifique o sqlservr e o último scvhost ...

Felizmente, meu script usa WMI (classe Win32_Process) para obter as informações dos processos, os valores corretos e tudo corresponde.

Isso é um bug? Talvez com grandes valores? Estou usando o Powershell v3.

esserafael
fonte

Respostas:

11

Este é um servidor x64? Nesse caso, é possível que este post do blog explique seu problema. Aparentemente, isso tem a ver com a maneira como o processo get lê a memória dos sistemas x64:

O motivo pelo qual o pôster estava vendo números negativos é bastante simples: a propriedade WS é alias para WorkingSet, mas WorkingSet é um valor de 32 bits. No caso do pôster, o tamanho do conjunto de trabalho excedeu o valor de 32 bits, resultando na exibição de um número negativo.

A solução de acordo com o blog é, em última análise, impor a formatação do resultado da consulta:

$process = “*SQL"*” GPS $process | ft name, workingset64 –auto

Kate
fonte
Obrigado, eu suspeitava que tivesse algo com valores de tamanhos e assim por diante. Além disso, só consigo os resultados corretos ao executar o comando localmente no servidor; se executar remotamente com o parâmetro -ComputerName, obterei os mesmos resultados negativos. Rodar com o PSSession funciona bem.
Esserafael
0

Selecionar WorkingSet64 em vez de WorkingSet fez o truque para mim sem formatar.

Jamie
fonte