Você está na página 1de 7

Consumo de memória de aplicações de 32 bits

Consumo de memória de aplicações de 32 bits

Este artigo aplica-se a execução dos produtos TOTVS (TOTVS |


Application Server e TOTVS | DBAccess), em sistemas operacionais
Windows XP32 bits, Windows Server 2003 32 bits e 64 bits.

Abrangência

ERP 10 e 11

A seguir, abordaremos as seguintes informações:

Limite de alocação de memória e endereçamento de aplicações 32 bits.


Detalhes sobre o gerenciamento de memória física (RAM - Random Access Memory) e virtual (paging file)
do Windows.
Detalhes para obter a memória em uso por processos do equipamento utilizando o gerenciador de tarefas do
Windows (Task Manager).
Limite do uso de memória quando utilizado o parâmetro de Kernel/3GB com Windows 32 bits e executando a
aplicação em Windows 64 bits.

Limite de memória em 32 bits

Existem alguns aspectos importantes que devem ser considerados sobre o consumo de memória de uma aplicação
32 bits.

Desta forma, é importante ressaltar que a arquitetura de x86/32 bits tem uma limitação importante para
endereçamento e alocação de memória RAM. Pois, a arquitetura de 32 bits pode endereçar nativamente no
máximo 4 GB de memória RAM (232=4.2 bilhões ~ 4 GB).

Endereçamento de memória

Ao utilizar o sistema operacional Windows 32 bits, com endereçamento de 4 GB de memória, 2 GB é reservado


para o funcionamento do Kernel e o restante (2GB) ficam disponíveis para processos e aplicações do usuário em
execução no equipamento.

Como o processo utiliza a memória de forma contínua, e o próprio processo de alocação utiliza uma parte da
memória para controle interno, uma instância de um processo consegue endereçar aproximadamente 1.8 GB de
memória. No entanto, esses números são aproximados, não há uma métrica precisa.

Já o limite de endereçamento real da aplicação é um pouco abaixo disso, pois a memória exigida para armazenar o
programa e a pilha de execução (Stack), alocadas internamente pela aplicação, também são contabilizadas nesse
limite.

Desta forma, o TOTVS | Application Server e o TOTVS | DBAccess, quando executados em uma máquina de 32
bits, entram nesse limite de endereçamento de memória.

Verificando a memória alocada por um processo

Para determinar a quantidade total de memória física ou não alocada e endereçada por um processo, pode-se
utilizar a aplicação do Gerenciador de tarefas do Windows ( Task Manager).
Através dessa aplicação, é possível localizar o processo pelo nome do executável e verificar a quantidade de
memória utilizada.

1. Na janela Gerenciador de tarefas do Windows, clique na pasta Processos.


2. No menu Exibir, selecione a opção Selecionar Colunas.
3. Na janela Selecionar Colunas, marque a opção Tamanho de memória virtual e clique no botão 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).

Memória RAM e Paging File

Ao contrário do que se imagina, a informação apresentada na coluna Tamanho da VM, do gerenciador de tarefas
do Windows, não significa que a memória alocada seja efetivamente virtual; ou seja, memória alocada em disco. A
informação apresentada, no Gerenciador de tarefas do Windows ( Task Manager) indica a quantidade de memória
em KB endereçada pelo processo.
O fator que determina a partir de um momento se parte dessa memória está endereçada em disco, é a
disponibilidade da memória física no equipamento, ou seja, a quantidade efetiva de memória RAM do servidor.

Para isso, o Windows cria um arquivo em disco, chamado paging file ou swap file, para armazenar parte do
programa e memória alocada no disco quando as alocações de memória da aplicação não cabem na memória
física (RAM) disponível.

Exemplo

Uma máquina de 1 GB de RAM, com paging file de 1 GB, tem uma área de endereçamento total de 2 GB.
Conforme as aplicações em execução vão alocando memória, é priorizada a alocação da RAM. Mas, quando
o total de memória RAM alocada se aproxima de 1 GB e as aplicações pedem mais memória, parte do
conteúdo da memória física já alocada por uma aplicativo são transferidas para o paging file, e mais
memória RAM é liberada.

Quando um aplicativo solicita um conteúdo de memória anteriormente alocado, e caso não esteja no disco, outra
área da memória alocada será transferida para o disco e o conteúdo solicitado será lido do disco para a RAM, para
ser usada pela aplicação.

Uma vez que a memória física é totalmente ocupada, o sistema operacional começa a utilizar o paging file para
alternar as alocações e, com isso, o desempenho das aplicações e do equipamento cai drasticamente. Esse estado
de baixo desempenho, devido à utilização do paging file, é conhecido como entrar em swap.

Configurando o tamanho do paging file

Independentemente da quantidade de memória física (RAM) disponível, deve-se ter o paging file habilitado, como
medida de segurança, principalmente se o equipamento possui muita memória RAM. Pois, caso exista um excesso
de consumo de memória por um ou mais aplicativos juntos, e a memória RAM for completamente ocupada, e o
recurso de paging file não estiver configurado/disponível, o sistema operacional cairá imediatamente (crash).

O desempenho com o paging file habilitado não representa nenhum problema, pois as alocações de memória são
priorizadas para uso de memória física (RAM).

Observaçao

Não recomendamos desligar o uso do paging file do Windows.

O paging file/swap somente será alocado quando as alocações se aproximarem do total físico disponível (RAM) e
ultrapassarem esse valor. Por isso, recomendamos manter as configurações do paging file utilizando as
configurações sugeridas pelo sistema operacional (System Managed Size). Desta forma, o sistema operacional
deve criar o arquivo de paging file com o tamanho correspondente a memória física disponível.

1. No Painel de Controle + Propriedade do sistema, clique na pasta Avançado.


2. Na área Desempenho, clique Configurações.
3. Na janela Opções de desempenho, clique na pasta Avançado.
4. Na área Memória Virtual + botão Alterar, é possível definir as propriedades de uso e comportamento do
sistema em relação ao paging file.
Monitor de desempenho do gerenciador de tarefas do Windows (Task Manager)

Através Gerenciador de tarefas do Windows, na pasta Desempenho, é possível obter as seguintes informações e
comportamentos de um equipamento:

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

Memória Física (KB) / Physical Memory (K)


Nesta área, são apresentados os seguintes dados:
457964 KB – Total de memória RAM
178224 KB (174 MB) - Total de memória disponível
183956 KB - Total de memória utilizada para o cache do sistema operacional

Memória usada pelo núcleo (KB) / Kernel Memory (K)


36920 KB – Total de memória em uso pelo Kernel
28645 KB – Total de memória utilizada pelo arquivo de paginação ( Paged)
8272 KB – Efetivamente memória RAM (Nonpaged)

Carga comprometida (KB) / Commit Charge (K)


Nesta área, são apresentados os totais de memória RAM incluindo o paging file.
252400 KB ou 246 MB – Total de memória alocada no momento. Essa informação é apresentada também
na área Uso do arquivo de paginação e é mais significativa para análise.
1083052 KB (1057 MB) – Limite de memória endereçável do ambiente (RAM + Paging File).
425172 – Apresenta o pico (valor máximo) alocado para o servidor desde que foi iniciado.

Em geral, um ambiente configurado para utilização de memória virtual através do arquivo de paginação (Paging File
), quando a quantidade total de memória alocada (Carga comprometida ->Total ou Uso do arquivo de paginação)
atinge a quantidade de memória física total (Memória Física ->Total), o sistema operacional já está utilizando o pagi
ng file como memória adicional.
Nesse caso, a perda de performance/desempenho tende a crescer, de acordo com o crescimento da memória total
alocada, e a quantidade de operações de memória realizadas pelos aplicativos em setores da memória gravada no
disco.

Desta forma, o sistema operacional permite que sejam manipulados quase 1 GB de memória, porém, a partir dos
450 MB utilizados, o paging file será utilizado para emular a memória física deixando o equipamento e as
aplicações em uso muito lento.

Limite apurado em teste de carga

Sistema Operacional / Equipamento


Microsoft Windows XP / 4 GB de memória RAM

Aplicação:
TOTVS | Application Server executando um programa específico de carga com múltiplos processos de abertura de
tabelas.

Teste
Monitoramento da memória utilizada pela aplicação através do Gerenciador de tarefas do Windows.

Análise:
Ao atingir aproximadamente 1.7 GB de memória alocada (Tamanho da VM do processo), não era possível alocar
mais memória. A aplicação reproduziu ocorrências de Memory Full e outras subsequentes, como String Index Out
of Bounds. A partir deste momento, uma vez que houve falha de alocação de memória, a aplicação torna-se
instável e sujeita a outras ocorrências como congelamento de conexões em processo, congelamento de novas
tentativas de conexão e queda do aplicativo.

Conclusão:
Neste ambiente, é seguro trabalhar com um serviço do TOTVS | Application Server que consome em média até 1.4
GB de RAM. Desta forma, teríamos uma margem de memória para situações de pico.

TOTVS | Application Server - Considerações sobre balanceamento de carga

Recomendamos o uso do Sistema Microsiga Protheus com balance (Balanceamento de Carga), em casos quando
se tem uma demanda de usuários e aplicações que necessite mais do que o limite operacional, pois assim cada
serviço slave terá o limite de endereçamento de cada servidor utilizado. Inclusive, se houver memória e capacidade
de processamento (CPU), pode-se configurar mais de um serviço, do Microsiga Protheus, no mesmo equipamento.

O balanceamento de carga é utilizado com eficácia para conexões, do TOTVS | SmartClient, em que as novas
conexões são direcionadas aos servidores slaves de acordo com o fator de carga de cada servidor, configurado no
balance, e a quantidade de usuário conectado nos slaves.

Aumentando o limite de memória para aplicação no Windows 32 bits

Existem ambientes, por exemplo o uso do TOTVS | Application Server, com servidor HTTP, para portais ou sites W
eb, em que a quantidade de usuários conectados pode exigir uma demanda de memória maior e a configuração de
balanceamento de carga, do Microsiga Protheus, não se aplica a interface WEB/HTTP.

Nestes casos e similares, existem algumas alternativas de configuração especifica de memória para o Microsoft
Windows, que permite aumentar o limite de memória alocada para aplicativos de 3 GB. No entanto, algumas
versões do Windows 32 bits, permitem o gerenciamento e endereçamento de mais de 4 GB de memória física,
utilizando uma máquina com arquitetura x86_64, juntamente com uma versão do Windows nativa para 64 bits, no
qual temos um limite maior, mesmo para aplicações compiladas em 32 bits.

Por exemplo, utilizar um Windows Server 2003 Enterprise x64, onde a aplicação 32 bits é executada sem
necessidade de compilação ou build nativo, e o ambiente permite o endereçamento de até 4 GB por aplicação, sem
nenhuma alteração de configuração no sistema operacional.

Utilização do parâmetro /PAE - Physical Address Extension em Windows 32 bits

Através deste parâmetro, inserido na configuração de inicialização do Windows, é possível habilitar no sistema
operacional o suporte a endereçamento e identificação de mais de 4 GB de memória física (RAM), criando uma
camada de endereçamento transparente para as aplicações.

Para mais informações das versões do Windows que suportam esse parâmetro, consulte a documentação do
Suporte Microsoft, através do endereço: http://support.microsoft.com/kb/283037//en-us.

Observação

Nas atualizações mais recentes, não existe a necessidade de habilitar esse parâmetro, pois, por padrão, já vem
configurado.

Para ambientes com Windows 2000 ou 2003 – 32 bits, com mais de 4 GB de RAM, é recomendável que o recurso
PAE seja utilizado para que o sistema operacional seja capaz de reconhecer a quantidade adicional de memória.

Utilização do TOTVS | DBAccess em Windows 64 bits

Ao compilar a aplicação para modo nativo 32 bits, a mesma é executada sem nenhum demérito ou perda de
desempenho em uma máquina 64 bits, utilizando uma versão de Windows 64 bits, como por exemplo o Windows
Server 2003 Enterprise x64.
Para execução de aplicações de 32 bits, em Windows 64 bits, o sistema operacional executa a aplicação através
de um subsistema chamado WOW64 (Windows on Windows 64), que realiza a adequação necessária para
executar a aplicação 32 bits de modo transparente para a aplicação, disponibilizando ainda de forma nativa DLLs
específicas do sistema operacional em pasta diferenciada para manter a compatibilidade com programas
compilados e linkeditados para utilização de recursos do sistema operacional Windows em 32 bits.
Para obter mais informações detalhadas, consulte a documentação do suporte Microsoft no endereço: http://support
.microsoft.com/kb/896456/en-us.
Neste ambiente, o sistema operacional permite à aplicação a alocação de 4 GB de memória por processo 32 bits.
Em termos práticos, o teste de carga realizado apresentou falha de alocação de memória quando o processo
do TOTVS | Application Server atingiu 3.4 GB de memória alocada (Tamanho da VM), sendo segura a execução do
aplicativo até os 3.1 GB.

Visão geral - Limites reais de endereçamento com Protheus 8 Server


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

Sistema Operacional Windows XP 32 bits Windows Server 2003 32 Windows Server 2003
bits com /3GB Enterprise Edition x64
SP2

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 3.1 GB

Considerações sobre a plataforma Linux

Existem recursos similares nas plataformas Linux, com versões do Kernel 2.4 e superiores, que permitem
adequações de comportamento similares aos recursos apresentados pelo Windows. No entanto, para obter mais
informações desse recurso e afins, é necessário consultar os documentos que são disponibilizados no pacote de
distribuição Linux.

A TOTVS S/A analisa e testa essas informações nas plataformas homologadas para, posteriormente, incluir essas
características nas versões e distribuições homologadas para uso com o TOTVS | Application Server e TOTVS
| DBAccess.

Você também pode gostar