{"id":73,"date":"2013-03-08T00:37:54","date_gmt":"2013-03-08T03:37:54","guid":{"rendered":"http:\/\/www.fernandosimon.com\/blog\/?p=73"},"modified":"2013-03-08T00:37:54","modified_gmt":"2013-03-08T03:37:54","slug":"oracle-e-hugepages","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/","title":{"rendered":"Oracle e Hugepages"},"content":{"rendered":"<p style=\"text-align: justify;\">Em diversos\u00a0artigos no MOS encontramos informa\u00e7\u00f5es importantes resumidas a uma simples nota de rodap\u00e9 ou a uma \u00fanica linha no meio do texto. Geralmente isso nos leva a pesquisar mais, nos aprofundar no assunto. Foi isso que aconteceu quando estava come\u00e7ando a trabalhar com o Exadata em 2010. Eu estava garimpando algumas notas no MOS atr\u00e1s de informa\u00e7\u00f5es sobre o uso do Exadata com OLTP e encontrei uma breve refer\u00eancia ao uso de Hugepages.<\/p>\n<p style=\"text-align: justify;\">Estava lendo a nota <strong>MOS# 1067520.1<\/strong> (que \u00e9 uma das principais notas sobre desempenho para o Exadata) e l\u00e1 estava a seguinte informa\u00e7\u00e3o: \u201c<i>Hugepages should be used, as this reduces the page table size and also reduces process startup time. Review\u00a0 MOS Note 361323.1 and Note 401749.1 for details on hugepages<\/i>\u201d.<\/p>\n<p style=\"text-align: justify;\">Era uma informa\u00e7\u00e3o literalmente solta\u00a0no meio do texto e achei melhor investigar. A nota <strong>MOS# 361323.1<\/strong> tinha o sugestivo nome de \u201c<i>HugePages on Linux: What It Is&#8230; and What It Is Not&#8230;<\/i>\u201d e era uma \u00f3tima introdu\u00e7\u00e3o ao que \u00e9 Hugepages. J\u00e1 tinha ouvido sobre Hugepages e Oracle, mas isso era para Oracle 9 em ambientes 32 bits com mais de 4GB de mem\u00f3ria.<\/p>\n<p style=\"text-align: justify;\"><!--more Continue lendo...--><\/p>\n<p style=\"text-align: justify;\">De forma resumida hoje em dia Hugepages \u00e9 a forma como podemos acessar ou utilizar p\u00e1ginas de mem\u00f3ria com tamanho maior que o convencional no Linux kernel 2.6 em diante. Antes de come\u00e7ar a falar de Hugepages precisamos apresentar alguns pontos:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>Page Table<\/strong>: \u00e9 uma estrutura que tem o mapeamento entre os endere\u00e7os de mem\u00f3ria f\u00edsica e virtual. Isso quer dizer que quando um aplicativo acessar a mem\u00f3ria, primeiro ele l\u00ea a Page Table para identificar o endere\u00e7o f\u00edsico necess\u00e1rio para o acesso.<\/li>\n<li><strong>TLB<\/strong>: significa <em>Translation Lookaside Buffer<\/em>, \u00e9 um pequeno buffer\/cache que fica no processador para armazenar a Page table (ou parte desta). Est\u00e1 no CPU para permitir uma tradu\u00e7\u00e3o mais r\u00e1pida dos endere\u00e7os.<\/li>\n<li><strong>Hugetlb<\/strong>: S\u00e3o as entradas na TLB que apontam para endere\u00e7os de hugepages, assim o acesso \u00e9 direto e est\u00e1 mapeado no cache do CPU.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">De forma simplificada, Hugepages permite que sejam utilizadas p\u00e1ginas de mem\u00f3ria com um tamanho maior que o padr\u00e3o do sistema operacional. Com isso, temos algumas vantagens em rela\u00e7\u00e3o a sistema tradicional.<\/p>\n<p style=\"text-align: justify;\">Partindo do principio que de que uma p\u00e1gina de mem\u00f3ria \u00e9 uma por\u00e7\u00e3o da mem\u00f3ria total do sistema, com p\u00e1ginas no tamanho padr\u00e3o do Linux (4k) temos uma grande quantidade de p\u00e1ginas dispon\u00edveis. Mas, fazendo uma conta r\u00e1pida, o tamanho da Page Table para armazenar todos os endere\u00e7os e p\u00e1ginas de mem\u00f3rias ficar\u00e1 grande. Imagine o overhead para percorrer a tabela em busca de um endere\u00e7o dispon\u00edvel.<\/p>\n<p style=\"text-align: justify;\">Utilizando Hugepages tomos algumas vantagens quando comparamos com o modelo acima:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>Sem Swap<\/strong>: Por defini\u00e7\u00e3o, Hugepages n\u00e3o v\u00e3o para Swap. Imagine um banco de dados que n\u00e3o vai para swap, que n\u00e3o precisa trocar contexto para acessar a mem\u00f3ria, sem Page fault. Para entender porque swap deve ser evitada no Oracle, basta ler a nota <strong>MOS#\u00a01295478.1<\/strong>.<\/li>\n<li><strong>Menor overhead sobre a TLB<\/strong>: Com o uso de Hugepages, a lista de endere\u00e7os de acesso para mapear toda a mem\u00f3ria \u00e9 menor, com isso a TLB fica menor e mais r\u00e1pida.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">A Oracle recomenda o uso de Hugepages n\u00e3o somente para o Exadata, mas para todo o banco de dados que rode no Linux e que tenha uma grande quantidade de mem\u00f3ria. N\u00e3o existe limite m\u00ednimo nem m\u00e1ximo para o uso de Hugepages, se a soma de suas SGA\u2019s que rodam no servidor for maior que 8GB, recomenda-se o uso.<\/p>\n<p style=\"text-align: justify;\">Para utilizar Hugepages alguns passos s\u00e3o necess\u00e1rios, na nota <strong>MOS# 361468.1<\/strong> temos listados alguns passos. A nota esconde alguns detalhes que gostaria de resaltar, em compara\u00e7\u00e3o com o que est\u00e1 na lista da nota os passos que utilizei foram diferentes.<\/p>\n<p style=\"text-align: justify;\">Primeiramente temos que verificar qual o tamanho da nossa p\u00e1gina\u00a0de mem\u00f3ria para a\u00a0HugePages. Geralmente \u00e9 padronizada por vers\u00e3o do Kernel, para o 2.6 x64 bits \u00e9 de 2MB, mas \u00e9 sempre bom verificar. Para isso basta dar uma passada no <strong>\/proc\/memeinfo |grep Huge<\/strong>. Abaixo, um exemplo extra\u00eddo de um DBNode do Exadata:<\/p>\n<pre>[root@exadb01 ~]# cat \/proc\/meminfo |grep Huge\r\nHugePages_Total: 20250\r\nHugePages_Free:   4580\r\nHugePages_Rsvd:   4567\r\nHugepagesize:     2048 kB\r\n[root@exadb01 ~]#<\/pre>\n<p style=\"text-align: justify;\">Com isso sabemos que\u00a0o tamanho da p\u00e1gina\u00a0tem\u00a02MB, mas isso pode ser alterado via sysctl. N\u00e3o achei nada relacionado ao Oracle quanto ao tamanho de p\u00e1gina, acredito que o tamanho padr\u00e3o do Linux seja suficiente.<\/p>\n<p style=\"text-align: justify;\">Quando utilizamos Hugepages temos que nos acostumar a consultar o \/proc\/meminfo, pois ali \u00e9 a fonte principal para verificar a sa\u00fade da sua Hugepages. Com este output podemos observar que temos:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>HugePages_Total<\/strong>: representam o total de Hugepages que foram alocadas. Um detalhe importante \u00e9 que a Hugepages fica previamente alocada, se voc\u00ea alocou 20GB de Hugepages, mas s\u00f3 usa 5, os 20GB j\u00e1 ficar\u00e3o alocados. N\u00e3o que isso seja ruim, se voc\u00ea tem um servidor dedicado ao banco de dados a mem\u00f3ria deveria ser dedicada a ele.<\/li>\n<li><strong>HugePages_Free<\/strong>: o n\u00famero de p\u00e1ginas que n\u00e3o foram utilizadas.<\/li>\n<li><strong>HugePages_Rsvd<\/strong>: n\u00famero de p\u00e1ginas que foram reservadas para uso, significa que foram sinalizadas ao S.O. a inten\u00e7\u00e3o de uso m\u00e3o ainda n\u00e3o o foram utilizadas.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Antes de prosseguir com o passo a passo uma historinha sobre como calcular o uso de HugePages. Para saber quantas p\u00e1ginas foram utilizadas e ou est\u00e3o livres temos que fazer algumas contas e ai temos um segredo. Tomando o exemplo acima, apesar de aparecer 4580 p\u00e1ginas livres isso n\u00e3o reflete o valor correto de p\u00e1ginas livres, vou exemplificar.<\/p>\n<p style=\"text-align: justify;\">Na vers\u00e3o 11.2.0.2 temos um (vamos chamar de) \u201cbug\u201d na identifica\u00e7\u00e3o das Hugepages, nada relacionado ao seu uso (erros de acesso ou aloca\u00e7\u00e3o) mas na forma como o Oracle conta o que est\u00e1 livre e o que est\u00e1 reservado. No ambiente de onde\u00a0retirei o exemplo eu tinha alocado 19990 para a Hugepages e destas estava com 10033 livres. Mesmo assim\u00a0o Oracle reclamada em subir uma inst\u00e2ncia com SGA de 1GB. O log era o seguinte:<\/p>\n<pre>****************** Huge Pages Information *****************\r\nHuge Pages memory pool detected (total: 19990 free: 10735)\r\nHuge Pages allocation failed (free: 10033 required: 1025) &lt;&lt;&lt;&lt; FAILED\r\nAllocation will continue with default\/smaller page size<\/pre>\n<p style=\"text-align: justify;\">Como voc\u00ea pode ver, ele tentava alocar 1025 p\u00e1ginas e n\u00e3o conseguia, mesmo tendo 10033 listadas como livres. Se eu subisse um pouco o n\u00famero de Hugepages no Linux para 20250 tudo iniciava corretamente. Bom, depois de uma SR n\u00edvel 1 e um bug aberto veio a explica\u00e7\u00e3o do problema.<\/p>\n<p style=\"text-align: justify;\">Em s\u00edntese, a vers\u00e3o 11.2.0.2 utiliza uma l\u00f3gica errada para o c\u00e1lculo de p\u00e1ginas livres, o Oracle lia o valor de HugePages_free e usava isso como refer\u00eancia, e infelizmente isso n\u00e3o \u00e9 verdade. Na \u00e9poca do exemplo eu tinha estes valores aproximadamente:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>HugePages_Total<\/strong>: 19990 \u2013 n\u00famero total de p\u00e1ginas para Hugepages.<\/li>\n<li><strong>HugePages_Free<\/strong>: 8999 \u2013 p\u00e1ginas que ainda n\u00e3o foram utilizadas, mas podem estar reservadas.<\/li>\n<li><strong>HugePages_Rsvd<\/strong>: 8221 \u2013 reservadas, mas n\u00e3o usadas.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">O segredo \u00e9 que HugePages_Free representa o n\u00famero de<strong> p\u00e1ginas livres + as reservadas<\/strong> (HugePages_Rsvd). O m\u00e9todo correto para o c\u00e1lculo de Hugepages livres \u00e9 a seguinte <strong>HugePages_Free &#8211; HugePages_Rsvd<\/strong>. No meu caso eu tinha s\u00f3 769 livres, o que causava um erro j\u00e1 que eu precisava de 1025. Como falei antes o \u201cbug\u201d estava na forma como Oracle apresentava esta informa\u00e7\u00e3o no alertlog, ele simplesmente imprima HugePages_Free sem desconsiderar as reservadas.<\/p>\n<p style=\"text-align: justify;\">Isso j\u00e1 foi corrigido na 11.2.0.3, agora um alertlog bem mais informativo est\u00e1 presente. O bug relacionado era o 12976195 (<em>POOR DIAGNOSTICS WHEN STARTING INSTANCE AND HUGEPAGES ARE ENABLED<\/em>). Portanto, se voc\u00ea estiver usando a 11.2.0.2 cuidado com a informa\u00e7\u00e3o presente no alertlog (isso inclui a vers\u00e3o do \u00faltimo BP para o Exadata).<\/p>\n<p style=\"text-align: justify;\">Ent\u00e3o a f\u00f3rmula correta para saber o que j\u00e1 foi utilizado e o tamanho total \u00e9: <strong>HugePages_Total &#8211; (HugePages_Free &#8211; HugePages_Rsvd) = Total em uso x Hugepagesize.<\/strong> No meu caso s\u00e3o aproximadamente 40GB de HugePages ( 20250 &#8211; (4580-4567) = 20237 x 2048 kB = 41445376 \/ 1024\u00a0 = 40474MB ) em uso e consequentemente s\u00f3 13 p\u00e1ginas livres.<\/p>\n<p style=\"text-align: justify;\">Para quem queira usar Hugepages \u00e9 fundamental\u00a0verificar se o seu banco de dados est\u00e1 utilizando <strong>Automatic Memory Management (AMM)<\/strong>. Caso esteja usando, ele deve ser desligado, pois o AMM \u00e9 incompat\u00edvel com o Hugepages. Para bases OLTP verifique que voc\u00ea n\u00e3o est\u00e1 usando os par\u00e2metros MEMORY_TARGET e MEMORY_MAX_TARGET, defina ambos como 0 e ajuste a sua SGA.<\/p>\n<p style=\"text-align: justify;\">Com\u00a0AMM a mem\u00f3ria \u00e9 alocada atrav\u00e9s da <strong>\/dev\/shm<\/strong>. O Fl\u00e1vio Soares fez uma an\u00e1lise bem interessante disso que pode ser lida <a title=\"AMM\" href=\"http:\/\/flaviosoares.com\/2012-10\/entendendo-o-erro-ora-00845-com-oracle-internals\/\" target=\"_blank\">aqui. <\/a> Em resumo, como o Hugepages referencia diretamente a p\u00e1ginas de mem\u00f3ria e n\u00e3o a arquivos no \/dev\/shm. O\u00a0AMM n\u00e3o tem como alocar a mem\u00f3ria, assim n\u00e3o\u00a0 configure os par\u00e2metros MEMORY_TARGET e MEMORY_MAX_TARGET. Caso tenha d\u00favidas voc\u00ea pode ler a nota <strong>MOS# 749851.1<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s sabermos o tamanho da nossa p\u00e1gina, temos que alocar mem\u00f3ria para a Hugepages. Aqui temos outro pequeno detalhe, para calcularmos o valor correto podemos utilizar o script disponibilizado na nota <strong>MOS# 401749.1<\/strong>. Para ilustrar vamos fazer a conta por n\u00f3s mesmo, assim caso voc\u00ea n\u00e3o tenha acesso ao MOS pode fazer voc6e mesmo. O script presente na nota faz uma conta simples, ele pega a quantidade de segmentos de shared memory atualmente utilizados pelo Oracle (atrav\u00e9s do comando <strong>ipcs \u2013m<\/strong>) e divide pelo tamanho da p\u00e1gina do Hugepages. Assim no meu caso temos:<\/p>\n<pre>[root@exadb01 ~]# ipcs -m |grep oracle\r\n0x69700aac 4554759    oracle    660        4096       0\r\n0xe882257c 4685832    oracle    660        2149580800 57\r\n0xe3b39988 5537801    oracle    660        4297064448 94\r\n0xcbb9b93c 5603338    oracle    660        4297064448 91\r\n0x79aceee8 4849675    oracle    660        6712983552 51\r\n0x47eafa00 4882444    oracle    660        6712983552 50\r\n0x158e4cf8 4947981    oracle    660        2149580800 55\r\n0x99f7c454 5668878    oracle    660        4297064448 85\r\n0x554012e8 5079055    oracle    660        2149580800 50\r\n0xf0a0c2b0 5734416    oracle    660        2149580800 75\r\n0xc5602aa0 5275665    oracle    660        2149580800 59\r\n0x4300d7a0 5865490    oracle    660        1612709888 63\r\n0x98686b58 5373971    oracle    660        1612709888 83\r\n0x1c03c7c0 5406740    oracle    660        2149580800 64\r\n0x4fb2246c 5472277    oracle    660        4096       0\r\n[root@exadb01 ~]#<\/pre>\n<p style=\"text-align: justify;\">O detalhe aqui \u00e9 que tanto o script quanto o ipcs n\u00e3o s\u00e3o muito seletivos quanto as bases que devem ou n\u00e3o entrar na conta. N\u00e3o conhe\u00e7o nenhum m\u00e9todo para filtrar a informa\u00e7\u00e3o no ipcs que nos leve a associa\u00e7\u00e3o de quem \u00e9 o processo dono da mem\u00f3ria listada na sa\u00edda do comando. No meu caso, tenho 13 bases OLTP rodando no meu Exadata, mais uma DW e mais o ASM. Como visto no output tenho 15 processos Oracle. Voc\u00ea pode parar as bases que n\u00e3o s\u00e3o OLTP para que elas n\u00e3o entrem na conta (ignore o fato do ASM aparecer na lista). Lembre-se que Hugepages s\u00e3o recomendadas somente para bases OLTP.<\/p>\n<p style=\"text-align: justify;\">Se voc\u00ea n\u00e3o tiver o script a conta \u00e9 simples, para cada uma das linhas reportadas no ipcs voc\u00ea divide este valor pelo tamanho da p\u00e1gina da Hugepages e multiplica por 1024 (pois como o shared memory \u00e9 em bytes temos que igualar as grandezas). Assim, temos a seguinte f\u00f3rmula aplicada a cada linha do ipcs: <strong>&lt;shared memory&gt;\/(Hugepagesize*1024)<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Se este valor for maior ou igual a 1 deve-se somar este resultado com os das outras linhas para chegar no total de HugePages. A Oracle ainda recomenda somar uma p\u00e1gina a mais para cada linha devido a um pequeno overhead que pode existir. No caso acima ter\u00edamos um valor de 20250 Hugepages. Claro que o ideal seria ter o script, mas a conta b\u00e1sica \u00e9 essa.<\/p>\n<p style=\"text-align: justify;\">Com esse n\u00famero em m\u00e3os podemos alocar as Hugepages. Para isso, voc\u00ea pode utilizar o <strong>sysctl vm.nr_hugepages<\/strong> para algo moment\u00e2neo, ou escrever no \/etc\/sysctl.conf para ficar salvo entre cada reboot. Um exemplo do meu sysctl est\u00e1 abaixo:<\/p>\n<pre>[root@exadb01 tmp]# cat \/etc\/sysctl.conf |grep huge\r\nvm.nr_hugepages = 20250\r\n[root@exadb01 tmp]#<\/pre>\n<p style=\"text-align: justify;\">Caso voc\u00ea esteja fazendo isso no Exadata ignore mensagens de alerta do sysctl.conf quanto ao par\u00e2metro de Hugepages. Com isso elas podem ser alocadas, mas antes um outro segredo operacional. Nunca aloque as suas Hugepages com as suas inst\u00e2ncias iniciadas. Pegando o exemplo acima, eu tenho toas as minhas inst\u00e2ncias ativas ocupando em torno de 55GB de mem\u00f3ria, se eu for alocar o Hugepages agora posso travar o meu Linux, pois estou tentando alocar 40GB de Hugepages (20250*2048) e somando isso ao que j\u00e1 est\u00e1 sendo consumido irei extrapolar a quantidade de mem\u00f3ria dispon\u00edvel. E ainda piorando, pois como Hugepages n\u00e3o v\u00e3o para swap, entregamos uma bomba para o S.O. resolver. Ent\u00e3o, recomendo parar todas as inst\u00e2ncias antes de alocar a sua Hugepages via sysctl.<\/p>\n<p style=\"text-align: justify;\">Voc\u00ea pode fazer a aloca\u00e7\u00e3o din\u00e2mica da Hugepages atrav\u00e9s do sysctl, isso pode ser \u00fatil para testar se suas inst\u00e2ncias est\u00e3o corretamente configuradas e sem AMM. Assim voc\u00ea pode testar subir cada uma das inst\u00e2ncias e acompanhar no alertlog se as Hugepages est\u00e3o sendo alocadas. Caso elas estejam sendo utilizadas corretamente, no alertlog teremos algo parecido com isso na vers\u00e3o 11.2.0.2:<\/p>\n<pre>****************** Huge Pages Information *****************\r\nHuge Pages memory pool detected (total: 20250 free: 8603)\r\nDFLT Huge Pages allocation successful (allocated: 2049)\r\n***********************************************************<\/pre>\n<p style=\"text-align: justify;\">E na vers\u00e3o 11.2.0.3 em diante:<\/p>\n<pre>****************** Large Pages Information *****************\r\nTotal Shared Global Region in Large Pages = 32 GB (100%)\r\nLarge Pages used by this instance: 16367 (32 GB)\r\nLarge Pages unused system wide = 49992 (98 GB) (alloc incr 64 MB)\r\nLarge Pages configured system wide = 150000 (293 GB)\r\nLarge Page size = 2048 KB\r\n***********************************************************<\/pre>\n<p style=\"text-align: justify;\">N\u00e3o recomendo fazer como sugerido na <strong>MOS# 361468.1<\/strong>, que ap\u00f3s definir no sysctl.conf j\u00e1 pede um reboot. Acho por bem testar a aloca\u00e7\u00e3o de cada inst\u00e2ncia e depois sim fazer o reboot. Fa\u00e7o isso, pois ca\u00edmos no mesmo caso de antes, ap\u00f3s o reboot todas as inst\u00e2ncias ir\u00e3o subir e caso elas n\u00e3o estejam usando Hugepages n\u00e3o teremos mem\u00f3ria suficiente.<\/p>\n<p style=\"text-align: justify;\">Mesmo assim nem tudo s\u00e3o flores, dependendo a vers\u00e3o que voc\u00ea esteja rodando do seu banco (em espec\u00edfico a 11.2.0.2) podemos cair em um BUG de do CRS, especificamente o <strong>#9084067<\/strong>. Esse n\u00e3o \u00e9 nenhum bug presente nos bin\u00e1rios ou que precise de patch aplicado, \u00e9 um simples erro de <strong>ulimit<\/strong> n\u00e3o configurado. Para corrigir basta editar o arquivo <strong>ohasd<\/strong> do init e trocar a linha:<\/p>\n<pre>start()\r\n {\r\n   $ECHO -n $\"Starting $PROG: \"<\/pre>\n<p style=\"text-align: justify;\">Por:<\/p>\n<pre>start()\r\n {\r\n   $ECHO -n $\"Starting $PROG: \"\r\n   ulimit -n 65536\r\n   ulimit -l \"valor levemente inferior ao tamanho da mem\u00f3ria em bytes\"<\/pre>\n<p style=\"text-align: justify;\">Isso \u00e9 necess\u00e1rio, pois como ohasd \u00e9 chamado como um usu\u00e1rio diferente do Oracle ele pode n\u00e3o ter permiss\u00f5es para alocar tanta mem\u00f3ria quanto o que foi definido para Hugepages. Caso voc\u00ea tenha acesso ao MOS, esse bug j\u00e1 foi corrigido no PSU2 do Oracle vers\u00e3o 11.2.0.2. Mas caso n\u00e3o o tenha fique atento a isso. Isso est\u00e1 listado nas notas <strong>MOS# 983715.1<\/strong> e para Exadata na <strong>MOS# 1284261.1<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Acredito que para o uso de Hugepages no Oracle sejam estes os detalhes. Se voc\u00ea observar os passos que listei acima diferem do que s\u00e3o encontrados na nota <strong>MOS# 361468.1<\/strong>, procurei al\u00e9m de listar os passos explicar cada um deles. Nem todos essas passos s\u00e3o simples ou claros na primeira leitura, mas tentei explicar em detalhes cada um deles.<\/p>\n<p style=\"text-align: justify;\">Quando voc\u00ea observa as vantagens de ter um banco de dados que tem custo m\u00ednimo na aloca\u00e7\u00e3o de mem\u00f3ria, que roda sempre em mem\u00f3ria sem nunca ir para a swap e que o seu mapeamento de mem\u00f3ria est\u00e1 no cache do processador as vantagens de Hugepages sobre a aloca\u00e7\u00e3o tradicional s\u00e3o interessantes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em diversos\u00a0artigos no MOS encontramos informa\u00e7\u00f5es importantes resumidas a uma simples nota de rodap\u00e9 ou a uma \u00fanica linha no meio do texto. Geralmente isso nos leva a pesquisar mais, nos aprofundar no assunto. Foi isso que aconteceu quando estava come\u00e7ando a trabalhar com o Exadata em 2010. Eu estava garimpando algumas notas no MOS [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[21,6,20,19,18,5],"tags":[],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-amm","category-exadata","category-hugepages","category-linux","category-memoria","category-oracle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Oracle e Hugepages - Fernando Simon<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle e Hugepages - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Em diversos\u00a0artigos no MOS encontramos informa\u00e7\u00f5es importantes resumidas a uma simples nota de rodap\u00e9 ou a uma \u00fanica linha no meio do texto. Geralmente isso nos leva a pesquisar mais, nos aprofundar no assunto. Foi isso que aconteceu quando estava come\u00e7ando a trabalhar com o Exadata em 2010. Eu estava garimpando algumas notas no MOS [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-08T03:37:54+00:00\" \/>\n<meta name=\"author\" content=\"Simon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"Oracle e Hugepages\",\"datePublished\":\"2013-03-08T03:37:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\"},\"wordCount\":2423,\"commentCount\":3,\"articleSection\":[\"AMM\",\"Exadata\",\"Hugepages\",\"Linux\",\"Mem\u00f3ria\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\",\"name\":\"Oracle e Hugepages - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"datePublished\":\"2013-03-08T03:37:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle e Hugepages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/\",\"name\":\"Fernando Simon\",\"description\":\"Have you hugged your backup today?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\",\"name\":\"Simon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"caption\":\"Simon\"},\"sameAs\":[\"http:\/\/www.fernandosimon.com\"],\"url\":\"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Oracle e Hugepages - Fernando Simon","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/","og_locale":"en_US","og_type":"article","og_title":"Oracle e Hugepages - Fernando Simon","og_description":"Em diversos\u00a0artigos no MOS encontramos informa\u00e7\u00f5es importantes resumidas a uma simples nota de rodap\u00e9 ou a uma \u00fanica linha no meio do texto. Geralmente isso nos leva a pesquisar mais, nos aprofundar no assunto. Foi isso que aconteceu quando estava come\u00e7ando a trabalhar com o Exadata em 2010. Eu estava garimpando algumas notas no MOS [&hellip;]","og_url":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/","og_site_name":"Fernando Simon","article_published_time":"2013-03-08T03:37:54+00:00","author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"Oracle e Hugepages","datePublished":"2013-03-08T03:37:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/"},"wordCount":2423,"commentCount":3,"articleSection":["AMM","Exadata","Hugepages","Linux","Mem\u00f3ria","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/","url":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/","name":"Oracle e Hugepages - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"datePublished":"2013-03-08T03:37:54+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/oracle-e-hugepages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle e Hugepages"}]},{"@type":"WebSite","@id":"https:\/\/www.fernandosimon.com\/blog\/#website","url":"https:\/\/www.fernandosimon.com\/blog\/","name":"Fernando Simon","description":"Have you hugged your backup today?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9","name":"Simon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","caption":"Simon"},"sameAs":["http:\/\/www.fernandosimon.com"],"url":"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ofTp-1b","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/comments?post=73"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/73\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}