Configuração de servidor: affinity I/O mask

Aplica-se: SQL Server

Para realizar multitarefas, o , às vezes, movem threads de processos entre processadores diferentes. Embora seja eficiente de um ponto de vista de sistema operacional, essa atividade pode reduzir o desempenho do SQL Server sob cargas de sistema pesadas, à medida que cada cache do processador é recarregado repetidamente com os dados. Atribuir processadores a threads específicos poderá melhorar o desempenho sob estas condições eliminando recargas de processador; tal associação entre um thread e um processador é chamada de afinidade de processador.

O SQL Server dá suporte à afinidade de processador por meio de duas opções de máscara de afinidade: affinity mask (também conhecida como máscara de afinidade de CPU) e affinity I/O mask. Para obter mais informações sobre a opção affinity mask, veja Configurar a opção de configuração do servidor affinity mask. O suporte para afinidade de CPU e E/S em servidores com 33 a 64 processadores exige o uso adicional das opções de configuração de servidor affinity64 mask e affinity64 I/O mask, respectivamente.

Observação

O suporte à afinidade para servidores com 33 a 64 processadores só está disponível em sistemas operacionais de 64 bits.

A opção affinity I/O mask vincula a E/S de disco do SQL Server a um subconjunto especificado de CPUs. Em ambientes OLTP (online transactional processing) avançados de SQL Server , esta extensão pode aumentar o desempenho de threads SQL Server que emitem E/S. Este aprimoramento não aceita afinidade de hardware para discos individuais ou controladores de disco.

O valor de affinity I/O mask especifica que CPUs em um computador com multiprocessador são qualificadas para processar operações E/S de disco do SQL Server. A máscara é um bitmap no qual o bit mais à direita especifica a CPU de ordem mais inferior (0), o bit a sua esquerda imediata especifica a CPU de ordem inferior mais próxima (1) e assim por diante. Para configurar mais de 32 processadores, defina affinity I/O mask e affinity64 I/O mask.

Os valores para affinity I/O mask são os seguintes:

Bytes na máscara Número de CPUs
1 byte Até 8 CPUs
2 bytes Até 16 CPUs
3 bytes Até 24 CPUs
4 bytes Até 32 CPUs

Para incluir mais de 32 CPUs, configure uma affinity I/O mask de 4 bytes para as primeiras 32 CPUs e uma affinity64 I/O mask de 4 bytes para as demais CPUs.

Um bit 1 no padrão de E/S de afinidade especifica que a CPU correspondente está qualificada para executar operações de E/S de disco do SQL Server. Um bit 0 especifica que nenhuma operação de E/S de disco do SQL Server deve ser agendada para a CPU correspondente. Quando todos os bits são definidos como 0 ou affinity I/O mask não é especificada, a E/S de disco do SQL Server é agendada para qualquer uma das CPUs qualificadas para processar threads do SQL Server.

Como a configuração da opção affinity I/O mask do SQL Server é uma operação especializada, use-a somente quando necessário. Na maioria dos casos, a afinidade padrão do Windows proporciona o melhor desempenho.

Ao especificar a opção affinity I/O mask, você precisa usá-la com a opção de configuração affinity mask. Não habilite a mesma CPU no parâmetro affinity I/O mask e na opção affinity mask. Os bits que correspondem a cada CPU deveriam estar em um dos três estados seguintes:

  • 0 tanto na opção affinity I/O mask quanto na opção affinity mask.
  • 1 na opção affinity I/O mask e 0 na opção affinity mask.
  • 0 na opção affinity I/O mask e 1 na opção affinity mask.

A opção affinity I/O mask é uma opção avançada. Se você estiver usando o procedimento armazenado do sistema sp_configure para alterar a configuração, é possível alterar affinity I/O mask somente quando show advanced options estiver definido como 1. No SQL Server, reconfigurar a opção affinity I/O mask exige uma reinicialização da instância do SQL Server.

Cuidado

Não configure a afinidade de CPU no sistema operacional Windows e também configure affinity mask no SQL Server. Essas definições estão tentando alcançar o mesmo resultado e se as configurações forem inconsistentes, você pode ter resultados imprevisíveis. A melhor maneira de configurar a afinidade de CPU do SQL Server é com o procedimento armazenado do sistema sp_configure no SQL Server.