sábado, 6 de abril de 2013

📉 Como Caçar MIPS Desperdiçado IBM Mainframe COBOL

 


📉 Como Caçar MIPS Desperdiçado

IBM Mainframe COBOL – Manual do Caçador de Custos para Padawans

“MIPS não somem sozinhos.
Alguém os está queimando.”


🧠 Antes de Tudo: O que é MIPS (na vida real)

  • MIPS = dinheiro

  • Não é performance “bonita”

  • É CPU faturada

  • Batch ruim = fatura triste 😭

☑️ Um programa pode estar correto
☑️ E ser financeiramente criminoso


🐘 Onde os MIPS se Escondem (Mapa do Crime)

ÁreaCrime comum
COBOLMOVE inútil, PERFORM em loop
SORTSort desnecessário
DB2Fetch linha a linha
I/OLeitura registro a registro
JCLClasses erradas
CompilaçãoParâmetro errado


🧪 1. O Maior Vilão: LOOP INÚTIL

🔥 Sintoma

  • CPU alto

  • Pouca E/S

  • Tempo absurdo

💀 Crime clássico

PERFORM 1000000 TIMES MOVE WS-A TO WS-B END-PERFORM

🛠️ Cura Bellacosa™

  • Elimine MOVE redundante

  • Tire código de dentro do loop

☑️ Código dentro de loop custa MIPS


🧪 2. MOVE em Cadeia (o Vampiro Silencioso)

🔥 Sintoma

  • CPU sobe

  • Programa “simples”

💀 Crime clássico

MOVE A TO B MOVE B TO C MOVE C TO D

🛠️ Cura Bellacosa™

MOVE A TO D

☑️ COBOL não cobra por linha… cobra por execução.


🧪 3. PERFORM CALLADO (Sem necessidade)

🔥 Sintoma

  • Modularização “bonita”

  • CPU feia

💀 Crime clássico

PERFORM CALCULA-VALOR

chamado milhões de vezes.

🛠️ Cura Bellacosa™

  • Inline lógica crítica

  • Evite PERFORM em massa

☑️ Modularidade demais custa caro.


🧪 4. SORT Burro (Quando não precisava)

🔥 Sintoma

  • CPU alto

  • Disco suando

💀 Crime clássico

  • SORT de arquivo já ordenado

  • SORT para eliminar duplicidade

🛠️ Cura Bellacosa™

  • Valide se já vem ordenado

  • Use controle lógico

☑️ SORT é um monstro de MIPS.


🧪 5. DB2: FETCH Um a Um (Pecado Mortal)

🔥 Sintoma

  • CPU altíssimo

  • SQL “simples”

💀 Crime clássico

FETCH CURSOR

milhões de vezes.

🛠️ Cura Bellacosa™

  • Use FETCH BLOCK

  • Aumente ARRAY FETCH

☑️ Banco pensa em bloco, não em linha.


🧪 6. COMMIT Mal Posicionado

🔥 Sintoma

  • Lock

  • Reprocesso

  • CPU extra

💀 Crime clássico

  • COMMIT a cada registro

  • COMMIT gigante demais

🛠️ Cura Bellacosa™

  • Commit por lote

  • Ajustar checkpoint


🧪 7. I/O Excessivo (Leitura Burra)

🔥 Sintoma

  • Muito tempo de execução

  • Pouca CPU útil

💀 Crime clássico

  • READ dentro de loop

  • Releitura desnecessária

🛠️ Cura Bellacosa™

  • Buffer

  • Carregar em memória quando possível

☑️ I/O custa caro e demora.


🧪 8. Compilação Errada = MIPS Perdido

🔥 Crime silencioso

  • Compilar COBOL 5 com PARMs antigos

🛠️ Cura Bellacosa™

OPTIMIZE ARCH(13+)

☑️ Compilador moderno gera código melhor.


🧪 9. JCL Mal Enquadrado

🔥 Sintoma

  • Job pequeno em classe errada

💀 Crime clássico

  • Classe de alto consumo

  • Prioridade indevida

🛠️ Cura Bellacosa™

  • Classe certa

  • WLM ajustado


🧪 10. Falta de Métrica = Cegueira

🔥 Erro fatal

  • “Acho que melhorou”

🛠️ Ferramentas

  • SMF

  • RMF

  • Accounting DB2

  • EXPLAIN PLAN

☑️ Sem métrica, não há tuning.


🧠 Checklist Rápido do Caçador de MIPS

☑️ Tirou código de loop
☑️ Reduziu SORT
☑️ Ajustou FETCH
☑️ Ajustou COMMIT
☑️ Compilou certo
☑️ Mediu antes e depois


🧙 Easter Eggs Bellacosa™

  • 1 MOVE em loop pode custar milhões por mês

  • Batch “simples” costuma ser o mais caro

  • Melhor otimização: não executar


🏁 Conclusão

“MIPS não se otimizam…
MIPS se caçam.”

Sem comentários:

Enviar um comentário