Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

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 paging 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 Web, 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 bits com /3GB Windows Server 2003 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.

  • Sem rótulos