Por Marcelo Fontes

Constantemente recebemos perguntas de nossos clientes a respeito de como saber se o meu Terminal Server está otimizado para perfazer suas tarefas da forma mais eficiente possível de acordo com os recursos disponíveis. Ou quais seriam os pontos a serem considerados para tal otimização.

Iniciaremos uma série de pequenos artigos a respeito de como otimizar o seu Windows Server 2008 Terminal Server para tentar responder estas questões:

Selecionando o Hardware Apropriado

A escolha do hardware deverá se dar de acordo com as aplicações que serão utilizadas e da forma como us usuários trabalham com elas. Os fatores chaves que afetam o número de usuários e sua experiência são CPU, Memória, Disco e utilização gráfica.

CPU

A capacidade de processamento necessária é determinada pela multiplicação da CPU necessária para se suportar uma sessão pelo numero de sessões que se espera que o sistema irá trabalhar, somadas à necessidade de se manter uma zona de segurança (buffer/margem) para suportar picos de consumo. Múltiplos processadores e múltiplos “cores” podem ajudar a amenizar os momentos de congestão de utilização, usualmente causados por algumas threads hiperativas. Portanto quanto maior o numero de "cores" em um sistema, menor a margem/buffer necessário, o que resulta em uma maior percentagem de carga que se pode colocar em nível de processamento. No entanto, é importe ter em mente que dobrando o numero de CPUs não significa que se tem o dobro da capacidade. Pesquisas mostram que 2 CPUs não são tão rápidas quanto uma CPU com o dobro da capacidade.

Arquitetura do Processador

Em uma arquitetura 32 bits, todos os processos do sistema dividem 2 GB de endereçamento virtual para o kernel, o que limita o numero máximo de suporte para sessões terminais. Pelo fato da memória que o sistema aloca para todos os processos terá que ser compartilhada nos outros 2 GB remanescentes, aumentando-se o numero de sessões e processos irão ocasionar a exaustão deste recurso. Melhorias significantes foram feitas no Windows Server 2008 para que se gerencie melhor este escasso recurso de 2 GB de espaço virtual. Alguns destas melhorias incluem realocação dinâmica entre diferentes sub-áreas de memória. O mesmo não ocorre com Windows Server 2003, o qual possui alocação estática destes recursos. Uma das áreas mais importantes do kernel são as áreas de “PTEs”, “system cache” e “paged pool”. Outras melhorias efetuadas na redução de consumo em algumas áreas criticas como kernel stacks para threads. No entanto, ainda é possível a ocorrência de degradação de performance e falhas em situações onde o numero de sessões ou processos são extremas. O numero de possíveis sessões para determinado hardware variam de acordo como o cenário de utilização, uma valor genérico seria ao redor de 250 sessões, no entanto faz-se necessário o teste de capacidade com o ambiente real para que se determine este valor. A utilização de grandes valores de memória, maiores do que 12 GB, consomem valores substanciais do escasso valor disponível de kernel (2GB) para que estruturas de dados sejam gerenciadas, agravando as situações de super utilização.

A arquitetura 64-bit promove significativos incrementos de endereçamento virtual para o kernel, sendo esta a arquitetura recomendada para sistemas com valores altos de Memória RAM. Mesmo em se considerando aplicações rodando em 32 bits, consideramos o overhead de se rodar estes processos em WOW pequeno em relação às suas vantagens, de forma que novas implementações de granjas de Terminal Server na arquitetura 64-bit são altamente recomendadas.

No próximo artigo iremos detalhar otimização de memória, disco e rede para Performance em Windows Server 2008.