Compartilhar via


Dimensionamento Multicore dos IIS 8.0 em Hardware NUMA

por Robert McMurray

Compatibilidade

Versão Observações
IIS 8.0 O dimensionamento multicore no NUMA foi introduzido nos IIS 8.0.
IIS 7.5 Não havia suporte ao dimensionamento multicore no NUMA nos IIS 7.5.
IIS 7.0 Não havia suporte para dimensionamento multicore no NUMA nos IIS 7.0.

Problema

De um modo geral, aumentar o número de núcleos deve resultar em um maior desempenho. No entanto, chega um ponto em que aumentar o número de núcleos pode resultar em degradação de desempenho porque o custo de sincronização de memória supera os benefícios no hardware NUMA com núcleos adicionais. Os IIS 8.0 resolvem esse problema realizando a distribuição e criando afinidade inteligente entre seus processos no hardware NUMA (Acesso à Memória Não Uniforme).

Solução

Os IIS (Serviços de Informações da Internet) no Windows Server 2012 tem reconhecimento de NUMA e fornece a configuração ideal para os administradores de TI. A seção a seguir descreve as diferentes opções de configuração para obter o melhor desempenho com os IIS 8.0 no hardware NUMA.

Os IIS dão suporte a duas maneiras a seguir de particionar a carga de trabalho:

  1. Executa vários processos de trabalho em um pool de aplicativos (ou seja, web garden): se você estiver usando esse modo, por padrão, o pool de aplicativos será configurado para executar um processo de trabalho. Para obter o desempenho máximo, você deve considerar a execução do mesmo número de processos de trabalho que há nós NUMA, de modo que haja afinidade individual entre os processos de trabalho e nós NUMA. Isso pode ser feito definindo a configuração de AppPoolsetting "Máximo de Processos de Trabalho" como 0. Nessa configuração, os IIS determinam quantos nós NUMA estão disponíveis no hardware e inicia o mesmo número de processos de trabalho.
  2. Executa vários pools de aplicativos em uma única carga de trabalho/site: nesta configuração, a carga de trabalho/site é dividida em vários pools de aplicativos. Por exemplo, o site pode conter vários aplicativos configurados para serem executados em pools de aplicativos separados. Efetivamente, essa configuração resulta na execução de vários processos de trabalho dos IIS para a carga de trabalho/site e os IIS fazem a distribuição e criam afinidade inteligente entre os processos para obter desempenho máximo.

Além disso, há duas maneiras diferentes de os IIS 8.0 identificarem o nó NUMA ideal quando o processo de trabalho dos IIS está prestes a ser iniciado.

  1. Memória Mais Disponível (padrão): a ideia por trás dessa abordagem é que o nó NUMA com a memória mais disponível é aquele mais adequado para assumir o processo de trabalho adicional dos IIS que está prestes a ser iniciado. Os IIS têm o conhecimento do consumo de memória por cada nó NUMA e usa essas informações para "balancear a carga" dos processos de trabalho dos IIS.
  2. Windows: Os IIS também têm a opção de permitir que o sistema operacional Windows tome essa decisão. O sistema operacional Windows usa round robin.

Por fim, há duas maneiras diferentes de criar afinidade entre os threads de um processo de trabalho dos IIS para um nó NUMA.

  1. Afinidade reversível (padrão): com a afinidade reversível, se outros nós NUMA tiverem os ciclos, os threads de um processo de trabalho dos IIS poderão ser agendados para nó NUMA sem afinidade. Essa abordagem ajuda a maximizar todos os recursos disponíveis no sistema como um todo.
  2. Afinidade fixa: com a afinidade fixa, independentemente de qual seja a carga em outros nós NUMA no sistema, todos os threads de um processo de trabalho dos IIS são atribuídos ao nó NUMA escolhido que foi selecionado para afinidade usando o design acima.

Instruções passo a passo

Pré-requisitos

  • Os IIS estão instalados no Windows Server 2012.
  • O modelo de processo dos IIS faz parte da configuração do pool de aplicativos dos IIS. Não há nenhum recurso específico dos IIS que precise ser instalado a partir do Gerenciador do Servidor.

Soluções alternativas para bugs conhecidos

No momento, não há bugs conhecidos neste recurso.

Etapas de configuração

  1. Abra o Gerenciador de IIS.
  2. Selecione Pools de Aplicativos na janela de navegação à esquerda:
    Screenshot that shows Application Pools selected.
  3. Selecione o Pool de Aplicativos:
    Screenshot that shows the Application Pools pane. The Default App Pool line is highlighted.
  4. No painel Ações, selecione Configurações Avançadas:
    Screenshot that shows the Actions pane with Advanced Settings highlighted.
  5. No grupo Modelo de Processo, localize a configuração Máximo de Processos de Trabalho.
    Screenshot that shows the Process Model group. Maximum Worker Processes and its value of 1 is highlighted.
  6. Defina o valor como 0.

A lógica de seleção NUMA ideal, bem como o tipo de afinidade, também são encontradas em Configurações Avançadas. No entanto, elas aparecerão somente se os IIS estiverem em execução no hardware NUMA.

Cenários

Execute testes de desempenho no hardware NUMA antes e depois da atualização para o Windows Server 2012. Compare os resultados de desempenho para ver as melhorias.

Resumo

Você explorou com êxito o dimensionamento multicore dos IIS para o recurso de hardware NUMA no Windows Server 2012.