Você está na página 1de 7

Consumo de memria de aplicaes de 32 bits

Ir para o final dos metadados


Ir para o incio dos metadados

Este artigo aplica-se a execuo dos produtos TOTVS (TOTVS | Application Server e
TOTVS | DBAccess), em sistemas operacionais Windows XP32 bits, Windows Server
2003 32 bits e 64 bits.
Abrangncia
ERP 10 e 11

A seguir, abordaremos as seguintes informaes:


Limite de alocao de memria e endereamento de aplicaes 32 bits.
Detalhes sobre o gerenciamento de memria fsica (RAM - Random Access Memory) e
virtual (paging file) do Windows.

Detalhes para obter a memria em uso por processos do equipamento utilizando o


gerenciador de tarefas do Windows (Task Manager).

Limite do uso de memria quando utilizado o parmetro de Kernel/3GB com Windows


32 bits e executando a aplicao em Windows 64 bits.

Limite de memria em 32 bits


Existem alguns aspectos importantes que devem ser considerados sobre o consumo de
memria de uma aplicao 32 bits.
Desta forma, importante ressaltar que a arquitetura de x86/32 bits tem uma limitao
importante para endereamento e alocao de memria RAM. Pois, a arquitetura de 32 bits
pode enderear nativamente no mximo 4 GB de memria RAM (232=4.2 bilhes ~ 4 GB).

Endereamento de memria
Ao utilizar o sistema operacional Windows 32 bits, com endereamento de 4 GB de memria, 2
GB reservado para o funcionamento do Kernel e o restante (2GB) ficam disponveis para
processos e aplicaes do usurio em execuo no equipamento.
Como o processo utiliza a memria de forma contnua, e o prprio processo de alocao utiliza
uma parte da memria para controle interno, uma instncia de um processo consegue
enderear aproximadamente 1.8 GB de memria. No entanto, esses nmeros so
aproximados, no h uma mtrica precisa.
J o limite de endereamento real da aplicao um pouco abaixo disso, pois a memria
exigida para armazenar o programa e a pilha de execuo (Stack), alocadas internamente pela
aplicao, tambm so contabilizadas nesse limite.
Desta forma, o TOTVS | Application Server e o TOTVS | DBAccess, quando executados em
uma mquina de 32 bits, entram nesse limite de endereamento de memria.

Verificando a memria alocada por um processo


Para determinar a quantidade total de memria fsica ou no alocada e endereada por um
processo, pode-se utilizar a aplicao do Gerenciador de tarefas do Windows (Task Manager).
Atravs dessa aplicao, possvel localizar o processo pelo nome do executvel e verificar a
quantidade de memria utilizada.
1.
Na janela Gerenciador de tarefas do Windows, clique na pasta Processos.
2.
No menu Exibir, selecione a opo Selecionar Colunas.

3.

Na janela Selecionar Colunas, marque a opo Tamanho de memria virtual e


clique no boto OK.
Ser apresentada a coluna Tamanho da VM. Observe:

Neste exemplo, verifique que o TOTVS | Application Server (appserver.exe), no


momento, consome 28.552 KB (aproximadamente 27,8 MB).

Memria RAM e Paging File


Ao contrrio do que se imagina, a informao apresentada na coluna Tamanho da VM, do
gerenciador de tarefas do Windows, no significa que a memria alocada seja efetivamente
virtual; ou seja, memria alocada em disco. A informao apresentada, no Gerenciador de
tarefas do Windows (Task Manager) indica a quantidade de memria em KB endereada pelo
processo.
O fator que determina a partir de um momento se parte dessa memria est endereada em
disco, a disponibilidade da memria fsica no equipamento, ou seja, a quantidade efetiva de
memria RAM do servidor.
Para isso, o Windows cria um arquivo em disco, chamado paging file ou swap file, para
armazenar parte do programa e memria alocada no disco quando as alocaes de memria
da aplicao no cabem na memria fsica (RAM) disponvel.

Exemplo
Uma mquina de 1 GB de RAM, com paging file de 1 GB, tem uma rea de
endereamento total de 2 GB. Conforme as aplicaes em execuo vo alocando
memria, priorizada a alocao da RAM. Mas, quando o total de memria RAM

alocada se aproxima de 1 GB e as aplicaes pedem mais memria, parte do contedo


da memria fsica j alocada por uma aplicativo so transferidas para o paging file, e
mais memria RAM liberada.
Quando um aplicativo solicita um contedo de memria anteriormente alocado, e caso no
esteja no disco, outra rea da memria alocada ser transferida para o disco e o contedo
solicitado ser lido do disco para a RAM, para ser usada pela aplicao.
Uma vez que a memria fsica totalmente ocupada, o sistema operacional comea a utilizar
o paging file para alternar as alocaes e, com isso, o desempenho das aplicaes e do
equipamento cai drasticamente. Esse estado de baixo desempenho, devido utilizao
do paging file, conhecido como entrar em swap.

Configurando o tamanho do paging file


Independentemente da quantidade de memria fsica (RAM) disponvel, deve-se ter o paging
file habilitado, como medida de segurana, principalmente se o equipamento possui muita
memria RAM. Pois, caso exista um excesso de consumo de memria por um ou mais
aplicativos juntos, e a memria RAM for completamente ocupada, e o recurso de paging
file no estiver configurado/disponvel, o sistema operacional cair imediatamente (crash).
O desempenho com o paging file habilitado no representa nenhum problema, pois as
alocaes de memria so priorizadas para uso de memria fsica (RAM).

Observaao
No recomendamos desligar o uso do paging file do Windows.

O paging file/swap somente ser alocado quando as alocaes se aproximarem do total fsico
disponvel (RAM) e ultrapassarem esse valor. Por isso, recomendamos manter as
configuraes do paging file utilizando as configuraes sugeridas pelo sistema
operacional (System Managed Size). Desta forma, o sistema operacional deve criar o arquivo
de paging file com o tamanho correspondente a memria fsica disponvel.
1.
No Painel de Controle + Propriedade do sistema, clique na pasta Avanado.
2.
Na rea Desempenho, clique Configuraes.
3.
Na janela Opes de desempenho, clique na pasta Avanado.
4.
Na rea Memria Virtual + boto Alterar, possvel definir as propriedades de uso e
comportamento do sistema em relao ao paging file.

Monitor de desempenho do gerenciador de tarefas do Windows (Task Manager)


Atravs Gerenciador de tarefas do Windows, na pasta Desempenho, possvel obter as
seguintes informaes e comportamentos de um equipamento:

Neste exemplo, o equipamento em questo est com Windows XP com paging file configurado
com capacidade 672 MB.

Memria Fsica (KB) / Physical Memory (K)


Nesta rea, so apresentados os seguintes dados:
457964 KB Total de memria RAM
178224 KB (174 MB) - Total de memria disponvel
183956 KB - Total de memria utilizada para o cache do sistema operacional

Memria usada pelo ncleo (KB) / Kernel Memory (K)


36920 KB Total de memria em uso pelo Kernel
28645 KB Total de memria utilizada pelo arquivo de paginao (Paged)
8272 KB Efetivamente memria RAM (Nonpaged)

Carga comprometida (KB) / Commit Charge (K)


Nesta rea, so apresentados os totais de memria RAM incluindo o paging file.
252400 KB ou 246 MB Total de memria alocada no momento. Essa informao
apresentada tambm na rea Uso do arquivo de paginao e mais significativa para
anlise.
1083052 KB (1057 MB) Limite de memria enderevel do ambiente (RAM + Paging File).
425172 Apresenta o pico (valor mximo) alocado para o servidor desde que foi iniciado.
Em geral, um ambiente configurado para utilizao de memria virtual atravs do arquivo de
paginao (Paging File), quando a quantidade total de memria alocada (Carga comprometida
->Total ou Uso do arquivo de paginao) atinge a quantidade de memria fsica total (Memria

Fsica ->Total), o sistema operacional j est utilizando o paging file como memria adicional.
Nesse caso, a perda de performance/desempenho tende a crescer, de acordo com o
crescimento da memria total alocada, e a quantidade de operaes de memria realizadas
pelos aplicativos em setores da memria gravada no disco.
Desta forma, o sistema operacional permite que sejam manipulados quase 1 GB de memria,
porm, a partir dos 450 MB utilizados, o paging file ser utilizado para emular a memria fsica
deixando o equipamento e as aplicaes em uso muito lento.

Limite apurado em teste de carga


Sistema Operacional / Equipamento
Microsoft Windows XP / 4 GB de memria RAM
Aplicao:
TOTVS | Application Server executando um programa especfico de carga com mltiplos
processos de abertura de tabelas.
Teste
Monitoramento da memria utilizada pela aplicao atravs do Gerenciador de tarefas do
Windows.
Anlise:
Ao atingir aproximadamente 1.7 GB de memria alocada (Tamanho da VM do processo), no
era possvel alocar mais memria. A aplicao reproduziu ocorrncias de Memory Full e outras
subsequentes, como String Index Out of Bounds. A partir deste momento, uma vez que houve
falha de alocao de memria, a aplicao torna-se instvel e sujeita a outras ocorrncias
como congelamento de conexes em processo, congelamento de novas tentativas de conexo
e queda do aplicativo.
Concluso:
Neste ambiente, seguro trabalhar com um servio do TOTVS | Application Server que
consome em mdia at 1.4 GB de RAM. Desta forma, teramos uma margem de memria para
situaes de pico.
TOTVS | Application Server - Consideraes sobre balanceamento de carga
Recomendamos o uso do Sistema Microsiga Protheus com balance (Balanceamento de
Carga), em casos quando se tem uma demanda de usurios e aplicaes que necessite mais
do que o limite operacional, pois assim cada servio slave ter o limite de endereamento de
cada servidor utilizado. Inclusive, se houver memria e capacidade de processamento (CPU),
pode-se configurar mais de um servio, do Microsiga Protheus, no mesmo equipamento.
O balanceamento de carga utilizado com eficcia para conexes, do TOTVS | SmartClient,
em que as novas conexes so direcionadas aos servidoresslaves de acordo com o fator de
carga de cada servidor, configurado no balance, e a quantidade de usurio conectado
nos slaves.
Aumentando o limite de memria para aplicao no Windows 32 bits
Existem ambientes, por exemplo o uso do TOTVS | Application Server, com servidor HTTP,
para portais ou sites Web, em que a quantidade de usurios conectados pode exigir uma
demanda de memria maior e a configurao de balanceamento de carga, do Microsiga
Protheus, no se aplica a interfaceWEB/HTTP.
Nestes casos e similares, existem algumas alternativas de configurao especifica de memria
para o Microsoft Windows, que permite aumentar o limite de memria alocada para aplicativos
de 3 GB. No entanto, algumas verses do Windows 32 bits, permitem o gerenciamento e
endereamento de mais de 4 GB de memria fsica, utilizando uma mquina com arquitetura
x86_64, juntamente com uma verso do Windows nativa para 64 bits, no qual temos um limite
maior, mesmo para aplicaes compiladas em 32 bits.
Por exemplo, utilizar um Windows Server 2003 Enterprise x64, onde a aplicao 32 bits
executada sem necessidade de compilao ou build nativo, e o ambiente permite o

endereamento de at 4 GB por aplicao, sem nenhuma alterao de configurao no


sistema operacional.

Utilizao do parmetro /PAE - Physical Address Extension em Windows 32 bits


Atravs deste parmetro, inserido na configurao de inicializao do Windows, possvel
habilitar no sistema operacional o suporte a endereamento e identificao de mais de 4 GB de
memria fsica (RAM), criando uma camada de endereamento transparente para as
aplicaes.
Para mais informaes das verses do Windows que suportam esse parmetro, consulte a
documentao do Suporte Microsoft, atravs do
endereo:http://support.microsoft.com/kb/283037//en-us.

Observao

Nas atualizaes mais recentes, no existe a necessidade de habilitar esse parmetro, pois, por padro, j vem co

Para ambientes com Windows 2000 ou 2003 32 bits, com mais de 4 GB de RAM,
recomendvel que o recurso PAE seja utilizado para que o sistema operacional seja capaz de
reconhecer a quantidade adicional de memria.

Utilizao do TOTVS | DBAccess em Windows 64 bits


Ao compilar a aplicao para modo nativo 32 bits, a mesma executada sem nenhum demrito
ou perda de desempenho em uma mquina 64 bits, utilizando uma verso de Windows 64 bits,
como por exemplo o Windows Server 2003 Enterprise x64.
Para execuo de aplicaes de 32 bits, em Windows 64 bits, o sistema operacional executa a
aplicao atravs de um subsistema chamado WOW64 (Windows on Windows 64), que realiza
a adequao necessria para executar a aplicao 32 bits de modo transparente para a
aplicao, disponibilizando ainda de forma nativa DLLs especficas do sistema operacional em
pasta diferenciada para manter a compatibilidade com programas compilados e linkeditados
para utilizao de recursos do sistema operacional Windows em 32 bits.
Para obter mais informaes detalhadas, consulte a documentao do suporte Microsoft no
endereo: http://support.microsoft.com/kb/896456/en-us.
Neste ambiente, o sistema operacional permite aplicao a alocao de 4 GB de memria
por processo 32 bits.
Em termos prticos, o teste de carga realizado apresentou falha de alocao de memria
quando o processo do TOTVS | Application Server atingiu 3.4 GB de memria alocada
(Tamanho da VM), sendo segura a execuo do aplicativo at os 3.1 GB.

Viso geral - Limites reais de endereamento com Protheus 8 Server


Com os testes realizados com o TOTVS | Application Server com Windows XP, Windows
Server 2003 com parmetro /3GB habilitado, e com o Windows Server 2003 Enterprise x64
Edition, a tabela abaixo ilustra as diferenas de comportamento e limites encontrados em cada
um dos ambientes.
Sistema Operacional

Windows XP 32 bits

Windows Server 2003 32 bits com /3GB

Windows Server 2

Total

2 GB

3 GB

4 GB

Apurado / Real

1.7 GB

2.6 GB

3.4 GB

Limite Seguro

1.4 GB

2.3 GB

Consideraes sobre a plataforma Linux


Existem recursos similares nas plataformas Linux, com verses do Kernel 2.4 e superiores, que
permitem adequaes de comportamento similares aos recursos apresentados pelo Windows.
No entanto, para obter mais informaes desse recurso e afins, necessrio consultar os
documentos que so disponibilizados no pacote de distribuio Linux.
A TOTVS S/A analisa e testa essas informaes nas plataformas homologadas para,
posteriormente, incluir essas caractersticas nas verses e distribuies homologadas para uso
com o TOTVS | Application Server e TOTVS | DBAccess.

3.1 GB