Procedure sp_configure “Affinity Mask”

Uma das configurações que podemos setar pela procedure de sistema “EXEC sp_configure” é a opção “Affinity Mask”. Neste post descrevo um pouco sua usabilidade alem de alguns testes praticos mostrando o efeito da mesma.

O que é a procedure de sistema “sp_configure”?
É uma procedure aonde é possivel setar N configurações em relação a instancia como por exemplo processadores, memorias, conexões dentre outras.

E a opção “Affinity Mask”?
Esta opção se diz respeito a qual processador fisico (Ou logico, HyperThreading) o SQL Server irá trabalhar.
Mas, como setar um valor para ele mapeando os processadores sendo que é possivel apenas passar um numero?
Simples! Essa configuração fica em uma regua de potencia de 2. mais ou menos da seguinte forma:
Se temos 8 processadores, temos então a seguinte situação

Foto01

Portanto, se quisermos utilizar os processadores parem (P2, P4, P6 e P8) devemos somar seus valores da regua, ficando 2 + 8 + 32 + 128 = 170,

então o valor a ser passado para o parametro de “Affinity Mask” é 170.

Caso voces olhem agora essa configuração é muito provavel que ela esteja como 0, fazendo com que o proprio SQL Server gerencie isso, e este valor não deve ser alterado a não ser que seja solicitado pelo time de suporte da Microsoft ou então voce não terá suporte.

Alguns testes praticos:

1 – Primeiramente eu baixei a ferramenta coreinfo.exe para poder visualisar algumas informações sobre os processadores da maquina cuja qual estou escrevendo este post.
a. Link para download: http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx
b. Como executar: Extraia o .exe para uma pasta (D:\ por exemplo) e execute: d:\coreinfo.exe pelo command prompt (Executar -> CMD)

Uma das informações relevantes é que os processadores apontados pelo task manager são fisicos ou hyperthereading, mas, qual é qual? E qual o SQL Server priorizará?
O SQL Server tende a utilizar mais os fisicos e isso pode facilmente ser visto, basta deixar um looping em execução, conforme script abaixo

WHILE (1=1)
	SELECT 1+1

Que voce verá os processadores fisicos sendo mais utilizados. Veja o print dos processadores com o looping em execução.

Foto02

Todo caso, é interessante esta analise pelo coreinfo.exe, aonde é possivel ver tais informações na seguinte parte:

Foto03

Ou seja, o que é fisico, o que é logico e como eles estão agrupados.

Agora, fazendo uma alteração no meu “Affinity Mask” para 2, ou seja, utilizar apenas um processador fisico, pelo script:

EXEC sp_configure 'affinity mask', 1
RECONFIGURE WITH OVERRIDE

E executando o mesmo looping anterior, podemos ver claramente a utilização da primeira CPU (HyperThreading) sendo priorizada, os outros tambem são claro por outros processos tanto da maquina quanto do proprio SQL Server.

Foto04

Anúncios
Post a comment or leave a trackback: Trackback URL.

Comentários

  • Alexandre Ricardo (Sherman) Di Primio  On 20/03/2013 at 16:31

    Olá meu caro.

    Estava lendo seu artigo e achei muito interessante, essa é uma configuração que poucas pessoas se aventuram a mexer, então vou aproveitar o ensejo pra perguntar, qual a melhor prática pra se priorizar o uso de um processador em detrimento de outro ?

    Já ouvi de um professor que o ideal é sempre deixar o último processador livre por que assim ele cuida das funções do sistema operacional e deixa o servidor mais rápido, mas acho que isso é lenda

    Tem algum estudo oficial sobre isso ?

    Acho que isso poderia ser uma boa matéria pra um outro artigo.

    Um abração pra você ai cara e valeu pela informação,

    • fabrizziocaputo  On 21/03/2013 at 09:34

      Alexandre, Bom dia! tudo bem?

      Sim, realmente é uma configuração que normalmente não é feita nenhuma alteração a não ser que seja solicitado pelo time de suporte.

      Ja ouvi algumas historias sobre a reserva de CPU mas não efetivamente para o sistema operacional e sim para a configuração de CPU de IO, aonde em uma maquina de 8 por exemplo, seriam 7 para processamento e 1 para IO.

      Estou buscando algum White Paper oficial mas até o momento apenas blogs e foruns, caso encontre alguma coisa posto aqui como referencia.

      Abraços!

  • onlywhatmatters  On 26/03/2013 at 14:34

    Reblogged this on OnlyWhatMatters.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: