Boost SQL Server Priority

Olá pessoal, retomando as postagens em 2013, já de cara vou trazer um assunto bastante interessante.

Estou falando da opção Boost SQL Server Priority da guia CPU nas configurações do SQL Server. No meu ponto de vista poderia ser extremamente útil com um comportamento um pouco diferente, porém como funciona hoje é má interpretada e utilizada de forma errada.

Eu tive problemas com um ambiente recentemente e percebi que esta opção habilitada no SQL Server. Lembrava de já ter lido algo a respeito e não era algo muito bom, resolvi relembrar e fazer este post.

Boost SQL Server Priority  – Porque não é recomendado?

Tenha muito cuidado com esta configuração, é um grande risco para o seu ambiente habilitar esta opção.

Esta opção está disponível na janela de propriedades do seu servidor SQL, na guia “Processadores”.

Porque é perigoso?

Se for ativada esta opção o SQL Server irá executar o processo sqlservr.exe e seus derivados em Alta Prioridade, ao invés da prioridade Normal.

OK, quero que quando o serviço do SQL Server solicitar CPU, tenha prioridade e assim será mais performático pois o processador dará sempre prioridade ao SQL Server.

ERRADO, outros processos que necessitam de tempo de CPU não serão priorizadas e isso gera risco. Esta opção pode causar problemas e na maioria das vezes ele não vai trazer qualquer benefício significativo.

Ok, entendido, mas eu realmente quero que o SQL tenha prioridade no meu ambiente, porque não habilitar?

Primeiro devemos lembrar que esta opção não traz nenhum ganho significativo de desempenho em ambientes tradicionais.

Primeiro porque em ambientes comuns não temos concorrência de CPU que impossibilite a alocação de recursos para o banco, veja bem impossibilite, ou seja N processos de alta prioridade de CPU, ou seja, são raras as concorrências de CPU que não liberam nunca o processador para o banco e se isso ocorrer seu ambiente já esta crítico e mal dimensionado, não é esta opção que vai te salvar quando tiveres problemas assim.

Segundo porque a prioridade de CPU em ambientes que não possuem nenhum tipo de gargalo não vai resultar em nada.

Além disso, olhe o erro, esta prioridade seta o serviço para THREAD_PRIORITY_HIGHEST. Para esta combinação de Classe, o nível de prioridade base desses segmentos de trabalho é de 15. Os únicos superiores a este na hierarquia do sistema operacional são os tópicos que têm classe processo de prioridade definida para REALTIME_PRIORITY_CLASS (que deve ser um caso muito raro para qualquer aplicação).  Isso vai tornar mais importante que alguns serviços de gerenciamento do próprio sistema operacional.

Vale ressaltar que o SQL Server utiliza o sistema operacional para diversas atividades, como gravar em disco, dentre outras e estas não terão prioridade pois a prioridade é o SQL Server, sim o mesmo que esta aguardando o retorno do SO, ai já começou a confusão. Além de que o servidor perderá todo o gerenciamento e por fim vamos conseguir travar o servidor, sim isso mesmo, ele vai parar de responder e congelar, não sabendo o que aconteceu simplesmente será desligado à força e ocorrerá novamente, até que alguém lembre de desabilitar esta opção.

Não fosse o bastante, a própria Microsoft inclusive não recomenda habilitar este recurso, apenas em exceções raras para diagnosticar problemas. (http://support.microsoft.com/kb/319942)

Por tanto fica bastante claro, NÃO USE ESTA OPÇÃO, NÃO RECOMENDE UTILIZAREM ESTA OPÇÃO, ela será removida nas próximas versões pois seu uso não traz nenhum benefício e um risco muito grande para seu ambiente. (http://msdn.microsoft.com/en-us/library/ms180943.aspx)

Vale deixar algumas referências interessantes que encontrei e podem ajudar a esclarecer ainda mais esta opção, além de um exemplo onde é possível realizar em TESTE, o travamento de um servidor através desta opção.

Referência: http://blogs.msdn.com/b/arvindsh/archive/2010/01/27/priority-boost-details-and-why-it-s-not-recommended.aspx

Exemplo: http://www.sqlbadpractices.com/boost-sql-server-priority/

Espero que ajude a termos mais cuidado com isto.

Um ótimo 2013 a todos.

Anúncios

2 comentários sobre “Boost SQL Server Priority

    • Mas é bem isso mesmo Angelo, a intenção na criação da opção deve ter sido das melhores… porém na hora de ver como se comporta é que temos esse caos.
      A própria Microsoft em vista disso vai remover a opções exatamente por esse motivo.

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