Eu pensei em postar um acompanhamento para os outros tentarem consolidar as informações em um único post (com base no que eu aprendi e nas outras informações já postadas).
PAE:
O PAE permitirá que um servidor Windows de 32 bits use ou tenha mais de 4 GB de RAM, com o máximo dependente da versão das janelas que você está executando (a Wikipedia tem uma boa referência aqui )
Uma coisa a ser observada é que, se você tiver o Data Execution Prevention (DEP) ou o NoExecution (NX) ativado, isso ativará o PAE sem ter que ativá-lo explicitamente no boot.ini.
Em resumo, o PAE não tem efeito sobre a quantidade de memória que um único processo de 32 bits pode acessar. Isso afeta apenas a quantidade total de janelas de memória que podem 'ver' e usar (para que você possa ter 2 processos cada usando 2 GB, com o Windows usando 2 GB em um sistema de 6 GB)
3 GB:
Em primeiro lugar, quando estou falando sobre a memória disponível para um único processo de 32 bits, estou me referindo aos processos espaço de endereço virtual . Para um processo de 32 bits em um sistema operacional Windows de 32 bits, isso é limitado a 4 GB.
Em um sistema sem a opção / 3GB, os 4GB de espaço de endereço virtual são divididos em 2GB / 2GB entre o processo em execução e o kernel do Windows.
Quando você ativa o comutador de 3 GB, a divisão no espaço de endereço virtual é alterada para 3 GB / 1 GB. Isso permite que o processo use mais memória, às custas da memória do kernel. Observe: o Windows só permitirá que um processo use mais 2 GB ou memória se o executável tiver sido compilado com o sinalizador IMAGEFILELARGEADDRESSAWARE definido.
Agora, como foi mencionado em outros posts, a penalidade de usar o switch de 3GB é que o kernel tem menos memória para trabalhar. E uma das principais vítimas da memória reduzida é o número de Entradas da Tabela de Páginas (PTEs) disponíveis. Uma tabela de páginas é a estrutura de dados usada pelo Gerenciador de Memória Virtual do Windows para armazenar o mapeamento entre endereços virtuais e endereços físicos na memória. Se você tiver PTEs livres insuficientes, o Windows poderá não alocar memória para um processo quando solicitado, mesmo que o processo ainda não tenha esgotado seu espaço de endereço.
A contagem livre de PTEs pode ser medida usando perfmon (\ Memória \ Entradas Livres de Tabela de Páginas do Sistema). Qualquer coisa abaixo de 5000 é considerado crítico pela Microsoft. Como exemplo, nos servidores mencionados no post original, sem o switch de 3GB e com o processo em execução, a contagem de PTE livre era de cerca de 160k. Depois de habilitar 3 GB, mas antes do início do processo, o Windows informava 3,5k de PTEs gratuitos (uma redução drástica). Esse número teria caído rapidamente se tivéssemos iniciado o processo.
A maneira de compensar essa mudança drástica é ativar o switch USERVA no boot.ini. Definindo USERVA = 2800, isso move a divisão de 3 GB / 1 GB na memória e "devolve" aproximadamente 250 MB de volta ao kernel para seu uso. Por exemplo, depois de definir USERVA = 2800 no boot.ini em nosso sistema, a contagem de PTEs livres agora fica em torno de 60k com o processo em execução (muito melhor do que os 3.5k que estávamos vendo).
Mais informações sobre a opção USERVA podem ser encontradas no artigo do Microsoft KB.
Vale ressaltar também que a habilitação do PAE também tem impacto na contagem gratuita de PTE. A opção PAE faz com que cada entrada PTE use o dobro do espaço de endereço virtual normal atribuído.
Espero que isso forneça um resumo conciso das informações para qualquer pessoa que esteja olhando para uma data posterior.
Felicidades Sam