Sei sulla pagina 1di 28

Ituriel do Nascimento Neto ______________________________________________________________

Bufload
Otimizador de I/O

Pgina 1 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Objetivos
Com objetivo de aumentar a performance de jobs batch, em geral, optou-se por utilizar o parmentro de JCL BUFNO, que aumenta a velocidade de processamento fazendo com que numa nica operao de I/O mais blocos de registros sejam trazidos para Private rea do job. Desta forma, processos I/O bound sero bastante otimizados, contribuindo para diminuio da janela Batch. Visando automatizar o processo, uma vez que seria necessria interveno manual e um esforo de converso muito grande (teriam que ser alterados todos os jobs existentes para incluso do parmentro BUFNO), a equipe de suporte bsico do Bradesco desenvolveu um produto chamado BUFLOAD que modifica o parmentro BUFNO na DCB dos arquivos, cada vez que emitida a SVC de OPEN para arquivos sequenciais, adequando-o automaticamente as necessidades do job, segundo parmetros previamente estabelecidos.

Como Funciona
Como descrito anteriormente o produto BUFLOAD intercepta cada Open emitido e modifica o parmentro BUFNO aumentando-o segundo parmetros previamente estabelecidos. Atravs de uma interface amigvel ISPF, so parametrizados quais jobs/arquivos ou usurios devem ou no ter seus arquivos bufferizados, quais os tamanhos de Buffer adequados e quais os valores mximos e mnimos de BUFNO. Uma vez selecionados os valores desejados, estes valores so armazenados num membro de um arquivo particionado. Complementando esta interface ISPF, foi desenvolvida uma task chamada BUFLOAD que fica ativa todo o tempo e carrega em SQA os valores selecionados na interface ISPF e salvos no particionado.

Pgina 2 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Como parte principal do processo foi codificada a exit IFG0EX0B, que a exit de sistema invocada cada vez que emitido um OPEN para arquivos que apresentam DCB, ou seja, especfico para arquivos no VSAM. Uma vez que a STC BUFLOAD esteja ativa e a tabela em SQA esteja carregada, a exit IFG0EX0B atualiza o parmetro BUFNO da DCB do arquivo, refletindo o seguinte clculo : BUFNO = BUFSPACE / BLKSIZE . Segue abaixo um diagrama do processo como um todo :

Pgina 3 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Interface ISPF
Para facilitar a seleo do que deve ou no ser bufferizado, foi desenvolvida uma aplicao Rexx que permite o cadastramento do que se deseja manipular.

Podemos optar entre dois mtodos de seleo : A forma implcita, onde por default todos os arquivos so bufferizados e as excees so cadastradas como EXCLUSES. Para isto necessrio apenas cadastrar como INSERO o DSN * ,desta forma todos os arquivos cujos DSNs se encaixarem nesta definio sero automaticamente bufferizados segundo esta mscara. A forma explcita, onde por default nenhum arquivo bufferizado e aqueles cuja bufferizao se faz desejada, devem ser cadastrados como INSERO.

A seleo do que deve ser manipulado pode ser feita atravs de quatro tipos de mscaras. A primeira seria o DATASET NAME, a segunda seria a conjuno JOBNAME.STEPNAME.PROCSTEP.PROGRAMA.DDNAME, por USERID RACF e finalmente a quarta relativa ao cadastramento de GRUPO RACF.

Estas mscaras podem ser codificadas segundo as mesmas convenes do RACF, ou seja, podemos cadastrar arquivos ABC%.XYZ%.* e a seleo de jobs pode seguir o mesmo padro. Para cadastrarmos qualquer job cujo DDNAME comece por TEST devemos cadastrar a mscara *.*.*.*.TEST* . O cadastramento de usurios RACF segue os mesmos princpios.

Segue abaixo a tela principal invocada pelo Rexx BUFLOAD, com alguns cadastramentos j efetuados :

Pgina 4 de 28

Ituriel do Nascimento Neto ______________________________________________________________

No exemplo acima, temos o cadastramento de forma implcita de todos os arquivos (mscara DSN *), com exceo dos excludos, sero manipulados pelo BUFLOAD, tendo o valor BUFNO da DCB alterado. A partir do BUFLOAD 2.0.0, foram separadas as parametrizaes para DCBs acima e abaixo da linha dos 16Mb, criando-se duas estruturas distintas de BUFSPACE, MAXBUFNO e MINBUFNO, uma acima e outra abaixo da linha. Ainda no exemplo acima temos especificado 480 Kb como BUFSPACE, 255 como MAXBUFNO e 15 como MINBUFNO (Above) e 240Kb para BUFSPACE, MAXBUFNO=255 e MINBUFNO=10 (Below). O valor de BUFNO para DCBs acima da linha dos 16Mb calculado como 480Kb / blksize. Se a DCB for abaixo da linha, o valor do BUFNO calculado como 240Kb / blksize. Como implementao adicional garantimos o valor 15 como BUFNO se este for maior que o valor calculado. possvel ainda fazer um override nas definies default para algum DSN/JOB/USER selecionado. Para isto fazemos a INSERO do DSN/JOB/USER desejado e atualizamos os valores dos campos BUFSPACE ou MAXBUFNO para este DSN/JOB/USER recm criado.

Pgina 5 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Devem ser preenchidos, obrigatoriamente, os campos BUFSPACE, MAXBUFNO e MINBUFNO, que sero utilizados como valores default para qualquer definio. Qualquer dos campos acima pode ser atualizado quando se inserem arquivos, jobs ou usurios a serem manuseados pelo BUFLOAD.

Os seguintes comandos so autorizados e podem ser emitidos na linha de comando, no campo OP da tela principal do Rexx BUFLOAD: ID IJ IU IG ED EJ EU EG C D Insere nomes de arquivos que passam a ter sua DCB modificada pelo BUFLOAD. Cadastra jobs que tero suas DCBs modificadas pelo BUFLOAD. Cadastra usurios RACF cujos jobs sero otimizados. Cadastra grupos RACF cujos jobs sero otimizados. Cadastra arquivos que no tero suas DCBs modificadas pelo BUFLOAD. Inibe a otimizao dos jobs cujos nomes estejam cadastrados nesta mscara. Exclui usurios RACF de otimizaes efetuadas pelo incremento do BUFNO. Exclui arquivos submetidos por usurios do grupo RACF especificado. Modifica informaes relativas a opo WTO, Enable, Bufspace, Maxbufno e Minbufno. Apaga esta entrada.

Sempre que houver alguma modificao de algum valor, se as configuraes alteradas no tiverem sido salvas, na finalizao do rexx BUFLOAD ser apresentado um POP-UP perguntando se estas alteraes devem ser atualizadas ou no. Se a atualizao for confirmada, deve-se efetuar um refresh dos dados que esto em memria atravs do comando F BUFLOAD,R Utilizao de Action Bars So apresentadas Action Bars para facilitar algumas funes, que anteriormente necessitavam comandos de console ou era necessrio aguardar a finalizao do rexx para que as configuraes fossem salvas. Segue abaixo uma descrio mais detalhada destas novas funcionalidades :
File Services Help EssssssssssssssssssssssssssN -------------------------------------------------e 1. Salva Modificacoes e Row 1 to 23 of 23 e 2. Exit e Bufload 2.2.1 10:10 DssssssssssssssssssssssssssM ITURIEL

Selecionando-se o campo FILE, podemos salvar as configuraes a qualquer momento (Opo 1) ou encerrar a execuo sem salvar nada (Opo 2).

Pgina 6 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Um outro campo possvel de ser selecionado o SERVICES, que disponibilizar servios antes disponveis apenas via console. Por enquanto a nica opo disponvel o REFRESH em Memria, que atualiza em SQA as tabelas de incluso/excluso de arquivos a serem bufferizados.
File -----B A N Bilbao OS/390 Services Help EsssssssssssssssssssssssssssssssN ------------------------------------e 1. Refresh em Memoria(SQA) e Row 1 to 23 of 23 e *. Display de Memoria(SQA) e 2.2.1 15:12 e *. Status do Produto e ITURIEL DsssssssssssssssssssssssssssssssM Command ===> SCROLL ===> CSR

Est disponvel, ainda, a opo de Help, onde possvel selecionar entre as variedades de ajuda disponveis.
File Services Help ------------------ EsssssssssssssssssssssssssssssssssssssN ------------------SYSPLEX AL3 e 1 1. Geral e Row 1 to 23 of 23 SYSID AL3A e 2. Inclusao/Exclusao de Jobs e 15:12 SYSTEM z/OS 01.0e 3. Inclusao/Exclusao de Arquivos e ITURIEL e 4. Inclusao/Exclusao de Usuarios e Command ===> DsssssssssssssssssssssssssssssssssssssM SCROLL ===> CSR

Segue abaixo um exemplo da tela de finalizao do rexx BUFLOAD, questionando se a alterao deve ou no ser salva. Esta tela aparecer se tiver havido modificaes que no tenham sido salvas. Se as modificaes tiverem sido salvas atravs da ACTION BAR File, ento o rexx BUFLOAD encerraria sem apresentar a tela que se segue :

Pgina 7 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Segue agora uma descrio mais detalhada dos comandos disponveis no Rexx BUFLOAD :

Pgina 8 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Os seguintes campos esto disponveis nas telas de insero(IJ, ID, IU, IG), excluso (EJ, ED, EU, EG) e modificao ( C ) : WTO Pode assumir os valores S (sero emitidas mensagens informativas de bufferizao), N (nenhuma mensagem ser emitida) e D ( Debug teremos mensagens adicionais na JESMSGLG). ENABLE Pode assumir os valores S (indicando que este registro deve ser processado pelo BUFLOAD), N (indicando que este registro ser apenas salvo no arquivo de controle do BUFLOAD, mas no ser processado pelo BUFLOAD) e W (indicando o status de Warning Mode, onde o BUFLOAD simula toda a buferizao, mas no atualiza a DCB do arquivo). BUFSPACEA Se preenchido, substitui o valor default do tamanho de Buffer Amode 31. Se preenchido com o valor 000, utiliza o default especificado. MAXBUFNOA Substitui o nmero mximo de buffers acima da linha dos 16Mb. Se preenchido com 000, utiliza o default especificado. MINBUFNOA Substitui o nmero mnimo de buffers especificado above. Se preenchido com 000, utiliza os defaults. BUFSPACEB Se preenchido, substitui o valor default do tamanho de Buffer Amode 24. Se preenchido com o valor 000, utiliza o default especificado. MAXBUFNOB Substitui o nmero mximo de buffers abaixo da linha dos 16Mb. Se preenchido com 000, utiliza o default especificado. MINBUFNOB Substitui o nmero mnimo de buffers especificado below. Se preenchido com 000, utiliza os defaults.

Pgina 9 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Segue abaixo as funes principais das telas de insero, excluso, modificao. ID Permite a incluso de Datasets. Com esta opo ser apresentada uma tela onde deve ser preenchido o nome do arquivo a ser Bufferizado, se as mensagens de bufferizao devem ser emitidas (WTO Sim/No/Debug), se e se os parmetros de bufferizao sero sobrepostos ao DEFAULT.

Pgina 10 de 28

Ituriel do Nascimento Neto ______________________________________________________________

IJ

Permite a insero de JOBS. Com esta opo ser apresentada uma tela onde deve ser preenchido o nome do job/step/procstep/programa/ddname a ser Bufferizado, se as mensagens de bufferizao devem ser emitidas (WTO S/N) e se os parmetros de bufferizao sero sobrepostos ao DEFAULT. Os campos no preenchidos so completados com o valor *

Pgina 11 de 28

Ituriel do Nascimento Neto ______________________________________________________________

IU Permite a incluso de USURIOS RACF. Com esta opo os arquivos manuseados pelo usurios RACF a serem cadastrados tero seus Buffers aumentados conforme parametrizao. Ser apresentada uma tela onde deve ser preenchido o nome do usurios RACF (ou mscara no formato UUU*) . Pode-se optar por se emitir mensagens ilustrativas ou no atravs do parmetro WTO (Sim/No/Debug).

Pgina 12 de 28

Ituriel do Nascimento Neto ______________________________________________________________

IG

Permite a incluso de Grupos RACF default, similar ao que feito para USERID.

Pgina 13 de 28

Ituriel do Nascimento Neto ______________________________________________________________

ED Permite a excluso de Datasets. Com esta opo ser apresentada uma tela onde deve ser preenchido o nome do arquivo que no deve ser Bufferizado, se as mensagens de bufferizao devem ser emitidas (WTO Sim/No/Debug).

Pgina 14 de 28

Ituriel do Nascimento Neto ______________________________________________________________

EJ

Permite a excluso de JOBS. Com esta opo ser apresentada uma tela onde deve ser preenchido o nome do job/step/procstep/programa/ddname que no deve ser Bufferizado, e se as mensagens de bufferizao devem ser emitidas (WTO Sim/No/Debug). Os campos no preenchidos so completados com o valor *

Pgina 15 de 28

Ituriel do Nascimento Neto ______________________________________________________________

EU Permite a excluso de USURIOS RACF. Com esta opo os arquivos manuseados pelo usurios RACF a serem cadastrados no sero modificados pelo BUFLOAD. Ser apresentada uma tela onde deve ser preenchido o nome do usurios RACF (ou mscara no formato UUU*) . Podese optar por se emitir mensagens ilustrativas ou no atravs do parmetro WTO (Sim/No/Debug).

Pgina 16 de 28

Ituriel do Nascimento Neto ______________________________________________________________

EG Permite a excluso de GRUPOS RACF. Com esta opo os arquivos manuseados pelo usurios RACF do grupo a ser cadastrado no sero modificados pelo BUFLOAD. Ser apresentada uma tela onde deve ser preenchido o nome do grupo RACF (ou mscara no formato GGG*) . Pode-se optar por se emitir mensagens ilustrativas ou no atravs do parmetro WTO (Sim/No/Debug).

Pgina 17 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Critrios de Pesquisa
Antes de proceder com o aumento do nmero de Buffers, o BUFLOAD pesquisa se o arquivo a ser aberto se encaixa em algum critrio de excluso. Em caso afirmativo, ele descartado. Quanto as incluses, elas so processadas na seguinte ordem : 1) 2) 3) 4) Por Userid RACF Pela seqncia JOBNAME.STEP.PROCSTEP.PROGRAMA.DDNAME Pelo Grupo RACF Pelo Nome do Dataset

STC BUFLOAD
O address space BUFLOAD tem por finalidade bsica carregar em memria uma tabela com todas as inseres e excluses cadastradas pelo rexx BUFLOAD. Se esta task no estiver ativa, nada buferizado pois a exit de Open IFG0EX0B verifica se esta tabela existe para atualizar os blocos de controle dos jobs. Segue abaixo um exemplo do que ocorre na inicializao da stc BUFLOAD :
J E S 2 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 06.38.26 J O B L O G -S Y S T E M A L 3 A -N O D E

STC36913 ---- SUNDAY, 02 OCT 2005 ---STC36913 IEF695I START BUFLOAD WITH JOBNAME BUFLOAD IS ASSIGNED TO U STC36913 $HASP373 BUFLOAD STARTED STC36913 IEF403I BUFLOAD - STARTED - TIME=06.38.26 STC36913 BUF025I - BUFLOAD 2.0.0 inicializando STC36913 BUF024I - Nocheck especificado, ignorando check de versao STC36913 BUF004I - Se Tornando NSW STC36913 BUF006I - Obtendo 10K em SQA (Subpool 245) STC36913 BUF009I - BufspaceA=480K MaxbufnoA=255 MinbufnoA=015 STC36913 BUF009I - BufspaceB=240K MaxbufnoB=255 MinbufnoB=010 STC36913 BUF017I - Refresh Efetuado com sucesso

Pgina 18 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Esta task aceita os seguintes comandos : F BUFLOAD,R que serve para recarregar em memria a tabela de DSN/JOB/USER atualizada pela interface ISPF. Cada vez que houver uma atualizao na tabela de arquivos atravs da interface ISPF, esta funo de RELOAD deve ser emitida, caso contrrio a exit IFG0EX0B utilizar uma imagem no atualizada dos dados a serem bufferizados.
Iniciando processo de Reload BufspaceA=480K MaxbufnoA=255 MinbufnoA=015 BufspaceB=240K MaxbufnoB=255 MinbufnoB=010 Refresh Efetuado com sucesso

16.52.31 16.52.31 16.52.31 16.52.31

STC36913 STC36913 STC36913 STC36913

BUF018I BUF009I BUF009I BUF017I

F BUFLOAD,D
16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 16.53.56 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 STC36913 BUF029I BUF029I BUF030I BUF031I BUF031I BUF031I BUF031I BUF031I BUF031I BUF031I BUF031I BUF030I BUF031I BUF031I

que nos mostra o que est carregado em memria.


Id1=ZOS0,BufspaceA=0480K,MaxbufA=0255,MinbufA=0015 Id1=ZOS0,BufspaceB=0240K,MaxbufB=0255,MinbufB=0010 Total de Exclusoes=0008 ENJ TSA0OPT*.*.*.*.* ENJ TDSAPP*.*.*.*.* EWJ DFHSM.*.*.*.* ENU B820412 ENJ *.TSO@PROC.*.*.* EDJ *.*.NOBUF.*.* ENJ *.*.*.GIM*.* ENJ *.*.*.*.SYSIN Total de Inclusoes=0002 INJ ROS*.*.*.*.* IWD *

F BUFLOAD,S
11.40.40 STC08752

que indica se a verso da exit IFG0EX0B compatvel com a stc BUFLOAD


BUF028I - Exit IFG0EX0B compativel com BUFLOAD 200

F BUFLOAD,HELP mostra todos os comandos aceitos pela task BUFLOAD.


11.41.44 11.41.44 11.41.44 11.41.44 STC08752 STC08752 STC08752 STC08752 BUFM000I BUFM001I BUFM001I BUFM001I Comandos aceitos : R(Refresh) Recarrega Tabela Inclusoes/Exclusoes D(Display) Apresenta Tabela Inclusoes/Exclusoes S(Status ) Indica compatibilidade entre IFG0EX0B

Pgina 19 de 28

Ituriel do Nascimento Neto ______________________________________________________________

P BUFLOAD
11.42.59 11.42.59 11.42.59 11.42.59 STC08752 STC08752 STC08752 STC08752

finaliza a execuo da task BUFLOAD.


BUF020I - Liberando SQA obtida BUF026I - BUFLOAD F i n a l i z a n d o IEF404I BUFLOAD - ENDED - TIME=11.42.59 $HASP395 BUFLOAD ENDED

JCL necessrio para ativao da STC BUFLOAD : //BUFLOAD //S1 //STEPLIB //IEFPARM //NOCHECK PROC EXEC DD DD DD PGM=BUFLOAD,PARM=BUFSYSIN,TIME=1440 DSN=BUFLOAD.V221.LINKLIB,DISP=SHR DSN=BUFLOAD.V221.FONTES,DISP=SHR DUMMY

O carto IEFPARM indica o arquivo que contm a relao de regras geradas pela interface ISPF. Nesta biblioteca ficar o membro BUFSYSIN, especificado no PARM e responsvel pelo gerenciamento dos arquivos a serem bufferizados ou no. O nome BUFSYSIN o DEFAULT escolhido, mas pode-se optar por qualquer nome de membro vlido. Se for escolhido outro nome, a varivel MEMBER do Rexx BUFREXX deve ser alterada para contemplar o novo nome escolhido, conforme exemplo abaixo :

/* REXX /* /* /* /* /* /* BufVer Lib Linklib Member Xmbufsp Xmbufno Ymbufno = = = = = = =

Bufload -

Prepara o arquivo com as regras de restrio e incluso a serem carredas pela task BUFLOAD

*/ */ */ */ */ */ */

Center("Bufload 2.2.1",20) "BUFLOAD.V221.FONTES" BUFLOAD.V221.LINKLIB "BUFSYSIN" 990 /* Bufspace maximo */ 255 /* Bufno maximo - DCBBUFNO maximo = 255 */ 10 /* Bufno minimo */

Pgina 20 de 28

Ituriel do Nascimento Neto ______________________________________________________________

O carto NOCHECK indica ao programa BUFLOAD que a verso da exit IFG0EX0B no deve ser validada. Esta feature importante para instalaes que fazem HOOK nesta exit, como por exemplo o STOPX37, modificando seu contedo em memria. Este carto opcional. Sem este carto a verso da exit IFG0EX0B comparada com a do programa BUFLOAD e se estiverem diferentes a task BUFLOAD se encerrra, emitindo a mensagem BUF027E .

A stc BUFLOAD pode emitir as seguintes mensagens :


BUF001E BUF002E BUF003E BUF004I BUF005E BUF006I BUF007E BUF008I BUF009I BUF010I BUF011I BUF012E BUF013I BUF014E BUF015E BUF016E BUF017I BUF018I BUF019E BUF020I BUF021E BUF022I BUF023E BUF024I BUF025I BUF026I BUF026E BUF027E BUF028I BUF029I BUF030I BUF030I BUF031I Nao foi passado o nome do membro SYSIN o DDNAME IEFPARM nao esta especificado Programa nao APF Se Tornando NSW Nao se tornou NSW Obtendo 10K em SQA (Subpool 245) Erro de alocacao do SYSIN Primeiro registro nao especifica DEFAULT BufspaceA=xxxK MaxbufnoA=xxx MinbufnoA=xxx Minbufno/Maxbufno/Bufspace nao numericos. Assumido EFAULT Bufspace=240K Maxbufno=255 Minbufno=010 Jobname/Dataset invalido Bufspace/MaxBufno/MinBufno invalido, assumido DEFAULT Parametro DSN/JOB invalido Parametro WTO/NOWTO invalido Parametro INCL/EXCL invalido Refresh Efetuado com sucesso Iniciando processo de Reload IEANTDL Fail Liberando SQA obtida Erro no Call IEANTCR Nocheck nao especificado, prosseguindo check de versao Total de entradas maior que 150 Nocheck especificado, ignorando check de versao BUFLOAD x.x.x inicializando BUFLOAD F i n a l i z a n d o Exit IFG0EX0B nao Encontrada Exit IFG0EX0B com versao nao compativel Exit IFG0EX0B compativel com BUFLOAD xxx Acc=ZOS0,BufspaceA=xxxx,MaxbufA=xxxx,MinbufA=xxxx Total de Exclusoes=xxxx Total de Incluses=xxxx XYZ DSN/USR/JOB

Pgina 21 de 28

Ituriel do Nascimento Neto ______________________________________________________________

IFG0EX0B
Esta exit invocada em tempo de OPEN de arquivos no VSAM e foi codificada para atualizar o campo DCBBUFNO da DCB dos arquivos selecionados. Como descrito anteriormente, esta exit verifica se existe em CSA uma tabela previamente carregada com os valores default e com a relao de quais arquivos/jobs devem ou no ser bufferizados e se a opo de display dos valores obtidos deve ser mostrada ou no. Se no existir em SQA a tabela do que deva ser manipulado, a exit IFG0EX0B finalizar seu processamento sem modificar nenhum campo na DCB do arquivo a ser aberto. A partir da verso 2.1.0, a IFG0EX0B passa a invocar o programa BUF0EX0B, carregado dinamicamente na LPA e responsvel pela alterao do BUFNO. Uma vez que exista em memria a tabela carregada pela STC BUFLOAD, a validao feita da seguinte forma : Primeiramente so tratadas as excluses. Se o dataset a ser aberto estiver em conformidade com alguma mscara de excluso, ento a exit finaliza sem modificar nenhum atributo da DCB. Se no houver conformidade com nenhuma excluso ento tratamos as incluses. Verifica-se se o dataset a ser manipulado est de acordo com alguma mscara cadastrada de arquivo, caso contrrio, verificam-se se os atributos JOBNAME.STEPNAME.PROCSTEP.PROGRAM.DDNAME esto coincidindo com os atributos do job que est executando o OPEN.

Se o job em questo no coincidir com a mscara, ento nada feito e a exit encerra normalmente. Uma vez que o arquivo seja selecionado para bufferizao, calcula-se o valor de BUFNO dividindo-se o BUFSPACE pelo BLKSIZE do arquivo e este valor de BUFNO obtido atualizado no campo DCBBUFNO da DCB do arquivo.

Por esta exit (IFG0EX0B) fazer parte da SVC 19 (OPEN), ela atualizada no sistema atravs de procedimentos SMPE onde so executados RECEIVE e APPLY de uma USERMOD chamada BUFLOAD. Desta forma o sistema sabe de sua existncia e notifica o suporte no caso de alguma PTF modificar esta SVC.

Pgina 22 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Segue abaixo exemplos de mensagens emitidas pela exit BUF0EX0B quando se especifica WTO (S) na interface ISPF do BUFLOAD. O primeiro caso um exemplo de mensagem de EXCLUSO e o segundo uma mensagem emitida quando a bufferizao efetuada.
BUFL003I BUFL002I BUFL001I BUFL002I IN IN nao Bufferizado SO.S1.IEBDG1 Blksize=03040 Amode=31 UNIT=DASD

SYSLIN Bufno=051 BXINN.TSO1.OBJ

Segue abaixo as mensagens emitidas se for especificada a opo DEBUG no campo WTO da interface ISPF. O primeiro exemplo ocorre quando temos uma EXCLUSO devida ao tamanho do arquivo de entrada e o segundo grupo de mensagens ocorre quando a bufferizao efetuada.
BUFL005I BUFL006I BUFL004I BUFL002I BUFL005I BUFL006I BUFL007I BUFL001I BUFL002I SYSIN SYSIN SYSIN SYSIN SYSLIN SYSLIN SYSLIN SYSLIN SYSLIN Arg=BXINN Msk=BXINN Ignorado. Dataset menor BUFLOAD.V182.SOURCE

que

45 TRKS

Arg=BXINN Msk=BXINN 24 bit Buffer e DCBE Nao Definida Bufno=255 Blksize=03040 Amode=24 UNIT=TAPE BUFLOAD.OBJ

Restries
Existem algumas restries para os quais a exit IFG0EX0B no tomar nenhuma ao independente de o arquivo coincidir com alguma mscara de incluso. So elas : SYSIN DD */SYSOUT/TERMINAL DCBBUFCA indicando rea de buffer obtida previamente DCBBUFNO j especificado com valor diferente de zero READ ou WRITE macro DD DUMMY A UCB no for de DISCO ou de FITA No houver FORMAT 1 DSCB EXCP DCB DSORG na DCB no PS nem PO SMS EXTENDED Compressed Sem BLKSIZE e DSORG no F/FB ou V/VB LRECL ou BLKSIZE maiores que 32760 Arquivos abertos como INPUT e menores que 45 trilhas

Pgina 23 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Se a instalao j possui sua prpria IFG0EX0B, deve ser combinada com a nova utilizada pelo BUFLOAD.

Pr Requisitos
As bibliotecas distribudas com o produto ocupam cada uma 1 cilindro (3390) e a task BUFLOAD necessita de 10K de SQA (abaixo da linha dos 16 Mb). necessrio que a biblioteca de executveis (BUFLOAD.V221.LINKLIB) seja APF authorized. Para que a opo de refresh dos dados seja efetivada em memria, atravs da interface ISPF, necessrio que o programa BUFCMD seja adicionado a lista de programas autorizados do TSO (AUTHPGM da IKJTSO00). Verifique o exemplo no membro IKJTSO00 da biblioteca BUFLOAD.V221.FONTES. Se este programa no for adicionado a IKJTSO00, s ser possvel o REFRESH atravs de comando de Console (F BUFLOAD,REFRESH).

Instalao
Para instalao adequada os seguintes passos devem ser executados, com os jobs localizados na biblioteca SOURCE :

Executar o job IFGALL que efetuar o processo de RECEIVE e APPLY da USERMOD BUFLOAD. Verifique o nome das zonas SMPE para perfeita execuo deste job. Depois destes passos o sistema est preparado para IPL. A exit IFG0EX0B componente da SVC 19 e por isto deve ser atualizada via SMPE e por isto necessrio um IPL

Para ativao da interface ISPF o membro BUFREXXC deve ser copiado para uma biblioteca da concatenao SYSPROC das procedures de logon TSO. O contedo do membro MPFLSTX1 opcionalmente deve ser copiado para o membro MPFLSTxx especificado na SYS1.PARMLIB ou concatenadas. Com isto estaremos evitando mensagens desnecessrias na CONSOLE.

Pgina 24 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Componentes
Temos 3 bibliotecas disponveis, que so as seguintes : a) BUFLOAD.V221.LINKLIB contm todos os mdulos de carga necessrios ao funcionamento da STC BUFLOAD e deve ser APF Authorized. b) BUFLOAD.V221.SOURCE, contm todos os membros necessrios a instalao do produto BUFLOAD e seus cdigos fonte. c) BUFLOAD.V221.FONTES , que uma cpia da biblioteca SOURCE, mas contm apenas os membros necessrios ao funcionamento da interface ISPF (painis, mensagens, rexx, sysin). Segue-se a relao dos membros : $$DOC $MIGRATE Descrio de todos os componentes desta biblioteca. Procedimento a ser efetuado quando se aplica uma nova verso do produto BUFLOAD. $RESTRIC Restries do produto BUFLOAD. BUFL00 Relao de mensagens emitida pelo Rexx BUFLOAD. BUFPROC Exemplo de JCL da stc BUFLOAD. O Parm deve ser igual ao informado no Rexx BUFLOAD. BUFREXX Rexx principal utilizada pela interface ISPF. BUFREXXC Rexx a ser colocada na concatenao SYSPROC das procedures de logon TSO. Para simplificao deve se chamar BUFLOAD. BUFSYSIN SYSIN gravado pelo Rexx e deve ser especificado no parm da stc BUFLOAD. IKJTSO00 Exemplo de como deve ser adicionado o programa BUFCMD na tabela de programas TSO autorizados. MPFLSTX1 Exemplo de MPF list a ser colocado na concatenao da Parmlst . MSGS Relao de mensagens que podem ser emitidas pela STC BUFLOAD. PBUF000 Tela principal da interface ISPF. PBUF001 Tela de Incluso/Excluso de JOBS. PBUF002 Tela de Incluso/Excluso de Datasets. PBUF003 Tela de finalizao da Rexx BUFLOAD. PBUF004 Tela de Incluso/Excluso de Userids RACF. PROGA0 Exemplo de membro da Parmlist para se colocar a biblioteca de objetos do BUFLOAD como APF authorized. SAVELPA Job a ser executado quando uma nova verso de BUFLOAD for implementada. Este job salva a SYS1.LPALIB corrente.

Pgina 25 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Benefcios

Como ilustrao dos possveis benefcios, foram feitos testes com jobs batch executando em paralelo, com o programa IDCAMS, copiando um mesmo arquivo de entrada (com 3.000.000 de registros) e gerando arquivos de sada distintos. Segue abaixo alguns grficos dos resultados obtidos :
Comparativo CPU e Elapsed Time

60

50

40

Bufload-On Segundos 30 Bufload-Off

20

10

0 CPU Elapsed

Pgina 26 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Os resultados acima indicam uma economia de CPU em torno de 10% e uma reduo nos tempos de execuo de aproximadamente 33% para estes jobs em particular. Para a otimizao de I/O, utiliza-se uma quantidade maior de memria, que utilizada como buffer de transferncia de dados. Portanto para uma maior transferncia utiliza-se mais memria. Ainda ilustrando os recursos utilizados, segue em anexo a utilizao de memria percebida pelos jobs de teste.
Memria Abaixo 16 Mb

1400

1200

1000

800 Mem Abaixo Kbytes 600

400

200

0 Bufload-On Bufload-Off

Pgina 27 de 28

Ituriel do Nascimento Neto ______________________________________________________________

Nos jobs testados percebeu-se um acrscimo substancial de memria, que pode variar dependendo-se do tipo de programa executado. No exemplo acima, na verso de IDCAMS utilizada, os buffers eram criados abaixo da linha dos 16 Mb o que no ocorre, por exemplo, com programas COBOL, que utilizam seus buffers acima da linha dos 16 Mb.

Pgina 28 de 28