| Bellacosa Mainframa apresenta o zBNA |
☕ Um Café no Bellacosa Mainframe
🕸️ zBNA — Antes de Comprar Mais Mainframe, Descubra Quem Está Segurando o Batch
Quando o processamento termina tarde, a primeira pergunta quase nunca deveria ser “quanto de CPU falta?”. A pergunta correta é: “o que, exatamente, está impedindo o batch de terminar antes?”
Existe uma cena clássica em qualquer ambiente corporativo grande.
O processamento noturno atrasou.
O fechamento avançou além da janela esperada.
Algum relatório não ficou pronto.
Uma cadeia de arquivos terminou tarde.
O usuário de negócio começa a reclamar.
Então alguém abre os gráficos.
CPU alta.
Picos.
Jobs longos.
E logo surge a frase inevitável:
“Talvez seja hora de aumentar a máquina.”
Às vezes é.
Mas às vezes essa frase é o equivalente mainframe de olhar para um carro preso no trânsito e concluir:
“Precisamos de um motor maior.”
O motor pode até ser excelente.
O problema é que o carro continua parado atrás dos outros.
É justamente nesse ponto que entra uma ferramenta muito interessante do ecossistema IBM Z:
zBNA — IBM Z Batch Network Analyzer
E o nome já entrega boa parte da filosofia.
Ele não fala apenas em CPU.
Não fala apenas em capacidade.
Não fala apenas em jobs.
Ele fala em:
Batch Network.
Ou seja:
uma rede de processamento.
E essa mudança de visão é profunda.
🧠 1. Para começar: o que é um batch?
Para quem está entrando agora no mundo COBOL, JCL e z/OS, vamos estabelecer uma base.
Um processamento batch é aquele executado normalmente sem interação contínua de um usuário.
Você prepara:
Entrada
↓
Processamento
↓
SaídaNo mainframe, isso muitas vezes aparece na forma de JOBs submetidos ao JES.
Um exemplo extremamente simples:
//BELLJOB JOB ...
//STEP01 EXEC PGM=PROG001
//INFILE DD DSN=EMPRESA.ENTRADA,DISP=SHR
//OUTFILE DD DSN=EMPRESA.SAIDA,DISP=...Esse JOB poderia:
ler um arquivo;
processar registros;
aplicar regras;
gravar resultados.
Agora imagine isso multiplicado por:
10 JOBs
100 JOBs
1.000 JOBs
10.000 JOBsE, pior:
eles não são independentes.
Um depende do outro.
Outro precisa esperar um arquivo.
Outro só pode começar depois da conclusão do predecessor.
Outro executa em paralelo.
Outro trava acesso a um dataset.
Outro espera Db2.
Outro aguarda scheduler.
De repente o batch deixa de ser uma fila.
Ele vira uma rede.
🕸️ 2. A palavra mais importante do zBNA é NETWORK
Vamos imaginar:
JOB B
/ \
JOB A ------ ------ JOB D ------ JOB E
\ /
JOB CIsso já nos diz muito mais do que uma lista:
JOB A
JOB B
JOB C
JOB D
JOB ENo desenho existe informação.
Sabemos que:
JOB A acontece antes;
JOB B e JOB C podem trabalhar em paralelo;
JOB D espera ambos;
JOB E vem depois.
É isso que transforma um batch em uma rede de dependências.
E aqui começa a mágica.
Porque, se B demora 18 minutos e C demora 7, o sistema não espera:
18 + 7Ele espera o mais lento dos dois, assumindo que realmente correm em paralelo.
Então temos:
MAX(18,7)
=
18E isso muda completamente como calculamos o tempo total.
⏱️ 3. O tal do critical path
Essa expressão aparece o tempo inteiro quando falamos de zBNA.
Critical path, ou caminho crítico, é a cadeia de atividades cuja duração determina o término de todo o processo.
Vamos usar o exemplo:
JOB A = 12 min
JOB B = 18 min
JOB C = 7 min
JOB D = 42 min
JOB E = 9 minRede:
JOB B (18)
/ \
JOB A (12) ------ ------ JOB D (42) ------ JOB E (9)
\ /
JOB C (7)O caminho por B é:
12 + 18 + 42 + 9
=
81 minutosO caminho por C é:
12 + 7 + 42 + 9
=
70 minutosPortanto:
A → B → D → Eé o caminho crítico.
Agora observe uma coisa maravilhosa.
Se alguém otimizar JOB C:
7 → 2 minutoso batch inteiro talvez continue terminando em:
81 minutosOu seja:
o programa ficou mais rápido.
O negócio não percebeu.
💡 4. Esse é um dos maiores erros em performance
Programadores e analistas gostam de procurar:
“Qual programa está mais lento?”
Mas esta nem sempre é a pergunta certa.
Pode existir um programa que demora 30 minutos e ainda assim não influencia o horário final.
Exemplo:
JOB X = 30 min
/
-----+
/
JOB A ---------+
\
----- JOB Y = 40 minSe Y for o ramo determinante:
30 → 20no X não muda o fim.
Mas:
40 → 35no Y pode economizar cinco minutos reais.
Logo:
O JOB mais lento não é necessariamente o JOB mais importante.
Isso é puro pensamento de sistema.
🚨 5. E então aparece o gargalo serial
No gráfico que analisamos antes havia um personagem perigosíssimo:
JOB D — SERIAL BOTTLENECK
42 minEsse tipo de etapa merece suspeita imediata.
Porque tudo converge para ela.
JOB B ───┐
├── JOB D ─── JOB E
JOB C ───┘Se D não consegue ganhar muito com paralelismo, adicionar engines pode trazer pouco benefício.
E aqui chegamos a uma ideia fundamental.
Mais capacidade agregada não é o mesmo que mais velocidade para uma etapa serial.
⚙️ 6. Aggregate capacity vs per-engine performance
Imagine duas configurações hipotéticas.
Sistema A
10 engines
cada um = velocidade 100Capacidade agregada aproximada:
1.000 unidadesSistema B
5 engines
cada um = velocidade 200Capacidade agregada também:
1.000 unidadesÀ primeira vista:
“São equivalentes.”
Talvez.
Mas imagine um workload altamente serial.
Ele usa praticamente um engine por vez.
Nesse cenário, o Sistema B poderia se comportar de forma muito diferente porque cada engine individual é mais rápido.
Agora inverta.
Imagine uma carga altamente paralela:
JOB1
JOB2
JOB3
JOB4
JOB5
JOB6
JOB7
JOB8Nesse caso, o número de engines pode ser importantíssimo.
Moral:
capacidade total não conta a história completa.
E é justamente por isso que o sizing precisa conhecer o workload.
🧵 7. Usable parallelism
Essa expressão merece ser guardada.
Você pode comprar:
8 enginesMas o batch talvez só consiga utilizar de forma útil:
2porque:
existem dependências;
datasets ficam serializados;
programas são monothread;
jobs aguardam predecessor;
há contenção;
existem restrições de scheduler;
faltam initiators;
algum recurso compartilhado vira gargalo.
Logo:
engines disponíveis
≠
engines aproveitáveisO que importa é:
usable parallelism
Ou seja:
quanto paralelismo o workload consegue realmente explorar.
🚂 8. Pense como uma ferrovia
Vamos usar uma analogia perfeita para mainframe.
Temos uma ferrovia transportando toneladas de carga.
Você pode melhorar o sistema adicionando:
locomotivas;
vagões;
linhas paralelas;
sinalização melhor;
estações;
trilhos mais rápidos.
Mas imagine que existe este trecho:
======\
====================
======/Tudo precisa passar numa única linha.
Agora você compra dez locomotivas novas.
Resultado:
🚂
🚂
🚂
🚂
🚂
↓
single trackParabéns.
Você aumentou a capacidade potencial.
E criou uma fila mais bonita.
No batch, isso pode acontecer com:
dataset
lock
Db2
scheduler
ENQ
program serial🔎 9. É aqui que o zBNA entra de verdade
O zBNA ajuda a transformar dados coletados do ambiente em uma visão analisável do batch.
Em termos conceituais:
z/OS
↓
SMF
↓
extração
↓
zBNA
↓
visualização
↓
análise
↓
what-ifOu seja:
o ambiente já deixou rastros.
O sistema registrou acontecimentos.
A ferramenta ajuda a reorganizar isso de modo que o analista consiga enxergar:
tempo;
jobs;
steps;
relacionamento;
consumo;
concorrência;
dependências.
É uma espécie de arqueologia operacional.
🧬 10. SMF: a caixa-preta do z/OS
Para o iniciante, SMF pode parecer quase mágico.
SMF significa:
System Management Facilities
O z/OS registra grande quantidade de informações operacionais em registros SMF.
Dependendo do tipo de record, podemos encontrar dados ligados a:
jobs;
steps;
CPU;
datasets;
sort;
recursos;
subsistemas;
dispositivos;
desempenho.
Imagine o SMF como uma enorme caixa-preta.
O avião voou.
Depois analisamos:
altitude
velocidade
motor
temperatura
pressão
eventosNo mainframe:
job
step
CPU
elapsed
I/O
dataset
resourceE daí reconstruímos o que aconteceu.
🧰 11. CP3KEXTR — preparando os dados
O fluxo típico de análise inclui o utilitário de extração que prepara os dados usados pelo zBNA.
Conceitualmente:
SMF
↓
CP3KEXTR
↓
arquivos extraídos
↓
zBNANão é o zBNA simplesmente “entrando no mainframe e olhando tudo ao vivo”.
Existe uma etapa de coleta e preparação.
Isso também é importante porque transforma o trabalho numa análise reproduzível.
Podemos dizer:
“Vamos analisar esta janela.”
Por exemplo:
22:00 → 06:00do fechamento de um dia representativo.
📅 12. Representatividade da janela
E aqui surge um detalhe perigosíssimo.
Imagine que coletamos uma terça-feira calma:
terça
02:00–03:00Depois usamos aquilo para planejar:
Black Friday
fechamento mensal
fim de ano
pico fiscalPodemos produzir gráficos maravilhosos.
E uma conclusão completamente errada.
É o velho:
GARBAGE IN
↓
GARBAGE OUTSó que numa versão elegante:
GARBAGE IN
↓
beautiful charts
↓
PowerPoint
↓
expensive decision😁
Portanto:
qual período estamos analisando?
é tão importante quanto:
qual ferramenta estamos usando?
📊 13. Gantt Chart: quando o tempo finalmente aparece
Um gráfico temporal costuma revelar padrões imediatamente.
Imagine:
TIME → 23:00 00:00 01:00 02:00 03:00
JOB A █████
JOB B █████████
JOB C ████
JOB D ███████████████
JOB E █████Uma tabela poderia ter:
JOB A 11 min
JOB B 22 min
JOB C 9 min
JOB D 47 min
JOB E 13 minMas o gráfico revela relações.
Você consegue enxergar:
concorrência;
buracos;
esperas;
sobreposição;
sequenciamento.
O cérebro humano é excelente em detectar padrão visual.
Por isso esse tipo de visualização é tão poderoso.
🔬 14. Top Programs
Agora trocamos a pergunta.
Antes:
quando?
Agora:
quem?
Quais programas aparecem como consumidores relevantes?
Imagine:
PROG CPU
ACCT001 █████████████
SORT ██████████
PAY021 ███████
REP311 ████Isso pode direcionar uma segunda investigação.
zBNA aponta:
“Olhe aqui.”
Então entram outras ferramentas:
Application Performance Analyzer;
profiling;
análise COBOL;
Db2 EXPLAIN;
SMF;
RMF;
traces.
Ferramenta boa não precisa responder tudo.
Ela precisa responder muito bem à pergunta certa.
☕ 15. Um programador COBOL encontra o zBNA
Imagine que você escreveu:
PERFORM PROCESSA-CLIENTE
UNTIL WS-FIM = 'S'.E alguém lhe diz:
“Seu programa é um dos grandes consumidores.”
Não entre em pânico.
A investigação ainda está começando.
Precisamos descobrir:
CPU?
I/O?
Db2?
VSAM?
SORT?
Loop?
Algoritmo?
Serialização?Talvez seu código execute milhões de vezes uma busca ruim.
Talvez faça:
READ
READ
READ
READ
READquando poderia reorganizar acesso.
Talvez o SQL esteja caro.
Talvez esteja lendo volume enorme sem necessidade.
Talvez nem seja culpa do programa.
Pode estar esperando recurso externo.
⏳ 16. Elapsed time não é CPU time
Isso é obrigatório para qualquer iniciante.
Imagine:
ELAPSED = 40 min
CPU = 8 minEntão existem aproximadamente:
32 minem outras atividades e esperas.
Não significa necessariamente 32 minutos parados, porque há detalhes de medição, concorrência e subsistemas.
Mas a ideia continua válida:
tempo total não é simplesmente CPU.
Se você dobrasse magicamente a velocidade da CPU e reduzisse:
8 → 4o total não cairia automaticamente:
40 → 20Poderia ficar algo próximo de:
36dependendo do restante.
Esse pequeno exemplo destrói muita análise simplista.
💾 17. O fantasma do I/O
COBOL nasceu num mundo intensamente orientado a dados.
Arquivos.
Registros.
Leitura.
Gravação.
Ordenação.
Até hoje isso permanece central.
Imagine:
READ ARQ-CLIENTES
AT END
MOVE 'S' TO WS-FIM
END-READ.Se temos:
150 milhões de registroso comportamento de I/O pode ser tão ou mais importante que CPU.
Portanto:
“CPU nova resolverá?”
depende.
Talvez o JOB passe boa parte do tempo aguardando operações de armazenamento.
Mais CPU não transforma magicamente o storage.
🔐 18. Locks e contenção
Agora imagine Db2.
Dois processos querem trabalhar com o mesmo recurso.
JOB A → LOCK
↓
JOB B → WAITJOB B pode aparecer demorando muito.
Mas ele não está “pensando lentamente”.
Está esperando.
Comprar CPU:
mais CPUnão remove automaticamente:
LOCKPrecisamos analisar:
transação;
concorrência;
commit;
acesso;
sequência;
design.
De novo:
workload behavior.
🚦 19. Scheduling
Outro suspeito.
Imagine:
JOB READY = 01:00
START = 01:17Depois:
RUN = 5 minEle termina:
01:22Alguém vê:
22 mine reclama.
Mas:
17 minforam antes da execução.
Talvez scheduler.
Talvez initiator.
Talvez predecessor.
Talvez recursos.
Talvez classe.
Talvez política.
Se otimizarmos o programa em 50%:
5 → 2,5 mino total vira:
19,5 minAinda ruim.
O grande problema estava fora do código.
🧱 20. Initiators
No JES, initiators desempenham papel importantíssimo na execução batch.
Simplificando:
um JOB elegível precisa encontrar condição para executar.
Imagine:
10 JOBs prontos
2 initiatorsNem todos começam juntos.
Agora:
10 JOBs prontos
10 initiatorsPode haver mais paralelismo.
Mas cuidado.
Mais initiators também podem produzir:
mais concorrência
↓
mais I/O
↓
mais locks
↓
mais CPU
↓
mais contençãoEntão até a solução aparente cria outra pergunta.
Esse é o mainframe:
tudo está conectado.
🧠 21. WLM entra na história
O Workload Manager é outro componente essencial.
WLM trabalha com objetivos e importância dos workloads.
Ele ajuda o z/OS a decidir como distribuir recursos.
Se um workload crítico não está recebendo o tratamento esperado, precisamos investigar.
Não significa que zBNA substitui WLM.
Ao contrário.
Pense assim:
zBNA
↓
mostra comportamento batch
WLM
↓
gerencia recursos conforme políticas
RMF
↓
mostra comportamento do sistemaCada um observa o elefante por um lado.
🔥 22. RMF + zBNA
Uma combinação forte.
Suponha que zBNA mostra:
02:15–02:45
critical pathAgora abrimos RMF e perguntamos:
“O que o sistema estava fazendo exatamente nesse período?”
Podemos correlacionar:
CPU;
DASD;
channels;
memory;
service classes;
LPAR behavior.
Então:
zBNA
“onde olhar”e:
RMF
“o que acontecia no sistema”Essa correlação é muito mais poderosa do que cada relatório isolado.
🧪 23. What-if — o laboratório sem quebrar produção
Uma das ideias mais fascinantes do zBNA é permitir estudos do tipo:
“E se?”
Exemplo:
CURRENT PROCESSOR
↓
workload atualAgora:
Scenario A
Scenario B
Scenario CPodemos investigar configurações alternativas.
Isso é ouro.
Porque o erro clássico é pensar:
machine B = 20% fasterportanto:
batch = 20% fasterNão necessariamente.
Porque:
CPU não é tudo;
serialização existe;
I/O existe;
wait existe;
paralelismo é limitado;
dependências existem.
🧮 24. Lei de Amdahl sem matemática assustadora
A ideia é simples.
Imagine um JOB:
50% paralelizável
50% serialVocê melhora infinitamente a parte paralela.
O máximo teórico fica limitado pelo pedaço serial.
Porque ele nunca desaparece.
Traduzindo para café:
Imagine preparar o café da manhã.
Você pode simultaneamente:
fritar ovo
passar café
cortar pãoMas só pode servir depois que:
CAFÉ TERMINARSe o café demora 10 minutos, não adianta contratar dez pessoas para cortar pão.
O gargalo continua sendo o café.
📈 25. Quando CPU realmente é o gargalo
Importante: não vamos cair no extremo oposto.
Às vezes falta CPU.
E ponto.
Imagine:
CPs saturados
queues
WLM pressure
CPU-bound workloads
critical jobs disputando resourceNesse caso, mais capacidade pode ser exatamente o necessário.
O valor do zBNA não está em provar que hardware é inútil.
Está em responder:
quando o hardware realmente resolverá.
Essa distinção vale milhões.
💰 26. Porque sizing é decisão econômica
Comprar mainframe não é escolher um videogame.
Existe:
hardware;
software;
licenciamento;
capacidade;
crescimento;
suporte;
energia;
risco;
implementação.
E software no IBM Z pode estar relacionado ao consumo e à configuração de formas complexas.
Então capacity planning também é economia.
Imagine:
Opção A
hardware menor
mais otimização
Opção B
hardware maior
menos alteração
Opção C
hardware intermediário
+ scheduling
+ tuningTalvez C seja melhor.
Não porque seja tecnicamente mais poderosa.
Mas porque equilibra:
performance
cost
risk
SLA🔐 27. Criptografia também pode entrar na conversa
Hoje segurança adiciona outra dimensão.
Imagine habilitar encryption de datasets.
Excelente para segurança.
Mas também precisamos entender impacto operacional.
Perguntas:
quanto CPU?
qual workload?
qual janela?
qual dataset?
qual impacto no batch?Essa abordagem é madura.
Não:
“Encryption é cara.”
Nem:
“Encryption não custa nada.”
Mas:
“Vamos medir e modelar este workload.”
🗜️ 28. Compressão
Mesma coisa.
Compressão pode reduzir:
I/O
storage
transfermas pode exigir processamento.
É um balanço.
Se temos um workload I/O-bound, compressão pode ser extremamente interessante.
Se temos CPU pressure enorme, precisamos analisar.
Again:
workload decides.
🧹 29. Sort: o gigante escondido
Em muitos ambientes batch, SORT aparece por toda parte.
Exemplo:
//SORTSTEP EXEC PGM=SORTParece banal.
Mas ordenações gigantes podem consumir recursos importantes.
Imagine:
500 milhões registrosSort pode envolver:
CPU;
memória;
work datasets;
I/O;
temporary storage.
Tecnologias e implementações mais modernas podem mudar bastante o comportamento.
Por isso identificação de candidatos importa.
🔍 30. Top Program não significa Guilty Program
Esse é outro princípio Bellacosa War Room.
Imagine lista:
1. PROG001
2. SORT
3. DB2
4. PROG999O primeiro não é automaticamente culpado.
Pode ser:
um grande consumidor legítimo;
volume necessário;
trabalho útil;
parte não crítica;
workload bem otimizado.
Sempre pergunte:
consume muito por quê?A diferença entre engenharia e caça às bruxas está nessa pergunta.
🧩 31. Critical path pode mudar
Agora entra uma curiosidade deliciosa.
Hoje:
PATH A = 90 min
PATH B = 82 minA é crítico.
Otimizamos:
PATH A = 75 min
PATH B = 82 minAgora B é crítico.
Ou seja:
o gargalo mudou de endereço.
Performance é assim.
Você remove uma pedra.
Descobre outra embaixo.
Por isso:
measure
analyze
optimize
measure againNunca:
optimize
declare victory
go home🕵️ 32. War Room às 03:17
Agora nosso easter egg.
São:
03:17O processamento deveria ter terminado às:
03:00Telefone toca.
Operações entra na ponte.
Aplicação entra na ponte.
Banco entra na ponte.
Storage entra na ponte.
Infra entra na ponte.
Começa:
“CPU está alta.”
Outro diz:
“Db2 está normal.”
Outro:
“Storage não vê nada.”
Outro:
“O job está rodando.”
Bellacosa olha para a cadeia:
JOB A
↓
JOB B
↓
JOB C
↓
JOB DPergunta:
“Quando D começou?”
Resposta:
03:09Pergunta:
“Quando deveria?”
Resposta:
02:41Aí vem a pergunta importante:
“Por que começou 28 minutos tarde?”
Silêncio.
Agora a investigação mudou.
Não estamos mais perguntando:
“Por que D está lento?”
Estamos perguntando:
“Por que D começou tarde?”
Esse detalhe pode economizar horas de War Room.
🔎 33. Performance é detetive, não adivinhação
Um bom analista não chega dizendo:
“É CPU.”
Ele chega perguntando.
Pergunta 1
Qual é o SLA?
Pergunta 2
Qual é o caminho crítico?
Pergunta 3
Onde o atraso nasceu?
Pergunta 4
É CPU ou elapsed?
Pergunta 5
Existe wait?
Pergunta 6
Existe contenção?
Pergunta 7
Existe predecessor?
Pergunta 8
Existe paralelismo utilizável?
Pergunta 9
Uma máquina diferente mudaria aquilo?
Isso é engenharia.
🎯 34. SLA vem antes da tecnologia
Antes de zBNA, CPU, engine, WLM ou SMF, existe uma coisa:
o negócio.
Exemplo:
Batch termina 04:00
SLA = 06:00Talvez tudo esteja maravilhoso.
Outro:
Batch termina 04:00
SLA = 03:30Temos um problema.
Mesma máquina.
Mesmo tempo.
Situação completamente diferente.
Então capacity planning começa perguntando:
“Precisamos terminar quando?”
Não:
“Quanto CPU temos?”
📐 35. Right-sizing
Essa expressão é muito melhor do que:
bigger machineRight-sizing significa:
configuração adequada.
Talvez seja maior.
Talvez tenha engines mais rápidos.
Talvez mais engines.
Talvez mudança de software.
Talvez combinação.
Talvez nenhum hardware novo.
É encontrar equilíbrio.
Performance
+
Cost
+
Growth
+
Risk
+
SLA🧠 36. O programador COBOL deveria aprender isso?
Sim.
Mesmo se nunca operar zBNA.
Porque isso muda a forma de programar.
Você começa a pensar:
meu programa existe numa rede.Ele não está sozinho.
Seu programa pode:
produzir arquivo;
alimentar outro job;
travar dataset;
consumir Db2;
segurar predecessor;
estar no critical path.
Esse entendimento transforma o programador.
Ele deixa de pensar:
“Meu programa terminou.”
E começa a pensar:
“Qual impacto meu programa tem no fluxo inteiro?”
Isso é sair de developer para system thinker.
🏛️ 37. Mainframe é uma cidade
Uma analogia final.
Imagine o mainframe como uma cidade.
CPU são as avenidas.
DASD são depósitos.
Db2 são bibliotecas.
JES é estação de transporte.
Scheduler é controle de tráfego.
WLM é prefeitura.
Jobs são caminhões.
Datasets são carga.
Agora imagine milhares de caminhões.
Você olha congestionamento e diz:
“Vamos construir uma avenida maior.”
Pode resolver.
Mas talvez o problema seja:
ponte interditada
alfândega lenta
semáforo quebrado
depósito fechadoO zBNA ajuda justamente a enxergar o mapa do tráfego.
Não apenas o tamanho da avenida.
🧩 38. O que eu considero mais poderoso no zBNA
Não são os gráficos.
Não é nem o what-if.
É a mudança de pergunta.
Antes:
“Precisamos de mais capacidade?”
Depois:
“Que característica deste workload está determinando nosso tempo?”
Essa é uma pergunta muito mais rica.
Dela podem nascer respostas diferentes:
CPU
I/O
parallelism
scheduling
contention
application
hardwareE cada resposta pede tratamento diferente.
🚀 39. Um método Bellacosa Mainframe para zBNA
Eu resumiria numa sequência prática.
1. Defina o SLAQual processo precisa terminar quando?
2. Escolha uma janela representativaNão escolha terça tranquila para modelar fechamento mensal.
3. Colete evidênciaUse SMF adequado.
4. Monte a redeObserve jobs, steps e dependências.
5. Encontre o critical pathQuem segura o relógio?
6. Classifique o atrasoCPU?
I/O?
Wait?
Schedule?
Contention?
7. Verifique paralelismoQuanto a aplicação realmente consegue usar?
8. Faça what-ifO que muda com processor/configuration diferente?
9. Considere custoHardware e software.
10. ValideNenhum modelo substitui produção.
🥚 40. Easter egg para quem chegou até aqui
Olhe novamente:
03:17Se você viu esse horário e lembrou da War Room, parabéns.
Você encontrou o easter egg.
Mas a mensagem escondida é outra.
Na maioria dos incidentes longos, existe um momento em que alguém finalmente faz a pergunta correta.
Até aquele momento:
everyone has dataDepois:
someone has contextE essa talvez seja a verdadeira função de ferramentas como zBNA:
transformar dado em contexto.
🏁 Conclusão
zBNA — IBM Z Batch Network Analyzer — é muito mais interessante quando deixamos de enxergá-lo como “uma ferramenta de sizing”.
Ele é uma ferramenta para compreender comportamento.
E compreender comportamento vem antes de dimensionar infraestrutura.
O raciocínio completo é:
business process
↓
batch window
↓
job network
↓
critical path
↓
resource behavior
↓
parallelism
↓
what-if
↓
processor sizing
↓
business decisionIsso muda a ordem da conversa.
A discussão deixa de começar por:
“Qual máquina comprar?”
e passa a começar por:
“O que realmente está determinando o tempo do nosso processamento?”
Às vezes a resposta será:
CPU.
Às vezes:
I/O.
Às vezes:
scheduler.
Às vezes:
dataset.
Às vezes:
Db2.
Às vezes:
um programa COBOL escrito há vinte anos que está fazendo exatamente aquilo que mandaram ele fazer.
E essa é a beleza.
O mainframe não é uma caixa preta.
Ele deixa rastros.
O bom analista aprende a lê-los.
Então, da próxima vez que alguém disser:
“Precisamos de um mainframe maior.”
talvez valha responder:
“Antes de aumentar o mainframe, vamos descobrir quem está segurando o relógio.”
Porque performance não começa no catálogo do processador.
Começa no workload.
E o workload sempre tem uma história para contar.
Sem comentários:
Enviar um comentário