SlideShare una empresa de Scribd logo
1 de 3
Palestra: Fixando Bufferpool do DB2 v8 em memórias gigantes


1. Conceito de Bufferpool


      Começando pelo início se deve dizer que bufferpool é um conjunto de buffers de I/
O (área na memória virtual para onde o bloco físico de um data set é copiado ou de
onde é lido durante uma operação de I/O) todos com o mesmo tamanho. A
implementação de bufferpools tem um claro viés de melhorar em geral o desempenho
informático.
      Eles servem principalmente para evitar operações de I/O randômicas. O I/O é
evitado quando o aplicativo revisita o dado ou o index, que via uma prévia operação de
I/O foi carregado e mantido no tal bufferpool pelo software que administra tais dados.
É lógico que o I/O mais rápido é o inexistente - que os fabricantes de storage não nos
escutem (aliás, eles devem odiar bufferpools – rsrsrs).
      No caso de I/O seqüencial a existência de um bufferpool com uma quantidade
significativa de buffers permite o paralelismo na execução task do aplicativo na CPU
concorrente com a execução de operações de I/O no data set. Além disso, vários
blocos podem ser transmitidos por I/O, o que diminui consistentemente o tempo
connect total para transferir o data set em questão.
      DB2 usa efetivamente bufferpools para conter suas páginas. Esses podem ser
localizados na área privada do DBM1 address space (abaixo e acima da barra), ou em
data spaces, ou em hiper spaces (não recomendado).
      Continuando a discorrer sobre conceitos primitivos, e, portanto, correndo o risco
de enfadá-los vamos sumarizar as idéias básicas de memória virtual (lembram do 155-
II?).
      Página é um conjunto de 4K endereços virtuais alinhados em endereços múltiplos
de 4K. Talvez seja uma surpresa para vocês, mas agora é possível, em z/OS se ter,
opcionalmente, páginas de 1 M endereços... Os endereços de uma página são
referenciados pela CPU para acessar instruções e seus operandos. Páginas se
localizam virtualmente em address spaces. A criação dos endereços de uma página é
requerida por programas aplicativos através dos APIs Getmain e IEARV64 (ver
abaixo).

     GETMAIN
     LC,LA=length addr,A=addr
     LU,LA=length addr,A=addr
     VC,LA=length addr,A=addr
     VU,LA=length addr,A=addr
     EC,LV=length value,A=addr
     EU,LV=length value,A=addr
     VRU,LV=(maximum length value, minimum length value)
     SP=subpool nmbr
IARV64
     REQUEST=GETSTOR,
     COND=NO,
     COND=YES,
     SEGMENTS=segments,
     FPROT=YES,
     FPROT=NO,
     SVCDUMPRGN=YES,
     SVCDUMPRGN=NO

     Parâmetros definem a localidade da nova página:
     • AS private or common area below the line
     • AS private area or common above the line
     • AS private and common area above the bar
     • Uma página também pode ser criada em Dataspaces e Hiperspaces


2. Conceito de Page Fixing


     O conteúdo físico (instruções e operandos) apontado pelos endereços de uma
página pode residir na memória central em frames de 4 KB ou em slots (blocos de I/O)
também de 4 KB localizados em página data sets. Neste caso, tal conteúdo foi roubado
pelo z/OS, da memória central por serem pouco referenciados e haver falta de frames
disponíveis.
     Veja no relatório abaixo de RMF Monitor III (STORF) o address space
DB2MDBM1. Suas páginas se distribuem entre 64897 (TOTAL) contidas em frames da
memória central e 3212 (AUX) em slots de pagé data sets.
Fixar uma página significa que a partir do momento da fixação, esta página não
está disponível para ser roubada de um frame para um slot (page out), mesmo que
tenha sido pouco referenciada. A necessidade de se fixar uma pagina tem a ver com a
manutenção da integridade. Veja no relatório anterior que das 64897 páginas contidas
em frames, 432 estão fixas.
     O mais freqüente motivo para fixar páginas seria durante a execução de I/O,
quando tal página contiver um buffer de I/O sendo referenciado nessa operação de I/O.
Como o canal apenas trabalha com endereços reais (não tem DAT), a página contendo
um I/O buffer ativo não pode ser roubada.
     Após o término do I/O a página tem que ser “desfixada” via a função Pagefree do
z/OS.


3. Implementando DB2 Bufferpool Pagefix


    Usando-se a função Trace do z/OS (exemplificada abaixo) se percebeu que a
execução freqüente de Pagefix e Pagefree consome muita CPU.

     PR ASID WU-ADDR- IDENT PSW----- ADDRESS- TIMESTAMP-REC
     01- 0018 008E3E88 SSCH    070C20000241FC38 C1668821970F9001
     01 -0018 00000000   I/O   070C2000810D6C6C C166882197122001

     Portanto a idéia seria evitar esse consumo de CPU. Para isso vamos fixar por
tempo indefinido, certos bufferpools do DB2 associados a table spaces de uso mais
intenso. Dessa maneira estaremos consumindo mais central storage frames que agora
ficam indisponiveis para outras páginas.
     É esperado cerca de 30% de economia no DB2 CPU time. Isto implica em
economia de hardware e também de software, pois teremos menos MSUs/hora
consumidos.

     Vamos ver se você imagina agora o que vou escrever…
     Isso mesmo. É preciso ter cuidado de não se matar o doente com o remédio.
Isto quer dizer que a implementação da função tem de ser acompanhada pela
inspeção constante dos indicadores da saúde da memória como: Highest UIC, Page
Fault Rate, Available Queue size.
     Também se recomenda criar mais local page data sets.

      Se você um dia implementar tal função por favor me envie pela internet
(salla@maffei.com.br) seus comentários, para que eu os espalhe aos ventos...

    Contribua para um mundo melhor. Ensine z/OS para os jovens e coma menos
animais...

Más contenido relacionado

La actualidad más candente

Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionais
Carlos Melo
 

La actualidad más candente (20)

(13) nfs
(13) nfs(13) nfs
(13) nfs
 
ICA-AtoM: Criação de um registo de descrição
ICA-AtoM: Criação de um registo de descriçãoICA-AtoM: Criação de um registo de descrição
ICA-AtoM: Criação de um registo de descrição
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
 
ICA-AtoM - Configuração PC
ICA-AtoM - Configuração PCICA-AtoM - Configuração PC
ICA-AtoM - Configuração PC
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
RAM
RAMRAM
RAM
 
Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionais
 
Memória RAM
Memória RAMMemória RAM
Memória RAM
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 
Unidade 3.2 instalação do sistemas operacionais livres
Unidade 3.2   instalação do sistemas operacionais livresUnidade 3.2   instalação do sistemas operacionais livres
Unidade 3.2 instalação do sistemas operacionais livres
 
Roteiro nfs
Roteiro nfsRoteiro nfs
Roteiro nfs
 
S.o aula 2324
S.o aula 2324S.o aula 2324
S.o aula 2324
 
Apresentação Aula Memoria
Apresentação Aula MemoriaApresentação Aula Memoria
Apresentação Aula Memoria
 
Aula 06 memória ram
Aula 06   memória ramAula 06   memória ram
Aula 06 memória ram
 
Aula 13 broffice
Aula 13 brofficeAula 13 broffice
Aula 13 broffice
 
Memória ram
Memória ramMemória ram
Memória ram
 
Tutorial pf sense
Tutorial pf senseTutorial pf sense
Tutorial pf sense
 
(15) samba
(15) samba(15) samba
(15) samba
 
Memória Ram - Aula Completa
Memória Ram - Aula CompletaMemória Ram - Aula Completa
Memória Ram - Aula Completa
 
Projeto BD
Projeto BDProjeto BD
Projeto BD
 

Similar a DB2 bufferpool Pagefixing por Alvaro Salla

InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2
Felipe Santos
 
Essbase Series - Backup
Essbase Series - BackupEssbase Series - Backup
Essbase Series - Backup
Caio Lima
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
elliando dias
 

Similar a DB2 bufferpool Pagefixing por Alvaro Salla (20)

InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Apostila asp
Apostila aspApostila asp
Apostila asp
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
S.o aula 2930
S.o aula 2930S.o aula 2930
S.o aula 2930
 
Performance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXPerformance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MX
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2
 
MODELO ASP
MODELO ASPMODELO ASP
MODELO ASP
 
Crud
CrudCrud
Crud
 
Essbase Series - Backup
Essbase Series - BackupEssbase Series - Backup
Essbase Series - Backup
 
Curso Adabas
Curso AdabasCurso Adabas
Curso Adabas
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoria
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Curso asp - basico
Curso   asp - basicoCurso   asp - basico
Curso asp - basico
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Memória Virtual - Aspectos Básicos
Memória Virtual - Aspectos BásicosMemória Virtual - Aspectos Básicos
Memória Virtual - Aspectos Básicos
 
Htm trabalho
Htm trabalhoHtm trabalho
Htm trabalho
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
Roteadores
RoteadoresRoteadores
Roteadores
 

Más de Joao Galdino Mello de Souza

Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Joao Galdino Mello de Souza
 

Más de Joao Galdino Mello de Souza (20)

Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
 

DB2 bufferpool Pagefixing por Alvaro Salla

  • 1. Palestra: Fixando Bufferpool do DB2 v8 em memórias gigantes 1. Conceito de Bufferpool Começando pelo início se deve dizer que bufferpool é um conjunto de buffers de I/ O (área na memória virtual para onde o bloco físico de um data set é copiado ou de onde é lido durante uma operação de I/O) todos com o mesmo tamanho. A implementação de bufferpools tem um claro viés de melhorar em geral o desempenho informático. Eles servem principalmente para evitar operações de I/O randômicas. O I/O é evitado quando o aplicativo revisita o dado ou o index, que via uma prévia operação de I/O foi carregado e mantido no tal bufferpool pelo software que administra tais dados. É lógico que o I/O mais rápido é o inexistente - que os fabricantes de storage não nos escutem (aliás, eles devem odiar bufferpools – rsrsrs). No caso de I/O seqüencial a existência de um bufferpool com uma quantidade significativa de buffers permite o paralelismo na execução task do aplicativo na CPU concorrente com a execução de operações de I/O no data set. Além disso, vários blocos podem ser transmitidos por I/O, o que diminui consistentemente o tempo connect total para transferir o data set em questão. DB2 usa efetivamente bufferpools para conter suas páginas. Esses podem ser localizados na área privada do DBM1 address space (abaixo e acima da barra), ou em data spaces, ou em hiper spaces (não recomendado). Continuando a discorrer sobre conceitos primitivos, e, portanto, correndo o risco de enfadá-los vamos sumarizar as idéias básicas de memória virtual (lembram do 155- II?). Página é um conjunto de 4K endereços virtuais alinhados em endereços múltiplos de 4K. Talvez seja uma surpresa para vocês, mas agora é possível, em z/OS se ter, opcionalmente, páginas de 1 M endereços... Os endereços de uma página são referenciados pela CPU para acessar instruções e seus operandos. Páginas se localizam virtualmente em address spaces. A criação dos endereços de uma página é requerida por programas aplicativos através dos APIs Getmain e IEARV64 (ver abaixo). GETMAIN LC,LA=length addr,A=addr LU,LA=length addr,A=addr VC,LA=length addr,A=addr VU,LA=length addr,A=addr EC,LV=length value,A=addr EU,LV=length value,A=addr VRU,LV=(maximum length value, minimum length value) SP=subpool nmbr
  • 2. IARV64 REQUEST=GETSTOR, COND=NO, COND=YES, SEGMENTS=segments, FPROT=YES, FPROT=NO, SVCDUMPRGN=YES, SVCDUMPRGN=NO Parâmetros definem a localidade da nova página: • AS private or common area below the line • AS private area or common above the line • AS private and common area above the bar • Uma página também pode ser criada em Dataspaces e Hiperspaces 2. Conceito de Page Fixing O conteúdo físico (instruções e operandos) apontado pelos endereços de uma página pode residir na memória central em frames de 4 KB ou em slots (blocos de I/O) também de 4 KB localizados em página data sets. Neste caso, tal conteúdo foi roubado pelo z/OS, da memória central por serem pouco referenciados e haver falta de frames disponíveis. Veja no relatório abaixo de RMF Monitor III (STORF) o address space DB2MDBM1. Suas páginas se distribuem entre 64897 (TOTAL) contidas em frames da memória central e 3212 (AUX) em slots de pagé data sets.
  • 3. Fixar uma página significa que a partir do momento da fixação, esta página não está disponível para ser roubada de um frame para um slot (page out), mesmo que tenha sido pouco referenciada. A necessidade de se fixar uma pagina tem a ver com a manutenção da integridade. Veja no relatório anterior que das 64897 páginas contidas em frames, 432 estão fixas. O mais freqüente motivo para fixar páginas seria durante a execução de I/O, quando tal página contiver um buffer de I/O sendo referenciado nessa operação de I/O. Como o canal apenas trabalha com endereços reais (não tem DAT), a página contendo um I/O buffer ativo não pode ser roubada. Após o término do I/O a página tem que ser “desfixada” via a função Pagefree do z/OS. 3. Implementando DB2 Bufferpool Pagefix Usando-se a função Trace do z/OS (exemplificada abaixo) se percebeu que a execução freqüente de Pagefix e Pagefree consome muita CPU. PR ASID WU-ADDR- IDENT PSW----- ADDRESS- TIMESTAMP-REC 01- 0018 008E3E88 SSCH 070C20000241FC38 C1668821970F9001 01 -0018 00000000 I/O 070C2000810D6C6C C166882197122001 Portanto a idéia seria evitar esse consumo de CPU. Para isso vamos fixar por tempo indefinido, certos bufferpools do DB2 associados a table spaces de uso mais intenso. Dessa maneira estaremos consumindo mais central storage frames que agora ficam indisponiveis para outras páginas. É esperado cerca de 30% de economia no DB2 CPU time. Isto implica em economia de hardware e também de software, pois teremos menos MSUs/hora consumidos. Vamos ver se você imagina agora o que vou escrever… Isso mesmo. É preciso ter cuidado de não se matar o doente com o remédio. Isto quer dizer que a implementação da função tem de ser acompanhada pela inspeção constante dos indicadores da saúde da memória como: Highest UIC, Page Fault Rate, Available Queue size. Também se recomenda criar mais local page data sets. Se você um dia implementar tal função por favor me envie pela internet (salla@maffei.com.br) seus comentários, para que eu os espalhe aos ventos... Contribua para um mundo melhor. Ensine z/OS para os jovens e coma menos animais...