Mostrar mensagens com a etiqueta channel. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta channel. Mostrar todas as mensagens

domingo, 15 de março de 2026

🔥 z/OS NÃO É CPU: O Poder Invisível Que Realmente Move o Mainframe (E Quase Ninguém Explica)

 

Bellacosa Mainframe apresenta o misterio do Storage Mainframe

🔥 z/OS NÃO É CPU: O Poder Invisível Que Realmente Move o Mainframe (E Quase Ninguém Explica)

⚠️ Se você acha que mainframe é “uma CPU gigante processando COBOL”… prepare-se para um pequeno choque de realidade.


🧙‍♂️ Padawan, aproxime-se…

Todo iniciante em mainframe passa por um momento de revelação.

No começo, você pensa:

“Quanto mais CPU, mais rápido.”

Depois vem o primeiro relatório de performance…

E aparece um número misterioso:

IOSQ = 37 ms

Ou pior:

DEVICE BUSY
PEND TIME ALTO

E então alguém experiente murmura:

“Isso não é CPU… é I/O.”

Bem-vindo ao lado invisível da Força.


🏛️ A Grande Mentira do Mundo Distribuído

No universo x86, a narrativa dominante é:

Performance = CPU + RAM

IBM Z como funciona a Performance


No IBM Z, a equação real é:

Performance = Addressability + I/O Architecture + Workload Management

CPU muitas vezes é só o maestro.

Quem toca a sinfonia são:

  • IOS

  • Channel Subsystem

  • Storage

  • Dispatching

  • Memory Architecture

  • PAV / HyperPAV

  • WLM / IRD


🧬 O Segredo Nº1: O mainframe NÃO espera I/O

Em sistemas comuns:

Fluxo de uso de memoria no X86


Programa → lê disco → espera → continua

Fluxo de uso da memoria no Mainframe


No z/OS:

Programa → delega I/O → CPU faz outra coisa

Quem assume o trabalho pesado?

👉 SAP — System Assist Processor
👉 Channel Subsystem
👉 Control Units
👉 Storage microcode

A CPU volta só quando o dado está pronto.

Isso é computação de alta eficiência em escala industrial.


🚀 Dispatching: O Coração Pulsante

Durante o IPL e ao longo da execução, o sistema escolhe quem roda a cada instante.

Unidades de trabalho:

  • TCB — Task Control Block (tarefas “normais”)

  • SRB — Service Request Block (tarefas super rápidas do kernel)

O dispatcher faz algo extraordinário:

troca contexto
aloca CPU
preserva estado
mantém isolamento

Tudo em microssegundos.

Curiosidade histórica:

O z/OS herdou conceitos do MVS dos anos 70 — e ainda assim continua décadas à frente em escalabilidade.


🧠 Addressability: O Poder que Quase Ninguém Entende

Padawan, aqui está o verdadeiro tesouro.

Cada programa roda em um Address Space isolado.

Mas o sistema permite acessar outros espaços de forma controlada.

Isso é feito por:

  • Cross-memory services

  • Program Call (PC)

  • Access Registers

  • ALESERV

  • Linkage Stack


🌀 Program Call: Visitando Outro Universo

Um programa pode executar código em outro address space sem copiar dados.

É como:

“Ir à casa do vizinho, usar o videogame dele e voltar.”

Com segurança de nível militar.


🧩 Linkage Stack: O Guardião do Retorno

Toda chamada salva automaticamente:

  • PSW

  • Registradores

  • Estado de execução

Sem precisar de save areas manuais.

Simplesmente elegante.


🔐 Access Registers: Chaves Dimensionais

Permitem que um programa acesse múltiplos espaços simultaneamente.

Não é apenas virtual memory.

É multi-universo controlado por hardware.


📦 Data Spaces e Hiperspaces: Memória Além da Memória

Antes do addressing de 64 bits, engenheiros criaram:

  • Data Spaces — áreas enormes de dados

  • Hiperspaces — armazenamento ultrarrápido fora do espaço principal

Hoje ainda aparecem em código legado.

E funcionam absurdamente bem.


⚡ O Verdadeiro Monstro: O I/O Supervisor (IOS)

IBM Mainframe I/OS Supervisor


O IOS é o general das operações de entrada/saída.

Fluxo típico:

Aplicação

IOS

ORB criado

SSCH (Start Subchannel)

Channel Subsystem

Control Unit

Device

🧱 ORB, CCW e SCHIB — A Trindade do I/O

ORB — Operation Request Block

Define o pedido de I/O.

CCW — Channel Command Word

Comandos que o dispositivo executará.

SCHIB — Subchannel Information Block

Informações de caminhos e status.


🛣️ Dynamic Path Selection: GPS do Storage

O sistema escolhe automaticamente o melhor caminho até o device.

Se um estiver congestionado:

usa outro

Sem intervenção humana.


🔥 PAV e HyperPAV: Quando um Disco Não Basta

Antigamente:

1 volume → 1 operação por vez

Hoje:

👉 PAV cria aliases para paralelismo
👉 HyperPAV usa pool dinâmico
👉 SuperPAV ultrapassa limites de control unit

Resultado:

múltiplos I/Os simultâneos

🐹 IOSQ Alto: O Hamster Está Cansado

IOSQ = tempo esperando na fila do dispositivo.

Se alto:

  • contenção de volume

  • falta de aliases

  • workload concentrado

  • gargalo de storage

É o equivalente mainframe de:

“CPU está idle, mas tudo continua lento.”


⚡ zHPF: Menos Conversa, Mais Trabalho

Arquitetura clássica:

vários CCWs
várias interações

zHPF:

Transport Mode
TCW único
menos overhead

Ideal para workloads com milhões de pequenos I/Os.


🌌 zHyperLink: Hiperespaço do Storage

Conexão direta ultrarrápida com DS8000.

Latência:

FICON → centenas de microssegundos
zHyperLink → dezenas

Projetado especialmente para DB2.


🧠 IRD: O Maestro Invisível

O Intelligent Resource Director move recursos entre LPARs automaticamente:

  • CPU weights

  • Channel paths

  • Prioridades

Tudo baseado nas metas do WLM.

Sem reboot. Sem intervenção.


🧪 Easter Egg para Padawans Observadores

Se você olhar um dump real de SOC4 e conseguir identificar:

  • registrador base incorreto

  • endereço inválido

  • PSW no momento da falha

Parabéns.

Você já começou a ver a Matrix do z/OS.


🏁 Moral da História

O IBM Z não é poderoso por causa da CPU.

Ele é poderoso porque:

👉 Nunca para
👉 Nunca desperdiça ciclos
👉 Paraleliza tudo
👉 Isola tudo
👉 Gerencia recursos como um organismo vivo


💬 Frase para guardar na memória

O mainframe não é um computador rápido — é um sistema que evita ser lento.


🔮 Próximo Nível

Quando você realmente entender:

  • Addressability

  • Cross-memory

  • IOS

  • Channel Subsystem

  • Storage architecture

Você perceberá algo assustador:

O z/OS não executa programas… ele orquestra universos isolados cooperando.

https://www.linkedin.com/pulse/zos-n%C3%A3o-%C3%A9-cpu-o-poder-invis%C3%ADvel-que-realmente-move-e-quase-bellacosa 

 





sábado, 12 de setembro de 2015

🧠 Storage Control no CICS

 

CICS Storage Control

🧠 Storage Control no CICS

Onde o estado vive, onde ele morre e onde ele assombra produção

A imagem mostra:

Storage Control → Storage sources
• COMMAREA
• CWA (Common Work Area)
• TWA (Transaction Work Area)

Isso não é teoria.
Isso é onde bugs se escondem.


🧱 Storage Control – o papel do CICS

O Storage Control é o componente do CICS responsável por:

  • Alocar memória

  • Liberar memória

  • Isolar memória entre tasks

  • Proteger o CICS de você (sim, de você)

Tudo no CICS gira em torno de tasks concorrentes compartilhando CPU, mas não memória — salvo quando você pede explicitamente.


📦 COMMAREA

O clássico, o limitado, o abusado

O que é

Área de comunicação passada entre programas via:

  • LINK

  • XCTL

  • RETURN TRANSID

Características

  • 📏 Tamanho máximo: 32 KB

  • 🔁 Passagem explícita

  • ⏱️ Vida curta (dura o fluxo)

  • 🔒 Isolada por task

Quando usar

  • Dados pequenos

  • Estruturas simples

  • Fluxo linear clássico

Pecados capitais

  • Usar COMMAREA como banco de dados

  • Estourar tamanho

  • Reusar layout errado (ASRA clássico)

💀 ABEND típico: ASRA / AEIP


CICS TWA

🧰 TWA – Transaction Work Area

Estado temporário da transação

O que é

Área de memória associada à transação, não ao programa.

Características

  • Criada automaticamente pelo CICS

  • Acessível por qualquer programa da transação

  • Vive até o RETURN final

Quando usar

  • Guardar estado entre múltiplos programas

  • Fluxo pseudo-conversacional simples

Riscos

  • Confundir TWA com COMMAREA

  • Assumir que sobrevive entre transações (não sobrevive)

💡 Boa prática: TWA é “mochila da transação”, não cofre.


CICS CWA

🏛️ CWA – Common Work Area

O templo dos deuses (e dos pecados)

O que é

Área de memória global do CICS Region.

Características

  • Compartilhada por todas as tasks

  • Inicializada no startup

  • Não é isolada

  • Não é protegida

Quando usar (com muito cuidado)

  • Tabelas de controle

  • Flags globais

  • Cache de leitura

Quando NÃO usar

  • Dados de negócio

  • Dados por usuário

  • Qualquer coisa mutável sem controle

☠️ Risco real: corrupção de dados, race condition, caos silencioso.

CWA é poder absoluto — e poder absoluto gera incidentes absolutos.


🚀 CHANNEL & CONTAINER

O CICS moderno, civilizado e escalável

O que são

Substitutos modernos da COMMAREA.

  • CHANNEL → agrupador lógico

  • CONTAINER → estrutura de dados

Características

  • 📏 Tamanho praticamente ilimitado

  • 📦 Estruturas múltiplas

  • 🔄 Tipagem flexível

  • 🧼 Melhor manutenção

  • 🔐 Mais seguro

Quando usar

  • Aplicações modernas

  • Integração

  • Grandes volumes

  • APIs CICS

Comparação rápida

RecursoCOMMAREACHANNEL/CONTAINER
Tamanho32 KBMuito maior
EstruturaÚnicaMúltiplas
ManutençãoDifícilLimpa
FuturoLegadoPresente e futuro

🗺️ Como ler a imagem como um mainframer

A imagem não está falando só de memória.
Ela está dizendo:

“Escolha errado onde guardar estado
e você vai debugar às 3 da manhã.”


🧠 Regra Bellacosa de Ouro

  • COMMAREA → conversa curta

  • TWA → memória da transação

  • CWA → último recurso

  • CHANNEL/CONTAINER → escolha padrão moderna


☕ Comentário El Jefe Midnight Lunch

“CICS não quebra porque é antigo.
Ele quebra porque alguém tratou memória como variável global.”

🔥 Quem entende Storage Control, domina o CICS.


quarta-feira, 12 de outubro de 2011

🔥 COMMAREA vs CHANNEL/CONTAINER no CICS

 


🔥 COMMAREA vs CHANNEL/CONTAINER no CICS



☕ Midnight Lunch, COMMAREA gigante e o CICS olhando feio

Todo mainframer já viveu esse momento:

“Só aumentei a COMMAREA… de 2K pra 32K.”

Minutos depois:

  • ASRA misterioso

  • Storage estourando

  • Performance caindo

  • E alguém sussurra:
    👉 “Por que não usaram CHANNEL?”

Hoje vamos resolver essa treta histórica: COMMAREA vs CHANNEL/CONTAINER, com números, boas práticas, cicatrizes e filosofia Bellacosa.


🏛️ História: do bloco único ao container moderno

COMMAREA

  • Nasceu nos primórdios do CICS

  • Simples, direta, rápida

  • Pensada para pequenos volumes de dados

  • Era “o suficiente” nos anos 70/80

CHANNEL/CONTAINER

  • Introduzido no CICS TS 3.x

  • Resposta à complexidade crescente

  • Feito para dados grandes, estruturados e flexíveis

  • Arquitetura mais próxima de “mensageria moderna”

📌 Não é moda. É evolução arquitetural.


🧠 Conceito essencial (guarde isso)

COMMAREA = um bloco fixo de memória
CHANNEL/CONTAINER = coleção flexível de blocos independentes

Isso muda tudo.


📦 COMMAREA – o clássico confiável (e perigoso)

O que é?

Um único bloco contínuo de memória, passado entre programas via LINK/XCTL.

📏 Tamanho máximo

  • Até 32.767 bytes (~32 KB)

Sim. Esse é o limite duro.
Passou disso? Nem adianta insistir.


👍 Pontos fortes

✔ Simples
✔ Rápido
✔ Fácil de debugar
✔ Ideal para estruturas pequenas

👎 Limitações

❌ Tamanho limitado
❌ Forte acoplamento entre programas
❌ Layout rígido
❌ Difícil evoluir sem impacto


❌ Erros comuns com COMMAREA (easter eggs)

🐣 COMMAREA gigante “só por garantia”
🐣 Layout diferente entre programas
🐣 Reutilizar COMMAREA sem limpar
🐣 Usar COMMAREA como “dump de dados”

📌 COMMAREA não é mala de viagem.


📦 CHANNEL/CONTAINER – o adulto da sala

O que é?

Um CHANNEL é um agrupador lógico.
Um CONTAINER é um bloco individual de dados dentro do channel.

📦 Channel
└── Container A
└── Container B
└── Container C

Cada um com:

  • Tamanho próprio

  • Tipo próprio

  • Vida própria


📏 Tamanho máximo

  • Praticamente ilimitado (dependente de storage)

  • Containers podem ter megabytes

  • Muito além do limite da COMMAREA

📌 Aqui o gargalo deixa de ser o CICS e passa a ser o bom senso.


👍 Pontos fortes

✔ Estrutura flexível
✔ Baixo acoplamento
✔ Ideal para dados grandes
✔ Melhor para evolução de sistemas
✔ Integra bem com Web Services e MQ

👎 Cuidados

❌ Mais verboso
❌ Exige disciplina
❌ Overkill para casos simples


🥊 COMMAREA vs CHANNEL/CONTAINER

CritérioCOMMAREACHANNEL/CONTAINER
Tamanho máx~32 KBMuito grande
EstruturaFixaFlexível
EvoluçãoDifícilFácil
PerformanceExcelenteMuito boa
AcoplamentoAltoBaixo
ModernidadeClássicoAtual

📌 Não existe melhor. Existe mais adequado.


🛠️ Passo a passo: como escolher

1️⃣ Dados pequenos e estáveis? → COMMAREA
2️⃣ Muitos campos opcionais? → CHANNEL
3️⃣ Dados grandes (XML, JSON)? → CHANNEL
4️⃣ Sistema legado crítico? → COMMAREA (com cuidado)
5️⃣ Integração moderna? → CHANNEL/CONTAINER


⚡ Boas práticas Bellacosa

✅ COMMAREA

  • Use o menor tamanho possível

  • Documente o layout

  • Inicialize sempre

  • Evite “COMMAREA universal”

✅ CHANNEL/CONTAINER

  • Um container = um conceito

  • Nomeie containers claramente

  • Evite “container Frankenstein”

  • Libere quando não precisar

📌 Arquitetura também é educação.


🧪 Exemplo mental de otimização

Antes (COMMAREA)

  • Estrutura única de 30 KB

  • Metade dos campos nunca usados

  • Cada mudança quebra alguém

Depois (CHANNEL)

  • Container CLIENTE

  • Container PRODUTO

  • Container CONTROLE

  • Cada programa lê só o que precisa

🔥 Resultado:

  • Menos impacto

  • Mais clareza

  • Menos bug fantasma


📚 Guia de estudo recomendado

Para dominar o tema:

  • CICS Program Control

  • Storage Management

  • COMMAREA lifecycle

  • CHANNEL/CONTAINER APIs

  • Performance tuning em CICS

📖 Manual essencial: CICS Application Programming Guide


🤓 Curiosidades de boteco mainframe

🍺 CHANNEL foi criado porque COMMAREA virou “caixa de Pandora”
🍺 Há sistemas que simulam JSON dentro de COMMAREA (não faça isso)
🍺 Web Services no CICS usam CHANNEL por baixo dos panos
🍺 Muitos ainda usam COMMAREA por medo, não por necessidade


💬 Comentário El Jefe Midnight Lunch

“COMMAREA resolve rápido.
CHANNEL resolve certo.
O mainframe não perdoa preguiça arquitetural.”


🚀 Aplicações reais hoje

  • Core bancário moderno

  • APIs CICS

  • Integração com MQ

  • Processamento XML/JSON

  • Sistemas híbridos (CICS + Cloud)


🎯 Conclusão Bellacosa

COMMAREA não morreu.
CHANNEL não é bala de prata.

O mainframer experiente:

  • Sabe quando usar cada um

  • Respeita limites

  • Pensa no futuro

🔥 Arquitetura boa não dá abend. Dá orgulho.