Em primeiro lugar, você ainda precisa do /3GB
sinalizador de acordo com o KB .
Eu tenho alguns servidores Win2K3 de 32 bits executando um aplicativo que falha agora e, aparentemente, devido à fragmentação de heap. (Bytes virtuais de processo crescem, bytes privados não) Eu não tenho acesso ao código-fonte ou processo de compilação deste aplicativo.
Eu modifiquei o arquivo boot.ini em um desses servidores para incluir /userva=2560
, a meio caminho entre o modo normal de operação e a opção /3GB
. Normalmente leva semanas para chegar ao ponto de falha, mas eu gostaria de ver imediatamente se isso realmente teve algum efeito.
Pelo que entendi, essa opção limita o kernel ao espaço de endereçamento restante (1536MB em vez de 2048), mas não
Como posso determinar se o O / S está permitindo que um aplicativo específico, em execução na produção, acesse o espaço de endereço acima de 2 GB? Além disso, qual é a melhor maneira de monitorar o sistema para garantir que o kernel não fique com falta de espaço de endereço e, mais geralmente, como devo encontrar o valor ideal para essa configuração?
Em primeiro lugar, você ainda precisa do /3GB
sinalizador de acordo com o KB .
Memória do kernel (paginada / não paginada / cache) - você pode visualizar isso com o Depurador do Windows. Arquivo > Depuração do Kernel > Guia local. "! vm" mostra a memória do kernel. Valores importantes são o uso do conjunto e o máximo:
Uso NonPagedPool: 10300 (41200 Kb)
NonPagedPool Max: 65281 (261124 Kb)
PagedPool Uso: 14531 (58124 Kb)
PagedPool Máximo: 134144 (536576 Kb)
Você também pode verificar o cabeçalho da imagem PE do programa usando o PE Explorer. O campo Characteristics determina se o programa pode acessar memória acima de 2 GB. Se isso não estiver definido, / 3GB é um desperdício.
PEExplorer-