none
Configurando uso de memória e AWE no SQL SERVER 2005 RRS feed

  • Pergunta

  • Prezados,

    Instalei o SQL SERVER 2005 Enterprise Edition (com SP3) em um servidor com Windows Server 2003 Enterprise Editon SP2 com 8 GB de memória RAM e com "Physical Address Extension".

    Pretendo que o SQL SERVER 2005 faça uso da memória que está além dos 4 GB e vou realizar os seguintes passos para conseguir isto :

    1) Adicionarei a chave de serviço do SQL SERVER para a policy "lock pagens in memory"

    2) Incluirei o /PAE no arquivo Boot.ini

    3) Alterarei o "awe enabled" com os comandos abaixo :

    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'awe enabled', 1
    RECONFIGURE
    GO


    4) Alterar "min server memory" e "max server memory" com os comandos abaixo :

    sp_configure 'min server memory', 1024
    RECONFIGURE
    GO
    sp_configure 'max server memory', 8192
    RECONFIGURE
    GO


    5) Alterar a opção "Maximize Data Throughput for Network Application" da seguinte forma :

    No "Painel de Controle",  double-click em "Network Connections" e depois double-click em "Local Area Connection".

    Na aba "General", clicar em "Properties", selecionar "File and Printer Sharing Microsoft Networks" e depois clicar em "Properties".

    Selecionar "Maximize data throughput for network applications", clicar em OK e depois fechar todas as caixas de diálogo.

    Obs : Isso foi visto no link http://msdn.microsoft.com/en-us/library/ms179301.aspx. O problema é que o link http://msdn.microsoft.com/en-us/library/ms178067.aspx contradiz o anterior e manda marcar qualquer opção diferente de "Maximize data throughput for network applications". Isso me confundiu bastante. Afinal, qual é o certo ?

    Minha pergunta (além da dúvida acima sobre os links contraditórios) é se eu estou realizando todos os passos necessários para utilização da memória física extra (além dos 4 GB) ou ainda falta alguma coisa ?

    Obrigado antecipadamente.

    José Luiz

     

    segunda-feira, 11 de outubro de 2010 23:22

Respostas

Todas as Respostas

  • Bom dia José,

    Da uma olhada nesse artigo onde escrevi sobre uma experiência que tive sobre esse assunto:

    http://fabriciolima.net/blog/2010/08/09/utilizacao-de-mais-de-3gb-de-memoria-no-sql-server-em-um-ambiente-32-bits/

     

     


    Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.wordpress.com/ | Dicas de artigos SQL: Siga-me no twitter @fabriciodba.
    terça-feira, 12 de outubro de 2010 14:14
  • Bom dia, Fabricio,
    Obrigado pela resposta.
    Li com atenção seu artigo e pelo que pude ver, o /PAE não será necessário incluir no Boot.ini somente para sistemas Windows Server 2003 R2.

    Quanto a opção /3GB eu não a mencionei na minha pergunta não foi por esquecimento e sim de propósito, pois eu li no site http://blogs.technet.com/b/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx que ela pode atrapalhar, muito mais que ajudar e dev ser usada em situações bem específicas.

    Se você puder, dê uma olhada nesse site e me diga sua opinião.

    De qualquer forma, mais uma vez, muito obrigado.

    quarta-feira, 13 de outubro de 2010 13:14
  • Fala josé,

    Li o artigo e realmente ele traz bastante problemas para a utilização do /3GB. Mas como ele mesmo diz, existem casos e casos.

    Meu servidor de produção é dedicado ao SQL Server, mas é 32 bits e possui apenas 4Gb de memória. Logo, com 1500 conexões simultaneas no banco de dados, meu maior gargalo é memória. Hoje meu processo do SQL Server consome 2.7 GB de memória graças a opção /3GB. Se com esses 2.7 meus contadores de memórias já são problemáticos, imagina sem a opção /3Gb que faria meu processo do SQL Server utilizar aproximadamente 1.8 Gb de memória?

    Como memória é muito importante para o SQL Server e eu tenho um gargalo de memória, utilizo a opção /3GB a mais de 2 anos e nunca tive um problema nesse servidor.

    Abraços...

     

     


    Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.wordpress.com/ | Dicas de artigos SQL: Siga-me no twitter @fabriciodba.
    quinta-feira, 14 de outubro de 2010 01:02
  • José,

    A opção /3GB é altamente recomendável ser utilizada quando se deseja configura mais de 3GB de memória a ser alocadas para o SQL Server em ambiente 32 bits. Já a opção /PAE não é necessário em ambientes 32 bits, esta opção deve ser utilizada somente em sistemas operacionais 64 bits com mais de 8GBs de memória RAM.

    O artigo destaca que a opção /PAE é utilizada automaticamente no Windows Server 2003 R2, ele já identifica a quantidade de memória e habilita este opção por padrão.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 14 de outubro de 2010 17:57
    Moderador
  • Boa Tarde,

    Gostaria apenas de complementar:

    - Quando você instala o SQL Server e indica uma conta de serviço, ela já ganha os privilégios de Lock Pages In Memory
    - Quando você faz a troca da conta de serviço pelo SQL Server Configuration Manager, esse privilégio também é concedido para a nova conta
    - Apenas quando você faz alterações pelo Services.MSC que esses privilégios não são concedidos, por isso o SQL Server Configuration Manager é indicado
    - Não coloque a quantidade de memória máxima, pois, o SO também tem de respirar. Se você tem um servidor de 8GB, deixe pelo menos uma sobra para o SO (1GB que seja).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Utilizando Common Table Expressions (CTEs) para estruturação de MENUs – Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1145.entry

    Utilizando Common Table Expressions (CTEs) para estruturação de MENUs – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1148.entry


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 14 de outubro de 2010 20:44
  • Prezado Junior,
    Obrigado por sua resposta.

    Porém, agora eu fiquei confuso com ela. Sempre soube que a utilização do switch /PAE no Boot.ini é um recurso para fazer aplicações 32 bits (x86) "enxergarem" mais memória física além dos tradicionais 4 GB (2 GB p/ kernel e 2 GB para user-mode), permitidos pelo VAS (Virtual Address Space). Isso, claro, em servidores que possuam mais do que 4 GB de memória física.

    Inclusive alguns vários links, em sua maioria, comentam neste sentido (caso queira, pode ver abaixo) :

    http://sqlnerd.blogspot.com/2006/07/memory-use-in-sql-server.html

    http://networkadminkb.com/kb/Knowledge%20Base/SQL/How%20to%20configure%20SQL%20Server%202005%20to%20use%20more%20than%202GB%20memory.aspx

    http://blogs.msdn.com/b/chadboyd/archive/2007/03/24/pae-and-3gb-and-awe-oh-my.aspx

    http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/ad570cfd-05ec-4b21-b542-562b2c32716a/

    http://ms-abhay.blogspot.com/2008/02/shall-we-use-pae-and-3gb-switches.html

    Aí quando você comenta que a opção /PAE é desnecessária em ambientes 32 bits e que só é aplicável para ambientes 64 bits, eu não entendi mais nada, pois pensei que era exatamente o contrário.

    Sobre o switch /3GB, não mencionei em usar pois, além de ler que o uso da mesma precisa ser muito bem estudado, ela refere-se a memória virtual e eu estou querendo utilizar memória física, além dos 4 GB.

    Estou fazendo alguma confusão de idéias ? Se estiver, por favor, poderia me esclarecer melhor ?

    Desde já, muito obrigado.

    José Luiz

    sexta-feira, 15 de outubro de 2010 03:34
  • Prezado Gustavo,
    Muito obrigado pela resposta também.

    Bem, a experiência que tive  quando da instalação do SQL SERVER 2005, indicando uma conta de domínio para "levantar" o serviço SQL é que o procedimento não funcionou. Apresentou um erro que, agora, infelizmente não lembro para postar pra você ver.

    Então instalei-o sob a "Local System" e aí foi tudo bem. Em seguida, fui no "SQL Server Configuration Manager" e alterei o serviço SQL SERVER para "levantar" com a conta de domínio que eu pretendia inicialmente. Aí funcionou, porém a policy "Lock pages in memory" não foi automaticamente habilitada para esta conta não. Tive que abrir o "secpol.msc" e adicionar manualmente a conta na respectiva policy.

    Não sei o que pode ter acontecido.

    Obrigado, mais uma vez.

    José Luiz
    sexta-feira, 15 de outubro de 2010 03:51
  • Prezado Fabricio,
    Obrigado mais uma vez pelo retorno.

    Quanto a opção /3GB, os vários artigos e "papers" que leio são praticamente unânimes em afirmar que deve ser usado com bastante critério e após um estudo feito.

    Um outro artigo interessante sobre o tema, segue abaixo :

    http://blogs.msdn.com/b/chadboyd/archive/2007/03/24/pae-and-3gb-and-awe-oh-my.aspx

    Obviamente, como você disse, cada caso é um caso e o seu especificamente creio que você tenha se cercado dos cuidados necessários para usar a opção "com os pés no chão", inclusive com ganhos de performance.

    Eu só me preocupo em tomar cuidado para não fazer o "uso pelo uso" apenas. Você deve saber que algumas pessoas tem a tendência de utilizarem todos os "recursos" que tomam conhecimento, sem tomar os devidos cuidados, sabendo os "prós" e os "contras".

    Só não ficou bem claro pra mim se faria sentido utilizar a opção /3GB em um servidor com memória física, por exemplo, de 1 ou 2 GB (menor que 4 GB).

    Mais uma vez, obrigado.

    José Luiz
    sexta-feira, 15 de outubro de 2010 03:59
  • "Só não ficou bem claro pra mim se faria sentido utilizar a opção /3GB em um servidor com memória física, por exemplo, de 1 ou 2 GB (menor que 4 GB)."

    Nesse caso não faria nenhum sentido. Só faz sentido utilizar a opção /3GB em um sevidor com 4GB ou mais e em um ambiente 32bits onde a aplicação tem uma limitação de 2GB de memória. Nesse caso o SO utilizaria 1 GB e o SQL Server, por exemplo, utilizaria até 3GB. Você aumenta de 2GB para 3GB a quantidade de memória que uma aplicação (SQL SERVER ou outras) poderia utilizar.

    Como já tinha dito, acredito que hoje, meu servidor de produção(exclusivo para SQL Server) que utiliza 2.7 GB de memória não aguentaria uma redução de memória para menos de 2GB.

    Abraços



    Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.wordpress.com/ | Dicas de artigos SQL: Siga-me no twitter @fabriciodba.
    sábado, 16 de outubro de 2010 15:03