quinta-feira, julho 02, 2026

Otimização do Buffer Pool

A garantia de alta disponibilidade e o tempo de resposta otimizado dos sistemas de produção exigem o acompanhamento constante dos ativos de memória. Recentemente, a monitoração proativa do ambiente de produção através do utilitário SYSBPM (Natural Buffer Pool Utility) acendeu um alerta de capacidade: os dados históricos acumulados revelaram que o Buffer Pool operava no limite de sua saturação. Para mitigar gargalos operacionais antes que houvesse impacto direto na experiência do usuário final, foi conduzida uma análise aprofundada em conjunto com o suporte do fabricante. Este documento apresenta o diagnóstico técnico inicial, as justificativas para a reestruturação e a solução adotada para expandir a capacidade do ambiente, assegurando a estabilidade das operações.

1. Diagnóstico Inicial do Ambiente

A análise estática realizada diretamente no painel do SYSBPM indicava o seguinte cenário de ocupação de memória: Até o momento da análise, a inicialização do Buffer Pool primário utilizava a seguinte parametrização de 25 MB via JCL:

//* -----------------------------------------------------------------
//*             INICIALIZA O GLOBAL BUFFER POOL DO NATURAL        
//* -----------------------------------------------------------------
//STARTNAT EXEC PGM=NATGBP41,                                        
//   PARM='BPN=NATGBP,S=NAT4,N=(25M,XA,2),R=N'                       
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                              
//SYSUDUMP DD SYSOUT=A                                               
//GBPPRINT DD SYSOUT=A                                               
//SYSPRINT DD SYSOUT=A

Buffer Pool hoje
  12:38:32             ***** NATURAL SYSBPM UTILITY *****             01/06/2026
  BPNAME NATGBP        - General Buffer Pool Statistics -        Type Global Nat
  BPPROP OFF                                                       Loc CPAC NAT4
                                                                                
 Buffer Pool Address ..... 13C63000      Buffer Pool Size (MB) ... 25,00        
  Directory Section ...... 00000400      Directory Entry Size .... 128          
  Text Record Section .... 001A5000      Text Record Size (KB) ... 2            
 Dataspace attached ......                                                      
                                                                                
 Initialization .......... 23:20:13    2025-12-06                               
 Last Refresh ............ 23:20:13    2025-12-06        by User .. NATBPMG4    
                                                                                
  _______________________________ Text Records ______________________________   
          Total          Used   in %      Max Used    Total Size  Avg Usage %   
         11,958        11,785  98,55        11,956    24,135,680        90,47   
               _____________________ Objects ________________________________   
  Space Used %         Loaded           Max Loaded    Total Size  Avg TR Used   
         89,16          2,301                2,777    21,836,723          5,1   
               SumOfUseCounts AvgLifetimeUsed(min)    AvgLifetimeReplace(min)   
                          880                4,643                        804   
                                                                                
 Command ===>                                                                   
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help        Exit  Last        Flip        Load                    Canc

2. Análise Técnica e Parecer do Suporte

A equipe de suporte da Software AG validou os dados e emitiu um parecer técnico que aponta para um cenário crítico de saturação em diferentes camadas. O ponto mais alarmante reside na gestão de Text Records, cujo consumo severo atingiu 98,55%, indicando que a área está praticamente esgotada. O fato de a métrica de uso máximo (Max Used) ter encostado no limite total, somado a uma ocupação média (Avg Usage) constantemente acima de 90%, evidencia que a sobrecarga não decorre de um pico pontual, mas sim de uma pressão operacional contínua. Em termos práticos, essa escassez de espaço força o Natural a descartar componentes em memória, desencadeando um efeito cascata de leituras físicas adicionais no banco de dados ADABAS. Como consequência direta, há uma degradação na performance geral do sistema e uma elevação no tempo de resposta das transações. Paralelamente, a ocupação de objetos também exige atenção, operando atualmente em 89,16%. Embora esse indicador ainda retenha uma margem mínima de manobra, a curva demonstra uma tendência clara de aproximação do seu limite máximo histórico de 2.777 objetos carregados — um fator de peso, considerando que cada objeto consome, em média, 5,1 Text Records. Ao cruzar esses dados com o comportamento dinâmico do ambiente, a análise combinada de Reuse e Lifetime revela que, embora o indicador SumOfUseCounts confirme a reutilização regular dos objetos, o tempo de vida médio antes de uma substituição (AvgLifetimeReplace) é extremamente longo, girando em torno de 13 horas. Em contrapartida, o tempo de uso ativo após a carga (AvgLifetimeUsed) é de apenas 4,6 minutos. Esse descompasso sugere que rotinas ou objetos obsoletos permanecem retidos na memória sem necessidade de uso imediato, estreitando ainda mais o espaço útil disponível e sufocando o ecossistema do Buffer Pool.

3. Plano de Ação e Recomendações

Como estratégia para mitigar a saturação identificada, a equipe de suporte da Software AG recomendou a expansão da capacidade do Buffer Pool em um patamar entre 20% e 50%, condicionada à disponibilidade de memória no ambiente z/OS. Adotando uma postura conservadora dentro dessa margem, optou-se por um acréscimo de 50% sobre os 25 MB originais, totalizando uma nova volumetria de 37 MB para o ambiente. Além do ganho de espaço físico, o parecer técnico sugeriu ações complementares para garantir a eficiência da estrutura, incluindo a revisão de parâmetros de inicialização adjacentes do Natural — como o BPI ou BPSFI — e uma análise detalhada dos padrões de carga das aplicações. Essa última medida visa rastrear o comportamento dos sistemas para identificar possíveis excessos na execução de programas dinâmicos ou o acesso a bibliotecas excessivamente pesadas que possam estar sobrecarregando o Buffer Pool. O que foi melhorado:
Critério Melhoria Aplicada
Fluidez Eliminou os marcadores de tópicos (bullet points).
Coesão Justificou a escolha dos 37 MB encaixando-a logo após a menção da regra de 20% a 50% sugerida pela Software AG.

4. Implementação e Nova Parametrização

Seguindo as diretrizes técnicas, a volumetria do Buffer Pool foi expandida de 25 MB para 37 MB. Vale ressaltar que a efetivação dessa nova configuração em subsistemas globais exige a execução de um IPL (Initial Program Load) ou o procedimento manual de exclusão e recriação do Buffer Pool na região correspondente.
Cenário Configuração do Buffer Pool
Antes da Alteração Configuração Antiga - 25MB
Após a Alteração Nova Otimização - 37MB

5. Próximos Passos e Critérios de Sucesso

Após a alteração do parâmetro de 25 MB para 37 MB no JCL de inicialização, a efetivação dessa nova valor no ambiente ativo dependerá obrigatoriamente da execução de um IPL ou do procedimento controlado de stop/start manual do Buffer Pool. Para efetivar vamos fazer a deletação e a recriação da buffer pool manualmente.

Stop Buffer Pool
//AAFSNATB JOB (AAAC,OSS),DIBD,CLASS=A,MSGCLASS=A                               
//*UQ ALLOW                                                                     
//* --------------------------------------------------------                    
//*               STOP NATURAL GLOBAL BUFFER POOL                               
//* --------------------------------------------------------                    
//STOPNAT  EXEC PGM=NATGBP41,PARM='CF=STOPNAT'                                  
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=*                                                          
//STOPNAT  DD *                                                                 
F,BPN=NATGBP,S=NAT4                                                             
//*

Start Buffer Pool
//AAFSEGBP JOB (AAAC,OSS),DIBD,CLASS=A,MSGCLASS=A                               
//*UQ ALLOW                                                                     
//* --------------------------------------------------                          
//*         START EDITOR GLOBAL BUFFER POOL                                     
//* --------------------------------------------------                          
//STARTNAT EXEC PGM=NATGBP41,                                                   
//   PARM='BPN=NATGBP,S=NAT4,N=(37M,XA,2),R=N'                                  
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=A                                                          
//GBPPRINT DD SYSOUT=A                                                          
//SYSPRINT DD SYSOUT=A

Display do Buffer Pool
//AAFSNATB JOB (AAFP,DIBD),CLAUD,CLASS=S,MSGCLASS=A,TYPRUN=HOLD                 
//*UQ ALLOW                                                                     
//* -----------------------------------------------------------                 
//*           VERIFICAR SE O BUFFER POOL ESTA NO AR                             
//* -----------------------------------------------------------                 
//STARTEDT EXEC PGM=NATGBP41,PARM='CF=STARTEDT'                                 
//STEPLIB  DD DSN=ADA8.LOADLIB,DISP=SHR                                         
//SYSUDUMP DD SYSOUT=*                                                          
//STARTEDT DD *                                                                 
SHOWBP

0 comentários:

Enviar um comentário