Como otimizar o desempenho do Windows Server™ 2003 (Performance Tuning) - Parte 1

Por Danilo Bordini, especialista em infra-estrutura da Microsoft Brasil (http://blogs.technet.com/dbordini)

Publicado em: 15 de março de 2007

Publicado: março 15, 2007

Na maioria dos casos, uma instalação "padrão" do Microsoft® Windows Server™ 2003 trabalha muito bem em nível de desempenho (performance), em muitos cenários.

Porém, às vezes, é necessário realizar algumas operações que classificamos como "performance tuning" (lembre-se de carros que são "tunados" com motores mais potentes, pinturas poderosas e aparelhagem de som profissional :) ), ou seja, fazer certas configurações que melhoram o desempenho de seu servidor, especialmente se este é designado a executar um mesmo workload ou tarefa (por exemplo, um servidro de arquivos/impressão, ou um servidor de Diretórios ou um servidor WEB).

Vale lembrar que todas as alterações devem ser feitas em ambiente de teste (se possível simulando carga como no ambiente em produção) antes da implementação em seus servidores de produção. Além disso, como algumas configurações exigem alterações de registry, não esqueça do backup (Como fazer o backup, editar e restaurar o Registro no Windows XP e Windows Server 2003).

Esse artigo vai se concentrar em configurações para melhor desempenho e tunnng dos elementos de Rede.

Passo 1: Escolha um adaptador homologado

O primeiro passo é escolher um adaptador de rede que seja homologado e aprovado pela Microsoft como sendo compatível com o sistema operacional. Para lhe ajudar nesta tarefa, sempre é bom consultar a Microsoft Windows Hardware Quality Labs (WHQL) que possui uma lista dos dispositivos de hardware aprovados. Se seu dispositivo estiver na lista, significa que foi testado e aprovado pelos laboratórios da Microsoft.

Passo 2: Prefira um adaptador com capacidades "offload"

Um adaptador offload, juntamente com um sistema operacional que se valha desta capacidade consegue diminuir o uso de CPU de um servidor melhorando o desempenho do sistema. O protocolo TCP/IP implementado no Windows Server 2003 pode "delegar" algumas tarefas para o adaptador, tais como tarefas de Checksum, IP Security e Segmentação de pacotes grandes TCP/IP.

Em alguns casos, a pilha completa de rede ser "delegada" para um adaptador de rede com as capacidades apropriadas. Nesse sentido, a Microsoft fez o lançamento alguns meses atrás de um pacote especial chamado Scalable Networking Pack (SNP). Esse pacote pode ser instalado gratuitamente em máquinas Windows Server (para documentação completa e pré-requisitos consulte http://support.microsoft.com/kb/912222 ) e basicamente habilita o sistema operacional a utilizar recursos de adaptadores de rede compatíveis com o padrão TCP Offload Engine (TOE).

Em média, o desempenho de um servidor pode ser melhorado de 30% - 50% em termos de utilização de performance (um cenário muito comum para tal tipo de solução são servidores de backup, que precisam processar um alto volume de tráfego de rede). E o melhor: sem a necessidade de nenhum tipo de configuração especial ou interação do administrador - é totalmente transparente para o sistema operacional.

Passo 3: Procure por um adaptador com capacidades 64 bit

Adaptadores de rede que são 64-bit podem fazer acesso direto à memória (DMA) de endereços de memória alta (acima de 4GB) o que pode também melhorar a performance do sistema.

Passo 4: Faça alguns ajustes nos parâmetros de TCP/IP

Se necessário, em ambientes de alto nível de tráfego (throughput), alguns ajustes especiais podem ser feitos a nível de parâmetros TCP/IP utilizando-se o Registry do Windows (lembre-se de um backup !!!!)

Parâmetro

Descrição

TCPWindowSize

Esse valor determina a quantidade máxima de dados (em bytes) que pode ser melhor ser manipulada em determinado tempo. Pode ser configurado através da chave de registro: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize (REG_DWORD). O padrão para placas gigabit é aproximadamente 65.535; 16.384 para placas 100Mbps e 8.192 para interfaces com capacidades menores. Esse valor deve ser configurado levando-se em conta o total esperado de dados TCP que deve ser recebido pelo servidor e múltiplos testes podem ser necessários para se medir a alteração no desempenho.

Window Scaling

Em links com um alto delay de banda (por exemplo, links satélites) pode ser necessário aumentar a o tamanho da janela para acima de 64k. Essa configuração é feita na chave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Tcp1323Opts (REG_DWORD). Para habilitar janelas maiores que 65.535, essa chave deve ser configurada para 1 (um). Após essa configuração, a chave de registry para TCPWindowSize (item 1) pode ser configurada para valores maiores que 64k (no máximo 1GB).

MaxHashTableSize

Essa chave determina o tamanho da tabela hash que possui o estado das conexões TCP. O valor padrão é 128 multiplicado pelo quadrado do número de processadores do sistema. Quando um número muito alto de conexões concorrentes é esperado, ajuste esse valor para um valor mais alto utilizando a seguinte chave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxHashTableSize (REG_DWORD). O valor máximo é 0x10000 (65.536). É recomendado que você considere alterar esse valor se esperado um nível alto de conexões. Apenas um alerta: tal tabela de estados utiliza pool não-paginável ( ou seja, que não pode ser nunca paginado para disco), assim, não configure esse valor muito alto caso o servidor esteja com pouco espaço para pool-não paginável (maiores informações em http://support.microsoft.com/kb/108449/pt-br).

NumTcbTablePartitions

Como explicado anteriormente, por padrão, a tabela de conexões de estado TCP possui partições igual ao quadrado do número de processadores. Em muitas casos, essa configuração é apropriada e resulta na baixa contenção nas tableas. Porém, esse valor padrão pode ser muito alto em servidores com 16 processadores ou mais e pode resultar em muito uso de CPU. Neste caso, a seguinte chave pode ser configurada, com um valor menor que o quadrado do número de processadores: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\NumTcbTablePartitions (REG_DWORD).

MaxUserPort

Uma porta sempre é usada durante uma conexão ativa de um computador. Dado o valor padrão disponível para esse parâmetro (5.000 para cada endereço IP) e alguns requisitos de TCP time-wait, pode ser necessário disponibilizar mais portas disponíveis ao sistema. Essa configuração pode ser feita na chave abaixo (o valor máximo suportado é 0xfffe (65534): HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort.

Mostrar: