Gerência de Memória RAM erência de Memória RAM em

Gerência de Memória RAM em Computadores com
Mais de 4GB
O sistema Windows x86 (32bits) não tem capacidade de reconhecer, fisicamente, mais
que 3,X GB de RAM, a não ser que seja ativado, manualmente, o PAE (Physical Addess
Extension). Contudo, esta ativação só poderá ser executada dependendo do tipo de
processador x86 e do sistema operacional Windows que estiver sendo utilizado. Sem
ativar o PAE, o sistema não sabe que há recurso a sua disposição
Endereçando além de 4GB co
com
m sistemas operacionais Windows de 32bits
Nos últimos anos uma série de sistemas foi colocada no mercado, principalmente
corporativo, com suporte para quantidades muito além de 4GB, como 8GB, 12GB, 16GB
ou mais megabytes de memória RAM. A pergunta é como
como,, uma vez que os processadores
são desenhados para endereçar apenas 32bits de endereço de memória.
O subsistema memória RAM é fundamental na arquitetura dos computadores, é lá onde
os softwares são executados, sendo normalmente carregados a partir dos dados
dado
armazenados nos discos rígidos. Para o processador acessar a determinado conjunto de
dados na memória, ele usa um barramento de endereçamento (Address Bus) que
identifica a posição de memória onde este conjunto de dados está armazenado.
Apesar de vermos equipamentos com muitos gibabytes de capacidade além dos 4GB, o
fato é que nos sistemas de 32bits o processador deveria apenas conhecer os endereços de
memória até 4GB, ou 2^32 bits. A seguir podemos entender então como grandes
quantidades de memória são endereçadas
endereçadas por processadores de 32bits com versões de
Windows de 32bits.
Nota: Cada vez mais é comum processadores de 64bits no mercado, mas existe uma base
instalada de equipamentos com tecnologia de hardware e Windows de 32bits grande e
que estão, ou poderão
erão passar a estar, com mais do que 4GB de memória RAM instalada.
Esta é a razão para este artigo.
Quanta memória RAM pode ser endereçada?
Os sistemas 32bits baseados na arquitetura IA-32
IA 32 podem endereçar até 64GB de memória
RAM, com o uso das instruções Physical
P
Address Extensions-PAE
PAE contidas no processador.
O PAE é uma extensão do barramento de endereços de memória, desenhado pela Intel
em plataformas IA-32
32 (Pentium Pro e superiores; a AMD possui recurso similar) que
permitem aos processadores aumentar o número de bits utilizados para o endereçamento
www.cdcbrasil.com.br/ncomputing
de memória de 32bits para 36bits, (2^36 bits = 64GB). A ativação do PAE no Windows é
possível em versões específicas do sistema operacional como veremos a seguir.
Vale aqui lembrar que processador de 32bits é aquele processador com barramento de
dados (data bus) de 32bits, processado blocos de dados de 32bits. O barramento
responsável pelo endereçamento de memória é o barramento de endereços (address
bus), este é o barramento que foi estendido para 36bits, similar
similar ao Intel 8086, que era um
processador de 16bits com um barramento de endereçamento de 24bits, possibilitando
endereçar até 16MB.
As versões Windows Server 2003 Datacenter Edition de 32bits permitem o endereçamento de até 37bits, ou seja, 128GB
em hardwares que suportem este limite.
Suporte a Memória nos Sistem
Sistemas Operacionais Windows
Os sistemas operacionais baseados na tecnologia Microsoft Windows NT sempre
permitiram acesso direto a memória às aplicações que usam endereçamento de 32bits
(4GB). O PAE x86, disponível nas versões Windows Server 2003 Enterprise Edition
Ed
e
Windows Server 2003 Datacenter Edition (e também em versões anteriores do Windows
Server), permite que o modo de endereçamento seja alterado de 32bits para 64bits
possibilitando que o sistema operacional, drivers de dispositivos e aplicações enderecem
endere
a
memória adicional, endereços acima de 4GB. O acesso direto aos endereços acima de 4GB
www.cdcbrasil.com.br/ncomputing
pelas aplicações é realizado através de uma API específica do Windows, denominada
Address Windowing Extensions (AWE).
Quando o PAE é habilitado no sistema, toda a memória
memória física é considerada memória de
uso geral (general purpose memory). O sistema operacional passa a utilizar esta memória
para o gerenciamento de memória virtual sem maiores alterações. Como as apenas as
aplicações que realmente utilizam grandes quantidades
quantidades de memória necessitam do AWE,
não são grandes as alterações a serem realizadas no desenho destas aplicações.
O Windows considera que toda a memória é memória virtual, seja ela RAM ou o arquivo
de paginação, oferecendo área de alocação para as aplicações
aplicações e gerenciando onde os
dados serão armazenados.
Ao se habilitar o PAE, através da entrada /PAE no arquivo boot.ini nas versões Windows
Server 2003 Enterprise Edition e Windows Server 2003 Datacenter Edition, é habilitado a
versão Ntkrnlpa.exe do kernel (ou o Ntkrnlpamp.exe em sistemas multiprocessados). A
versão do kernel para uso com o PAE é copiada por padrão durante a instalação do
sistema operacional.
Com o uso do PAE x86, é possível fazer com que o software executivo do Windows
(também conhecido como
mo Kernel) seja capaz de utilizar toda a memória física disponível
entre 4GB e 64GB (apesar de endereçar até 64bits, ainda persistem os 36bits de
endereçamento máximo do processador), podendo reduzir as operações de paginação e
permitindo o aumento de desempenho
desempenho em cenários onde várias aplicações estão alocadas
em um mesmo computador, como em casos de consolidação ou quando aplicações
intensivas no uso de memória estão em execução.
Tecnologias relacionadas ao PAE x86
Para compreender o funcionamento do PAE
PAE x86, é importante conhecer também o
funcionamento de algumas outras tecnologias como o Memory Manager, Page Table, 44
gigabyte tuning (4GT) e o Application Windowing Extensions (AWE).
Memory Manager
O Memory Manager é o componente que traduz os endereços
endereços de memória virtual
utilizados pelo sistema operacional e aplicações em localizações reais de memória. A
tradução da memória real para a virtual é transparente para as aplicações. Processos em
execução no User Mode não possuem acesso direto a memória real
real,, e não sabem onde
realmente o dado reside. Um processo em User Mode pode solicitar um bloco de
memória para escrever, mas o dado pode ser gravado em um espaço na memória RAM ou
no arquivo de paginação (paging file, também conhecido como arquivo de swap). O
arquivo de paginação é um arquivo no disco rígido que é usado pelo Memory Manager
www.cdcbrasil.com.br/ncomputing
para armazenar dados que não cabem na memória real, movendo blocos da memória real
para a virtual, assim como o contrário, sempre que necessário.
Mesmo em sistemas com grandes quantidades de memória onde o PAE x86 está
habilitado, caso ocorra falta de memória, o Memory Manager irá alocar no arquivo de
paginação os dados que não puderem ser alocados em memória física. Com a ativação do
PAE x86, os sistemas
stemas operacionais passam endereçar dados sob o formato de endereços
de 64bits com limite máximo de 36bits (ou 64GB), devido a quantidade de bits disponíveis
pela arquitetura x86.
Page Table Entries
Sendo o Memory Manager responsável pela tradução, rastreamento,
rastreamento, e organização da memória real
e virtual, tanto para aplicações quanto para o kernel do Windows, é necessário que estas operações
sejam indexadas, assim o Memory Manager pode saber se determinado dado está na memória
física ou virtual. Quando este dado é solicitado, o Memory Manager verifica no índice (ou Page Table)
buscando uma entrada (Page Table Entry) que aponte o local onde este dado está ou deve ser
armazenado.
Esta tabela de índices usada pelo Memory Manager é carregada no espaço de memória
alocado pelo kernel durante a carga do sistema operacional. Na prática o Memory
Manager usa a Page Table para criar um mapa de endereços de 64bits, endereçando
diretamente os endereços até 4GB e consultando esta tabela de referência para os
ponteiros de endereços
ndereços entre 4GB e 64GB.
Application Windowing Extensions (AWE)
Devido ao espaço de endereços virtuais de uma aplicação se estender a apenas 2GB (3GB
com o modo 4GT habilitado) nos ambiente 32bits, para aumentar o desempenho das
aplicações que necessitam
am de um método para mapear grandes porções de dados e
mantê-los
los em memória física por todo o tempo, foi desenvolvido um modo de acesso para
até 64GB de memória não paginada (física) através de uma API denominada Application
Windowing Extensions (AWE).
Com o AWE, as aplicações podem reservar seções da memória física que não podem ser
paginadas, exceto pela por solicitação da própria aplicação. O AWE mantém os dados
alocados permanentemente na memória sem que esta seja paginada uma vez que o
Memory Manager não
ão gerencia esta memória, apenas executando as solicitações da API
AWE.
Diferente do PAE, que deve ser habilitado no boot.ini, o AWE não necessita de ativação,
estando disponível para o uso por aplicações desenhadas para este fim.
www.cdcbrasil.com.br/ncomputing
4-gigabyte Tunning (4GT)
O 4-gigabyte
gigabyte Tunnig (também conhecido como 4GT, memory tunning ou /3GB) é uma das
tecnologias que permitem aumentar a quantidade de memória disponível para aplicações
(User Mode).
O 4GT permite que aplicações que utilizem memória RAM de maneira intensiva em
versões 32bits do Microsoft Windows Server 2003 Enterprise Edition ou Windows Server
2003 Datacenter Edition usem 50% a mais de memória virtual, tornando disponível para o
Kernel Mode (ou Windows Executive Mode) menos memória do que o padrão.
Nota: O 4GT
GT não é necessário em sistemas Windows de 64bits.
Entretanto existem algumas limitações de cenários para o uso do 4GT, como pode ser
visto a seguir;
·
Processador baseado na arquitetura x86 (Intel EM64T e AMD64 são processadores
x64).
·
2GB ou mais de memória RAM (existem cenários onde a partir de 1GB recomenda-se
recomenda
a ativação do 4GT).
·
Microsoft Windows Server 2003 Enterprise Edition ou Windows Server 2003
Datacenter Edition.
·
PAE habilitado em equipamentos com mais de 16
16GB.
·
Necessidade de suportar aplicações ou serviços que utilizem mais de 1GB de
memória para o Kernel, por exemplo, manter determinado número de conexões
simultâneas ao sistema.
O 4GT altera a forma como o Memory Manager aloca a memória virtual no sistema, a
figura abaixo ilustra esta arquitetura em um equipamento com 4GB ou mais de memória
RAM.
www.cdcbrasil.com.br/ncomputing
Ao invés de dividir os 4GB de memória RAM disponíveis (supondo que o sistema possui
4GB de RAM ou mais e o 4GT habilitado) igualmente entre o Kernel Mode e o User Mode
(2GB para cada), o 4GT disponibiliza 1GB a menos de memória
memória RAM para o kernel,
liberando assim, 1GB de memória RAM a mais para as aplicações.
www.cdcbrasil.com.br/ncomputing
O uso do 4GT nos sistemas Windows 2003 não é habilitado por padrão, ficando facultado
ao engenheiro de sistemas responsável sua ativação em virtude do cenário e
principalmente dos testes com as aplicações. Para habilitar o 4GT, deve-se
deve incluir uma
entrada /3GB no arquivo boot.ini. Esta chave altera a alocação de espaços em memória
para o kernel do sistema e para aplicações. Ao iniciar uma aplicação o sistema operacional
examina o cabeçalho do arquivo, se houver o flag
"IMAGE_FILE_LARGE_ADDRESS_AWARE" e o /3GB está sendo usado, então a aplicação
"IMAGE_FILE_LARGE_ADDRESS_AWARE"
tem acesso ao espaço de memória liberado pelo 4GT.
Apenas as versões Microsoft Windows Server 2003 Enterprise Edition ou Windows Server
2003 Datacenter Edition podem usar o 4GT, outras versões, como o Wi
Windows Server 2003
Standard Edition permitem que a chave seja ativada, porém apesar da aparência, os
endereços de memória restringidos pela chave (entre 2GB e 3GB) não ficam indisponíveis
para uso das aplicações.
Em alguns casos, restringir o uso de memória em no máximo 1GB para o kernel pode ser
problemático. Para endereçar as necessidades de quantidades intermediárias entre 2GB e
3GB, o Windows Server 2003 conta com um parâmetro auxiliar ao /3GB, também
configurado no boot.ini, que permite ajustes. Este parâmetro,
parâmetro, o /Userva permite que uma
quantidade de memória expressa em MB seja informada ao sistema operacional durante a
carga, ajustando assim a quantidade de memória para uso do kernel do sistema. A
quantidade de memória deve ser expressa calculando a diferença
diferença entre a alocação padrão
para as aplicações do 4GT (3072MB) e a memória adicional necessária ao kernel. Por
exemplo, caso se deseje permitir mais 512MB para o kernel, deve-se
deve se subtrair 512 de 3072,
ou seja, 2560 e adicionar ao boot.ini "/3GB /Userva=2560".
/Userva=2560". Esta memória RAM adicional é
www.cdcbrasil.com.br/ncomputing
reservada como espaço adicional para as entradas na tabela de paginação, mas o sistema
não faz nenhuma alocação deste espaço até que seja necessário.
Outro ponto importante em sistemas com grandes quantidades de memória, é que deve
haver espaço suficiente para armazenar um arquivo de despejo de memória de 2GB
(despejo de memória do kernel) em sistemas com 4GB ou mais de memória RAM.
Usando o 4GT e o Physical Address Extensions no mesmo sistema
Em sistemas com 4GB ou mais de memória, o Memory Manager divide os quatro
primeiros gigabytes em dois blocos de 2GB, um para Kernel Mode e outro para o User
Mode. Desta forma, dependendo da quantidade de memória instalada além dos 4GB,
ativar o PAE pode não significar que a aplicação realmente possa fazer uso desta memória.
Considerando um equipamento com 6GB RAM como exemplo, uma aplicação que precise de 5GB
irá ter paginado pelo Memory Manager ao menos 1GB, além disto, podem ocorrer casos on
onde o
sistema operacional, apesar de ter alocado, não está realmente utilizando os 2GB.
Uma forma de permitir que uma quantidade maior de memória seja utilizada pelas
aplicações é ativar o PAE e o 4GT no sistema ao mesmo tempo, restringindo o acesso a
apenas 1GB pelo kernel.
Entretanto, devido ao 4GT restringir o acesso do kernel a memória, o espaço disponível
para o Page Table fica restrito (reduzindo a quantidade de memória não-paginável
não
de
256MB para 128MB), permitindo entradas (Page Table Entries) até o limite máximo de
16GB de endereçamento de memória, mesmo que o sistema possua, por exemplo, 32GB
de memória RAM instalada. Além disso, é importante testar as aplicações com carga
(simulando acesso real) ao usar o 4GT, uma vez que o consumo de memória do modo
mo
kernel para manter as conexões com os clientes pode ser insuficiente, exigindo um ajuste
mais apurado através do /Userva.
Conclusão
Apesar do lançamento e consolidação de arquiteturas de 64bits, a quantidade de sistemas de 32bits
ainda é grande, e é preciso
reciso compreender o funcionamento do subsistema de memória para tirar
melhor proveito dos recursos, aumentando a confiabilidade e o desempenho dos sistemas atuais.
Para mais informações de como usar os ajustes avançados de memória nos sistemas
operacionaiss Windows, consulte o Microsoft Technet e Knowledge Base e o Help do
Windows Server 2003.
www.cdcbrasil.com.br/ncomputing