☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

terça-feira, 9 de julho de 2019

🐗 ASTERIX, OBELIX E O CAPACITY PLANNING DA ALDEIA QUE RESISTIA AOS INCIDENTES

 

Bellacosa Mainframe capacity planning

☕ Um Café no Bellacosa Mainframe

🐗 ASTERIX, OBELIX E O CAPACITY PLANNING DA ALDEIA QUE RESISTIA AOS INCIDENTES

COBOL, SMF, RMF, WLM, CICS, Db2, MQ, CPU, I/O, filas, latência, observabilidade, performance, forecasting — e o dia em que Obelix descobriu que capacidade infinita só existe para quem caiu no caldeirão quando era pequeno.



🎬 PRÓLOGO — TODA A GÁLIA ESTÁ OCUPADA...

Estamos no ano 50 antes de Cristo.

Toda a Gália foi ocupada pelos romanos.

Toda?

Não!

Uma pequena aldeia povoada por irredutíveis gauleses ainda resiste ao invasor.

Séculos depois, algo muito parecido acontece dentro de um enorme datacenter.

Toda a empresa foi tomada por containers, microsserviços, Kubernetes, APIs, dashboards coloridos e aplicações distribuídas.

Toda?

Não!

No centro do datacenter existe uma pequena — bem, pequena é modo de dizer — plataforma que continua processando milhões de transações.

O mainframe.

Na entrada dessa aldeia digital encontramos um jovem programador COBOL.

Ele olha assustado para uma tela do SDSF.

CPU UTILIZATION = 92%

Ele arregala os olhos.

— Asterix! Temos um incidente! A CPU está em 92%!

Asterix observa tranquilamente.

Obelix chega carregando dois javalis e pergunta:

— Podemos bater nos romanos?

— Ainda não, Obelix.

Panoramix aparece segurando uma concha de sua poção mágica.

Ele olha para o jovem programador e pergunta:

— 92% de quê? Durante quanto tempo? Para qual workload? Em qual LPAR? Qual era o volume de transações? Qual era o objetivo definido no WLM? Houve fila? O SLA foi violado?

Silêncio.

O jovem programador olha novamente para a tela.

Naquele momento começa nossa aventura.

Porque um número sem contexto não é diagnóstico.



🏛️ CAPÍTULO 1 — A ALDEIA CHAMADA z/OS

Imagine o z/OS como nossa aldeia gaulesa.

Dentro dela existem muitos moradores:

                    ALDEIA z/OS

       ┌─────────────────────────────┐
       │                             │
       │   COBOL      CICS           │
       │                             │
       │   Db2        IMS            │
       │                             │
       │   MQ         VSAM           │
       │                             │
       │   JES2       USS            │
       │                             │
       │   RACF       WLM            │
       │                             │
       └─────────────────────────────┘

Todos compartilham recursos.

CPU.

Memória.

I/O.

DASD.

Canais.

Filas.

Locks.

Cada workload possui características diferentes.

Uma transação de cartão precisa responder rapidamente.

Um relatório pode esperar um pouco.

Um batch de fechamento talvez possa consumir enormes quantidades de recursos durante a madrugada.

O primeiro erro do jovem Padawan COBOL é imaginar que o mainframe executa apenas seu programa.

Não.

Seu programa vive dentro de um ecossistema.

E performance é consequência da interação entre essas partes.



🔭 CAPÍTULO 2 — ASTERIX DESCOBRE A OBSERVABILIDADE

Certo dia, chega uma mensagem:

“O sistema está lento.”

Essa talvez seja uma das frases mais perigosas da informática.

Asterix pergunta:

— Qual sistema?

— O sistema.

— Qual transação?

— Todas.

— Desde quando?

— Hoje.

Isso não é diagnóstico.

Isso é o início de uma investigação.

Monitoramento normalmente responde perguntas conhecidas:

CPU está alta?

CICS está UP?

Db2 está disponível?

MQ está funcionando?

Há espaço em DASD?

Observabilidade vai além.

Ela permite investigar:

Por que o comportamento mudou?

Imagine:

Response Time

  ↑
2s|                       ███
  |                     ██   ██
1s|____________________█       █____
  |
  +--------------------------------→ tempo
                         14:32

O monitoramento diz:

ALERTA:

Response Time > 2 segundos

Ótimo.

Agora Asterix pergunta:

POR QUÊ?

E abre-se um exército de suspeitos:

                   LENTIDÃO
                      │
       ┌──────────────┼──────────────┐
       │              │              │
      CPU            Db2            I/O
       │              │              │
      WLM           LOCK             DASD
       │              │              │
     CICS             MQ            REDE
       │              │              │
   STORAGE          FILA           CÓDIGO

Observabilidade existe para transformar esses suspeitos em evidências.



🧙 CAPÍTULO 3 — PANORAMIX E OS INGREDIENTES DA POÇÃO

Panoramix explica que uma boa observabilidade possui ingredientes.

Os três famosos são:

METRICS
LOGS
TRACES

Mas na aldeia do z/OS podemos acrescentar uma enorme quantidade de registros e eventos operacionais.

Temos:

SMF
RMF
SYSLOG
OPERLOG
JES
SDSF
CICS logs
Db2 traces
MQ events
RACF records

Panoramix coloca tudo no caldeirão.

Obelix tenta beber.

— Você não, Obelix!

O objetivo não é simplesmente acumular dados.

Esse é um ponto fundamental.

Uma empresa pode armazenar terabytes de logs e ainda possuir péssima observabilidade.

Observabilidade não significa:

“Tenho muitos dados.”

Significa:

“Consigo utilizar esses dados para compreender o comportamento do sistema.”



📜 CAPÍTULO 4 — SMF, O ESCRIBA DA ALDEIA

Toda boa aldeia precisa de alguém registrando o que aconteceu.

No z/OS existe um mecanismo extremamente importante:

System Management Facilities — SMF.

Imagine um escriba sentado no centro da aldeia.

Passa um job.

Ele anota.

Um workload consome recursos.

Ele registra.

Um subsistema executa determinada atividade.

Outro registro pode ser produzido.

Simplificando bastante:

        z/OS
          │
   ┌──────┼───────┐
   │      │       │
 JOBS    CPU     I/O
   │      │       │
 CICS    Db2      MQ
   │      │       │
   └──────┼───────┘
          ▼
         SMF
          │
          ▼
       RECORDS
          │
          ▼
       ANÁLISE

Existem numerosos tipos e subtipos de registros.

O iniciante frequentemente pergunta:

— Preciso decorar todos?

Não.

Asterix responde:

— Primeiro aprenda qual pergunta você está tentando responder.

Essa é uma excelente regra de performance.

Não comece pela ferramenta.

Comece pela pergunta.


📊 CAPÍTULO 5 — RMF E O ESCUDO DE ASTERIX

Se SMF registra uma enorme quantidade de acontecimentos, o Resource Measurement Facility — RMF ajuda a observar recursos e comportamento do sistema.

Pense no RMF como o painel de instrumentos da aldeia.

                    RMF
                     │
       ┌─────────────┼─────────────┐
       │             │             │
      CPU          STORAGE        I/O
       │             │             │
      WLM          PAGING       DEVICES
       │                           │
       └─────────────┬─────────────┘
                     ▼
                 PERFORMANCE

Agora encontramos outra armadilha.

CPU em 90% não significa automaticamente problema.

CPU em 30% também não significa automaticamente ambiente saudável.

A pergunta correta é:

O workload está conseguindo cumprir seus objetivos?

Podemos ter 90% de CPU com excelentes tempos de resposta.

E podemos ter 30% de CPU enquanto determinada aplicação sofre esperando locks, I/O ou algum recurso externo.

Performance exige contexto.


🚦 CAPÍTULO 6 — WLM, O ABRACURCIX DOS WORKLOADS

Abracurcix, o chefe da aldeia, possui um problema.

Todo mundo quer alguma coisa.

O ferreiro quer trabalhar.

O peixeiro quer vender peixe.

Obelix quer javalis.

Asterix precisa expulsar os romanos.

E o bardo Assurancetourix quer cantar.

Este último talvez possa esperar.

No z/OS temos problema semelhante.

Diferentes workloads disputam recursos.

Entra o Workload Manager — WLM.

Simplificando:

                 RECURSOS
                    │
                   WLM
                    │
       ┌────────────┼────────────┐
       │            │            │
     ONLINE       BATCH      RELATÓRIO
       │            │            │
   importante    importante    pode esperar

WLM trabalha com conceitos como:

  • service classes;

  • goals;

  • importance;

  • periods;

  • workloads.

Não pense nele simplesmente como uma tabela fixa de prioridades.

A ideia é muito mais interessante:

gerenciar recursos procurando atender objetivos de serviço definidos para os workloads.

Isso aproxima tecnologia de negócio.


⏱️ CAPÍTULO 7 — OBELIX DESCOBRE QUE RESPONSE TIME NÃO É CPU TIME

Chega uma transação demorando:

1.800 ms

Obelix declara:

— O COBOL gastou 1,8 segundo!

Panoramix quase deixa cair o caldeirão.

Não necessariamente.

Response time pode conter diversos componentes.

Didaticamente:

RESPONSE TIME
     │
     ├── CPU
     ├── I/O Wait
     ├── Db2 Wait
     ├── Lock Wait
     ├── Queue
     ├── Dispatch Delay
     ├── Network
     └── outros tempos

Imagine:

Response Time ........ 1800 ms

CPU ..................  110 ms
Db2 ..................  420 ms
I/O ..................  260 ms
Lock .................. 650 ms
Queue/Dispatch ........ 260 ms
Network ............... 100 ms

Nosso COBOL efetivamente consumiu apenas uma parcela daquele tempo.

Se o programador passar uma semana tentando economizar 10 ms de CPU enquanto existem 650 ms relacionados a lock, ele está atacando o romano errado.


🕵️ CAPÍTULO 8 — ASTERIX INVESTIGA O INCIDENTE

Asterix cria um método:

SINTOMA
   ↓
ESCOPO
   ↓
MÉTRICAS
   ↓
CORRELAÇÃO
   ↓
HIPÓTESE
   ↓
EVIDÊNCIA
   ↓
CAUSA
   ↓
CORREÇÃO
   ↓
VALIDAÇÃO

Recebemos:

“CICS está lento.”

Primeira pergunta:

Desde quando?

Depois:

Todas as transações?

Depois:

Uma região?

Um programa?

Uma API específica?

Uma LPAR?

Um horário?

Agora correlacionamos.

14:00 normal

14:15 deploy

14:20 Db2 calls ↑

14:22 I/O ↑

14:25 Response Time ↑

14:30 reclamações

De repente temos uma história.

Isso é muito mais útil do que observar cinco dashboards isoladamente.


🧮 CAPÍTULO 9 — O JAVALI PRECISA DE DENOMINADOR

Obelix comeu ontem:

10 javalis

Hoje:

13 javalis

Asterix anuncia:

— Seu consumo aumentou 30%!

Matematicamente correto.

Mas imagine que ontem Obelix enfrentou 100 romanos e hoje enfrentou 200.

Precisamos de contexto.

No mainframe:

CPU ontem = 1000 segundos

CPU hoje = 1300 segundos

Parece pior.

Mas:

Ontem:
1.000.000 transações

Hoje:
1.500.000 transações

Então precisamos analisar também algo como:

CPU / transação

Apesar de a CPU total ter aumentado, o custo por transação pode ter diminuído.

Essa ideia é poderosíssima.

Podemos acompanhar:

CPU / transaction
CPU / customer
CPU / order
CPU / batch record
I/O / transaction
SQL / transaction
messages / transaction

Estamos aproximando a linguagem técnica da linguagem do negócio.


💾 CAPÍTULO 10 — OBELIX E OS QUATRO MILHÕES DE EXCPS

Nosso jovem COBOL escreve:

PERFORM UNTIL WS-EOF = 'S'
    READ ARQUIVO
    ...
END-PERFORM.

Funciona.

Então ele pergunta:

— Está bom?

Asterix responde:

— Quantos registros?

10.000?

10.000.000?

1.000.000.000?

E como eles são acessados?

Sequencialmente?

Aleatoriamente?

VSAM?

Db2?

Qual é o comportamento de buffers?

Qual é o padrão de I/O?

Compare:

PROGRAMA A

CPU ........ 40 segundos
EXCP ....... 80.000

com:

PROGRAMA B

CPU ........ 45 segundos
EXCP ....... 4.000.000

Olhando somente CPU, parecem próximos.

Olhando I/O, descobrimos dois animais completamente diferentes.


🗄️ CAPÍTULO 11 — O ROMANO ESCONDIDO DENTRO DO Db2

Considere:

EXEC SQL
   SELECT NOME,
          SALDO
     INTO :WS-NOME,
          :WS-SALDO
     FROM CLIENTE
    WHERE CPF = :WS-CPF
END-EXEC.

O COBOL parece inocente.

Mas por trás podem existir:

INDEX
ACCESS PATH
BUFFER POOL
GETPAGE
I/O
LOCK
SORT
STATISTICS
CONCURRENCY

Por isso:

PROGRAMA LENTO

não significa automaticamente:

COBOL LENTO

Talvez o access path tenha mudado.

Talvez a tabela tenha crescido.

Talvez existam estatísticas inadequadas.

Talvez tenhamos lock contention.

O programador COBOL moderno precisa aprender a enxergar além do código COBOL.


📬 CAPÍTULO 12 — O CORREIO DE OBELIX CHAMADO MQ

Imagine IBM MQ.

Produtor:

5.000 mensagens/s

Consumidor:

4.500 mensagens/s

Tudo está UP.

Queue Manager funcionando.

Channels funcionando.

Aplicações funcionando.

Mas temos:

+500 mensagens/s

acumulando.

Depois de uma hora:

500 × 3600
=
1.800.000 mensagens

Nada necessariamente “caiu”.

Mesmo assim temos um incidente em formação.

Por isso não basta perguntar:

MQ está UP?

Precisamos observar também:

Queue Depth
Arrival Rate
Consumption Rate
Oldest Message Age
Retries
DLQ
Latency
Channel Status

Essa é uma das diferenças entre disponibilidade e observabilidade.


🌙 CAPÍTULO 13 — A BATALHA DA JANELA BATCH

Quando a aldeia dorme, começam os jobs.

22:00 ─────────────────────── 06:00

            BATCH WINDOW

Hoje:

JOB A  22:00 → 23:00

JOB B  23:00 → 01:30

JOB C  01:30 → 03:00

JOB D  03:00 → 04:30

Tudo perfeito.

Mas o negócio cresce 10% ao mês.

Pouco a pouco:

Mês 1   █████████████

Mês 2   ███████████████

Mês 3   █████████████████

Mês 4   ████████████████████

Até que:

BATCH ────────────────────────→
                         │
                         ▼
                    06:00 ONLINE

A janela estourou.

E é aqui que aparece nosso terceiro personagem:

Capacity Planning.


🔮 CAPÍTULO 14 — PANORAMIX NÃO TEM POÇÃO DE CAPACIDADE INFINITA

Capacity Planning não significa esperar CPU chegar a determinado percentual e comprar uma máquina maior.

A pergunta correta é:

Com a capacidade atual, crescimento previsto, perfil dos workloads e objetivos de serviço, durante quanto tempo conseguiremos atender a demanda de maneira sustentável?

Precisamos combinar:

CAPACIDADE ATUAL
       +
UTILIZAÇÃO
       +
CRESCIMENTO
       +
SAZONALIDADE
       +
NOVAS APLICAÇÕES
       +
ROADMAP
       +
EFICIÊNCIA
       +
OBJETIVOS DE SERVIÇO
       =
CAPACITY PLANNING

Isso muda completamente a conversa.


📈 CAPÍTULO 15 — QUAL É O NORMAL DA ALDEIA?

Antes de detectar uma anomalia, precisamos conhecer o normal.

Chamamos isso de baseline.

Imagine:

00h   ███

02h   █████████████

04h   ██████████

06h   ████

10h   ████████

12h   ███████████

18h   █████

22h   █████████

CPU alta às 02:00 pode ser completamente normal.

Talvez seja fechamento diário.

Então:

alto não significa anormal.

E:

baixo não significa saudável.

Baseline nos permite perguntar:

Esse comportamento é esperado para esse workload, nesse horário, nesse dia e com esse volume?


🎄 CAPÍTULO 16 — OS ROMANOS ATACAM NA BLACK FRIDAY

Médias podem ser perigosas.

Imagine:

CPU média diária = 55%

Parece confortável.

Mas escondemos:

00h ───────────────────────────── 24h

30%  35%  40%  98%  99%  35%  30%
               ↑─────↑
               PEAK

Se essas duas horas representam o horário crítico de Black Friday, a média de 55% é praticamente inútil para entender o risco.

Capacity Planning precisa conhecer:

peak hour
peak interval
peak day
sazonalidade
eventos especiais

O mesmo ocorre com latência.

Uma média:

300 ms

pode esconder:

P50 = 180 ms
P95 = 900 ms
P99 = 4,8 s

Para uma pequena parcela dos clientes, o sistema pode estar terrível enquanto a média continua bonita.


💰 CAPÍTULO 17 — ASTERIX DESCOBRE QUE MILISSEGUNDO VALE DINHEIRO

Antes:

CPU / transaction = 8 ms

Depois da otimização:

CPU / transaction = 6 ms

Economizamos:

2 ms

Obelix ri.

— Dois milissegundos?

Agora multiplicamos por:

100.000.000 transações/mês

Temos:

0,002 × 100.000.000
=
200.000 CPU seconds

Aproximadamente:

55,6 CPU hours

Agora Obelix para de rir.

Em sistemas de enorme escala:

pequenas economias multiplicadas milhões de vezes deixam de ser pequenas.

Performance também possui dimensão econômica.


🚨 CAPÍTULO 18 — UTILIZAÇÃO NÃO É SATURAÇÃO

Imagine a taberna gaulesa.

Existem 20 mesas.

18 estão ocupadas.

Utilização = 90%

Mas ninguém espera.

Agora temos:

20 mesas ocupadas

+ 40 gauleses esperando

O recurso está saturado.

Essa distinção é essencial.

Utilização pergunta:

Quanto do recurso está sendo utilizado?

Saturação pergunta:

Existe trabalho esperando porque o recurso não consegue atendê-lo imediatamente?

Por isso investigamos:

queues
waits
contention
paging
locks
dispatch delay
I/O contention

Um gráfico de utilização sozinho nunca conta toda a história.


🚗 CAPÍTULO 19 — PANORAMIX APRESENTA LITTLE'S LAW

Panoramix escreve numa pedra:

L = λW

Obelix pergunta:

— Isso é receita de poção?

Quase.

Onde:

L = quantidade média de itens no sistema
λ = taxa média de chegada
W = tempo médio no sistema

Se recebemos:

500 transações/s

e cada uma permanece em média:

0,2 s

temos aproximadamente:

L = 500 × 0,2

L = 100

Cerca de 100 transações estão presentes simultaneamente nesse modelo simplificado.

Essa pequena equação conecta três conceitos fundamentais:

VOLUME
  │
  ▼
CONCORRÊNCIA
  │
  ▼
LATÊNCIA

Bem-vindo à teoria das filas.


🧪 CAPÍTULO 20 — O INCIDENTE DOS 100.000 SELECTS

Agora vamos juntar tudo.

Às 09:00:

Response Time = 250 ms

Às 10:30:

Response Time = 1800 ms

Asterix investiga.

CPU?

Normal.

Storage?

Normal.

I/O?

Um pouco maior.

Db2?

Espera aumentou.

Qual SQL?

Encontramos uma consulta disparando milhares de vezes.

E então descobrimos:

DEPLOY = 10:15

Alguém alterou:

PERFORM 100000 TIMES

    EXEC SQL
       SELECT ...
    END-EXEC

END-PERFORM.

Agora conseguimos construir uma narrativa causal:

DEPLOY
   ↓
ALTERAÇÃO COBOL
   ↓
MAIS SQL
   ↓
MAIS Db2 CALLS
   ↓
MAIS I/O
   ↓
MAIS CONTENÇÃO
   ↓
MAIOR RESPONSE TIME
   ↓
SLA VIOLADO

Isso é observabilidade.

Não:

CPU = 63%

Mas:

uma cadeia de evidências explicando o comportamento do serviço.


🧬 CAPÍTULO 21 — PERFORMANCE ENTRA NO CI/CD

E por que esperar produção?

Nosso pipeline poderia evoluir:

Git
 │
 ▼
Build
 │
 ▼
Unit Test
 │
 ▼
Integration Test
 │
 ▼
Performance Test
 │
 ▼
Baseline Comparison
 │
 ▼
Quality Gate
 │
 ▼
Deploy
 │
 ▼
Observability

Imagine:

VERSÃO ATUAL

CPU/transação = 4,1 ms

Nova versão:

CPU/transação = 5,8 ms

Funcionalmente:

PASS

Mas performance:

+41%

Precisamos pelo menos investigar antes de produção.

Essa é uma mudança cultural enorme.

Performance deixa de ser assunto apenas do pessoal que aparece depois do incidente.

Passa a fazer parte do ciclo de engenharia.


🤖 CAPÍTULO 22 — O DRUIDA DIGITAL: AIOps

Agora imagine décadas de dados operacionais.

SMF.

RMF.

CICS.

Db2.

MQ.

Logs.

Eventos.

Temos material excelente para:

Anomaly Detection
Forecasting
Correlation
Pattern Recognition
Capacity Forecast
Incident Clustering
Change Analysis

Uma IA não precisa simplesmente avisar:

CPU > 90%

Isso um threshold consegue fazer.

Algo mais interessante seria:

“Esse comportamento está significativamente diferente do baseline histórico desse workload para quintas-feiras entre 14:00 e 15:00.”

Melhor ainda:

CPU ........ comportamento normal

Db2 ........ comportamento normal

CICS ....... comportamento normal

MQ Depth ... +317% sobre baseline

Agora temos uma pista relevante.


🧭 CAPÍTULO 23 — OS QUATRO SINAIS DA ALDEIA

Para o jovem programador COBOL, podemos começar com quatro perguntas.

Latency

Quanto demora?

CICS response time
Db2 elapsed
MQ latency
batch elapsed
API response

Traffic

Quanto trabalho está chegando?

TPS
transactions
messages/sec
records
SQL calls
requests

Errors

Quanto está falhando?

ABEND
SQLCODE
CICS errors
MQ failures
JCL failures
timeouts

Saturation

Estamos chegando ao limite?

CPU
storage
I/O
queues
locks
paging
WLM delays

Sempre que receber:

“Está lento.”

Pense nesses quatro grupos.


🪜 CAPÍTULO 24 — O CAMINHO DO PADAWAN COBOL

Eu estudaria performance em camadas.

Nível 1 — aplicação

COBOL
JCL
CICS
Db2
VSAM
MQ

Entenda primeiro aquilo que está executando.

Nível 2 — métricas

CPU
Elapsed
EXCP
Response Time
Transactions
Throughput

Aprenda a medir.

Nível 3 — plataforma

SMF
RMF
SDSF
WLM

Aprenda de onde vêm as evidências.

Nível 4 — investigação

baseline
correlation
bottleneck
contention
queue
wait

Aprenda a encontrar relações.

Nível 5 — capacidade

trend
forecast
growth
peak
saturation
headroom

Aprenda a olhar para amanhã.

Nível 6 — enterprise

APM
OpenTelemetry
dashboards
AIOps
hybrid cloud
business observability

Agora você consegue acompanhar uma jornada atravessando plataformas.


🗺️ CAPÍTULO 25 — PASSO A PASSO PARA INVESTIGAR “ESTÁ LENTO”

Guarde este pequeno roteiro.

Quando alguém disser:

“O sistema está lento.”

Não saia alterando COBOL.

Pergunte:

Passo 1 — Quando começou?

Determine intervalo.

Passo 2 — Qual é o escopo?

Uma transação?

Uma aplicação?

Uma região CICS?

Todos os usuários?

Passo 3 — O volume mudou?

Compare TPS, registros, mensagens ou usuários.

Passo 4 — O que mudou?

deploy
configuração
Db2
JCL
WLM
rede
infraestrutura
volume

Passo 5 — Separe CPU de elapsed time.

Não trate os dois como sinônimos.

Passo 6 — Procure waits.

I/O
Db2
lock
MQ
queue
dispatch

Passo 7 — Compare com baseline.

Pergunte:

Isso já aconteceu nesse horário?

Passo 8 — Correlacione eventos.

Procure o primeiro indicador que mudou.

Passo 9 — Forme uma hipótese.

Não uma opinião.

Uma hipótese testável.

Passo 10 — Valide.

Depois da correção, compare novamente as métricas.

Sem validação, você não sabe se realmente resolveu.


🐗 CAPÍTULO 26 — CURIOSIDADES DA ALDEIA

Curiosidade 1

Mainframes historicamente geram uma quantidade extraordinária de telemetria operacional.

A dificuldade muitas vezes não é conseguir informação.

É transformá-la em conhecimento.

Curiosidade 2

Um programa pode utilizar menos CPU e ainda ficar mais lento.

Basta aumentar tempo de espera.

Curiosidade 3

Um sistema pode estar 100% disponível e operacionalmente doente.

A fila MQ crescendo continuamente é um excelente exemplo.

Curiosidade 4

Otimização local pode piorar o sistema global.

Aumentar paralelismo pode diminuir o elapsed de um batch enquanto prejudica outros workloads.

Curiosidade 5

A média pode esconder justamente os clientes que estão sofrendo.

Por isso percentis e distribuição são tão interessantes.


🥚 EASTER EGG — O INCIDENTE DAS 03:17

Certa madrugada, exatamente:

03:17

o alarme dispara.

Obelix corre para a sala:

— ROMANOS!

Não.

CPU normal.

CICS normal.

Db2 normal.

MQ normal.

Mesmo assim o batch está atrasado.

Asterix investiga.

Descobre que um pequeno job aparentemente insignificante atrasou.

Ele era predecessor de outro.

Que era predecessor de outro.

Que era predecessor de 47 outros jobs.

O pequeno job consumia quase nada.

Mas estava no critical path.

Moral do Easter Egg:

O componente que mais consome recursos nem sempre é o componente mais importante para a performance do serviço.

Às vezes um job de poucos segundos possui impacto maior no negócio do que outro que consome horas de CPU.

E sim...

03:17.

Quem acompanha o Bellacosa Mainframe já deveria desconfiar desse horário.


🏁 EPÍLOGO — POR TUTATIS, NÃO É SÓ CPU!

Depois de meses de treinamento, nosso jovem programador recebe novamente:

CPU = 92%

Obelix pergunta:

— Não vai abrir incidente?

O programador responde:

— Ainda não.

Asterix sorri.

O jovem continua:

— Quero saber qual workload está utilizando essa CPU, qual era o volume naquele intervalo, como está o response time, se existe saturação, como estão os goals do WLM, se houve mudança no comportamento de CICS, Db2, MQ ou I/O e como isso se compara ao baseline.

Panoramix sorri.

O treinamento funcionou.

Porque agora ele compreendeu:

OBSERVABILIDADE
       │
       ▼
O QUE ESTÁ ACONTECENDO?
       │
       ▼
PERFORMANCE
       │
       ▼
POR QUE ESTÁ ACONTECENDO?
       │
       ▼
CAPACITY PLANNING
       │
       ▼
O QUE PODERÁ ACONTECER?
       │
       ▼
ENGENHARIA
       │
       ▼
O QUE FAREMOS ANTES?

Essa última pergunta talvez seja a mais importante de todas.

Um ambiente imaturo descobre falta de capacidade quando produção começa a sofrer.

Um ambiente maduro observa tendências.

Um engenheiro de performance procura gargalos.

Um Capacity Planner projeta crescimento.

E uma organização verdadeiramente observável consegue relacionar:

INFRAESTRUTURA
      +
APLICAÇÃO
      +
WORKLOAD
      +
EXPERIÊNCIA
      +
NEGÓCIO

Não queremos descobrir durante a Black Friday que o sistema precisava de mais capacidade.

Não queremos descobrir durante o fechamento que nossa janela batch deixou de caber na madrugada.

Não queremos descobrir depois de milhões de mensagens acumuladas que nossos consumidores MQ eram mais lentos que os produtores.

Queremos descobrir tudo isso meses antes.

Talvez numa terça-feira tranquila.

CPU em 63%.

CICS respondendo perfeitamente.

Db2 saudável.

MQ vazio.

Nenhum ABEND.

Nenhum romano à vista.

Asterix sentado sob uma árvore.

Obelix assando um javali.

E Panoramix olhando silenciosamente para um gráfico aparentemente inocente que mostra:

Capacity
100% |                         X
     |                       /
 80% |                    __/
     |                 __/
 60% |              __/
     |           __/
 40% |__________/
     |
     +----------------------------→ tempo
        HOJE             +8 meses

Ele aponta para o futuro e diz:

— É ali que teremos um problema.

Obelix olha para o gráfico.

Depois olha para o caldeirão.

— Então precisamos fazer mais poção?

Panoramix responde:

— Não, Obelix.

— Precisamos fazer Capacity Planning.

E enquanto toda a empresa continua discutindo se mainframe é antigo ou moderno, nossa pequena aldeia continua processando bilhões de transações.

Porque capacidade não é magia.

Performance não é chute.

Observabilidade não é um dashboard cheio de gráficos.

E um verdadeiro engenheiro de mainframe não espera os romanos chegarem aos portões para começar a contar quantos são.

Por Tutatis! Meça primeiro. Correlacione depois. Planeje antes. ☕🐗🖥️

☕ Gostou deste café?
Siga o Bellacosa Mainframe e acompanhe os próximos artigos.
SEGUIR O BLOG

Sem comentários:

Enviar um comentário

De Fã para Fã. Conteúdo não oficial produzido como homenagem, comentário, análise ou paródia. Personagens, marcas e obras eventualmente mencionados pertencem aos seus respectivos titulares.
Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...