Habilitando memória AWE para SQL Server

Esse recurso será removido na próxima versão do Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e modifique, assim que possível, os aplicativos que atualmente o utilizam.

O AWE (Address Windowing Extensions) permite que sistemas operacionais de 32 bits acessem quantidades grandes de memória. Ele é exposto pelo sistema operacional e implementado de forma ligeiramente diferente no Microsoft Windows 2000 Server e Windows Server 2003. O AWE é habilitado usando Opção awe enabled.

Usando memória mapeada para AWE com o Windows 2000 Server

Instâncias do Microsoft SQL Server que são executadas no Windows 2000 alocam memória durante a inicialização do SQL Server de acordo com a seguinte sequência de eventos:

  • Se a memória física disponível for menor do que o espaço de endereçamento virtual do modo de usuário, o AWE não poderá ser ativado. Nesse caso, o SQL Server é executado no modo não AWE independentemente da configuração da opção awe enabled.

  • Se a memória física disponível for maior do que o espaço de endereçamento virtual do modo de usuário, o AWE poderá ser ativado.

    • Se a memória física disponível for maior do que o valor da opção max server memory, a instância do SQL Server bloqueará a quantidade de memória especificada em max server memory.

    • Se a memória física disponível for menor do que o valor da opção max server memory ou se a opção max server memory não foi definida, a instância do SQL Server bloqueará toda a memória disponível que ultrapassar 256 MB (megabytes).

  • Uma vez alocada, a memória mapeada para AWE não pode ser liberada até que o SQL Server seja desligado.

Configurando as opções de memória

Nós recomendamos que você configure um valor para max server memory sempre que habilitar o AWE. Quando awe enabled está definido como 1 (e a memória física disponível é maior do que o espaço de processamento do modo de usuário), as instâncias do SQL Server que executam no Windows 2000 bloqueiam quase toda a memória disponível (ou o valor max server memory se a opção tiver sido definida) quando o servidor é iniciado. Se max server memory não tiver sido definida, outros aplicativos ou instâncias do SQL Server terão menos de 128 MB de memória física disponível.

O pool de memória mapeada para AWE não pode ser tocado por arquivos do sistema de página. O Windows tem que trocar outros aplicativos se houver necessidade de mais memória física para uso, e isso pode atrapalhar o desempenho desses aplicativos.

Para não atrapalhar o desempenho de outros aplicativos, configure a opção max server memory de modo a deixar memória extra livre para suprir as necessidades variáveis dos outros aplicativos e do sistema operacional. Você pode determinar a quantidade de memória que pode ser alocada com segurança para as instâncias do SQL Server identificando quanto há de memória disponível depois que todos os outros aplicativos usados no computador forem iniciados.

ObservaçãoObservação

No caso do Windows 2000 Server, a opção min server memory é ignorada para o AWE do SQL Server.

Use o contador Memória Total do Servidor (KB) do Monitor de Desempenho do SQL Server para determinar quanta memória foi alocada pela instância do SQL Server em execução no modo AWE ou selecione uso de memória em sysperfinfo.

Para obter mais informações, consulte Monitorando o uso da memória.

Executando várias instâncias do SQL Server com AWE

Se seu servidor estiver executando o Windows 2000, cada instância deve ter uma configuração max server memory. Pelo fato de o SQL Server que executa em sistemas operacionais do Windows 2000 não oferecer suporte à alocação dinâmica para memória mapeada para AWE, recomendamos que a opção max server memory seja definida para cada instância.

A soma dos valores max server memory de todas as instâncias deve ser menor do que a memória física total no computador. Se a soma for maior do que a memória física total, algumas das instâncias não iniciarão ou terão acesso a menos memória do que o especificado pela configuração max server memory. Por exemplo, suponha que um computador tenha 16 gigabytes (GB) de memória física e três instâncias do SQL Server instaladas. Além disso, max server memory está definido como 8 GB para cada instância. Se você interromper e reinicializar todas as três instâncias, a alocação de memória será da seguinte maneira:

  1. A primeira instância terá acesso a 8 GB de memória física.

  2. A segunda instância iniciará, mas terá acesso a um pouco menos do que 8 GB de memória física (até 128 MB a menos).

  3. A terceira instância iniciará no modo de memória dinâmico e terá acesso a 256 MB ou menos de memória física.

Para obter mais informações, consulte Gerenciando memória para bancos de dados grandes.

Usando memória mapeada para AWE com o Windows Server 2003

O SQL Server aceita alocação dinâmica de memória AWE no Windows Server 2003. Durante a inicialização, o SQL Server reserva apenas uma pequena parte da memória mapeada para AWE. Como é necessária uma memória mapeada para AWE adicional, o sistema operacional a aloca dinamicamente para o SQL Server. Da mesma forma, se forem necessários menos recursos, o SQL Server pode devolver a memória mapeada para AWE ao sistema operacional para ser usada por outros processos ou aplicativos. Para obter mais informações sobre a opção de configuração awe enabled, consulte Opção awe enabled.

A quantidade de memória física com suporte aumentou com a introdução da família Windows Server 2003. A memória física acessível pelo recurso AWE depende do sistema operacional em uso. A lista a seguir fornece o máximo de memória física acessível por cada sistema operacional do Windows Server 2003 na hora de gravar.

  • O Windows Server 2003 Standard Edition oferece suporte à memória física de até 4 GB.

  • O Windows Server 2003 Enterprise Edition oferece suporte a até 32 GB de memória física.

  • O Windows Server 2003 Datacenter Edition oferece suporte a até 64 GB de memória física.

Configurando as opções de memória

O SQL Server aloca memória mapeada para AWE dinamicamente ao ser executado com quaisquer edições do sistema operacional do Windows Server 2003. Em outras palavras, o poll de buffers pode gerenciar memória mapeada para AWE dinamicamente (dentro das restrições das opçõesmin server memory e max server memory) para equilibrar o uso de memória do SQL Server com os requisitos gerais do sistema.

Quando AWE está habilitado, o SQL Server sempre tenta usar memória mapeada para AWE. Isso se aplica a todas as configurações de memória, incluindo os computadores configurados para fornecer aplicativos com menos de 3 GB de espaço de endereçamento no modo de usuário.

  • Recomendamos configurar AWE como o modo de memória padrão para o SQL Server que está sendo executado no Windows Server 2003. O recurso Inclusão de Memória a Quente requer que o AWE seja habilitado durante a inicialização do SQL Server. Para obter informações, consulte Inclusão de Memória a Quente.
ObservaçãoObservação

O recurso AWE não é necessário e não pode ser configurado nos sistemas operacionais de 64 bits.

  • Uma vez que a memória mapeada para AWE é suportada para menos de 3 GB, você pode definir os valores min server memory e max server memory dentro do intervalo de memória física ou usar os valores padrão para ambas as opções.

  • Você deve considerar a configuração de max server memory para SQL Server para garantir memória adicional para outros aplicativos que estão operando no computador. Apesar de o SQL Server poder liberar memória mapeada para AWE dinamicamente, a quantidade atual de memória mapeada para AWE alocada não pode ser trocada por um arquivo de página.

Para disponibilizar o AWE para uma instância do SQL Server, use sp_configure para definir a opção awe enabled para 1 e, em seguida, reinicie o SQL Server.

Para obter mais informações sobre min server memory e max server memory, consulte Opções de memória do servidor.

Antes de ativar o AWE, você deve configurar a política Bloquear páginas na memória. Para obter mais informações, consulte Como habilitar a opção bloquear páginas na memória (Windows).

Exemplo

O exemplo a seguir mostra como ativar o AWE e configurar um limite de 1 GB para min server memory e 6 GB para max server memory.

Primeiro, configure o AWE:

sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'awe enabled', 1
RECONFIGURE
GO

Depois que o SQL Server reinicializar, a mensagem a seguir será gravada no log de erros do SQL Server: ‘Address Windowing Extensions enabled’.

Em seguida, configure a memória:

sp_configure 'min server memory', 1024
RECONFIGURE
GO

sp_configure 'max server memory', 6144
RECONFIGURE
GO

Nesse exemplo, as configurações de memória dirigem o pool de buffers para gerenciar a memória mapeada para AWE dinamicamente entre 1 GB e 6 GB. Se outros aplicativos precisarem de mais memória, o SQL Server pode liberar a memória mapeada para AWE alocada, se ela não for necessária. Nesse exemplo, somente até 1 GB da memória mapeada para AWE pode ser liberada.

A memória AWE dinâmica também permite que o SQL Server aumente a memória se for adicionada mais memória para um computador que aceita Inclusão de Memória a Quente. Disponível no Windows Server 2003 3, edições Enterprise e Datacenter, a Inclusão de Memória a Quente permite que seja adicionada memória enquanto o computador está executando. Por exemplo, suponha que o SQL Server, que está sendo executado no Windows Server 2003 Enterprise Edition, é iniciado em um computador com memória física de 16 GB. O sistema operacional está configurado para limitar aplicativos a 2 GB de espaço de endereçamento de memória virtual; o modo AWE foi ativado no SQL Server. Depois, o administrador do sistema adicionou 16 GB de memória enquanto o computador estava executando. O SQL Server reconhece a memória adicional imediatamente e, se necessário, pode começar a se beneficiar dela.

Para obter mais informações sobre o uso do AWE, consulte a documentação do Windows Server 2003.

Executando várias instâncias do SQL Server com AWE

Se você estiver executando várias instâncias do SQL Server no mesmo computador e cada instância usar memória mapeada para AWE, você deve certificar-se de que as instâncias executem conforme o esperado.

Se seu servidor estiver executando o Windows Server 2003, cada instância deve ter uma configuração min server memory. Como o SQL Server que executa no Windows Server 2003 oferece suporte ao gerenciamento de memória mapeada para AWE dinamicamente, recomendamos configurar a opção max server memory para cada instância. Uma vez que a memória mapeada para AWE não pode ser trocada por um arquivo de página, a soma dos valores max server memory de todas as instâncias deve ser menor do que a memória física total no computador.

A opção min server memory não força o SQL Server a adquirir uma quantia mínima de memória na inicialização. A memória é alocada sob demanda com base na carga de trabalho do banco de dados. Entretanto, uma vez que o limite de min server memory seja alcançado, o SQL Server não liberará memória se isso deixar o SQL Server com menos memória do que o definido. Portanto, para garantir que cada instância tenha uma quantidade de memória alocada pelo menos igual ao valor min server memory, recomendamos que você faça uma carga no servidor do banco de dados logo depois da inicialização. Durante a atividade normal do servidor, a memória disponível por instância varia, mas nunca há menos do que o valor min server memory disponível para casa instância.

Você pode definir max server memory ou deixar a opção com a configuração padrão. Deixar a opção max server memory configurada de acordo com o padrão resultará em instâncias do SQL Server competindo por memória.

Usando cluster de failover com AWE

Se estiver usando o cluster de failover do SQL Server e uma memória AWE, você deve assegurar que a soma da configuração max server memory de todas as instâncias seja menor do que a memória física disponível em qualquer um dos servidores do cluster de failover. Se o nó de failover tiver menos memória física do que o nó original, as instâncias do SQL Server podem não conseguir iniciar ou ainda iniciar com menos memória do que tinham no nó original.