Palestra: Fixando Bufferpool do DB2 v8 em memórias gigantes1. Conceito de Bufferpool      Começando pelo início se deve di...
IARV64     REQUEST=GETSTOR,     COND=NO,     COND=YES,     SEGMENTS=segments,     FPROT=YES,     FPROT=NO,     SVCDUMPRGN=...
Fixar uma página significa que a partir do momento da fixação, esta página nãoestá disponível para ser roubada de um frame...
Upcoming SlideShare
Loading in...5
×

DB2 bufferpool Pagefixing por Alvaro Salla

396

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
396
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DB2 bufferpool Pagefixing por Alvaro Salla

  1. 1. Palestra: Fixando Bufferpool do DB2 v8 em memórias gigantes1. 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 deonde é lido durante uma operação de I/O) todos com o mesmo tamanho. Aimplementação de bufferpools tem um claro viés de melhorar em geral o desempenhoinformá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 deI/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 nosescutem (aliás, eles devem odiar bufferpools – rsrsrs). No caso de I/O seqüencial a existência de um bufferpool com uma quantidadesignificativa de buffers permite o paralelismo na execução task do aplicativo na CPUconcorrente com a execução de operações de I/O no data set. Além disso, váriosblocos podem ser transmitidos por I/O, o que diminui consistentemente o tempoconnect total para transferir o data set em questão. DB2 usa efetivamente bufferpools para conter suas páginas. Esses podem serlocalizados na área privada do DBM1 address space (abaixo e acima da barra), ou emdata spaces, ou em hiper spaces (não recomendado). Continuando a discorrer sobre conceitos primitivos, e, portanto, correndo o riscode 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últiplosde 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ãoreferenciados pela CPU para acessar instruções e seus operandos. Páginas selocalizam 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 (verabaixo). 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. 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 Hiperspaces2. Conceito de Page Fixing O conteúdo físico (instruções e operandos) apontado pelos endereços de umapá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 roubadopelo z/OS, da memória central por serem pouco referenciados e haver falta de framesdisponíveis. Veja no relatório abaixo de RMF Monitor III (STORF) o address spaceDB2MDBM1. Suas páginas se distribuem entre 64897 (TOTAL) contidas em frames damemória central e 3212 (AUX) em slots de pagé data sets.
  3. 3. Fixar uma página significa que a partir do momento da fixação, esta página nãoestá disponível para ser roubada de um frame para um slot (page out), mesmo quetenha sido pouco referenciada. A necessidade de se fixar uma pagina tem a ver com amanutenção da integridade. Veja no relatório anterior que das 64897 páginas contidasem 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 contendoum 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 doz/OS.3. Implementando DB2 Bufferpool Pagefix Usando-se a função Trace do z/OS (exemplificada abaixo) se percebeu que aexecuçã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 portempo indefinido, certos bufferpools do DB2 associados a table spaces de uso maisintenso. Dessa maneira estaremos consumindo mais central storage frames que agoraficam indisponiveis para outras páginas. É esperado cerca de 30% de economia no DB2 CPU time. Isto implica emeconomia de hardware e também de software, pois teremos menos MSUs/horaconsumidos. 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 pelainspeção constante dos indicadores da saúde da memória como: Highest UIC, PageFault 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 menosanimais...

×