Fala pessoal,
Você já parou para pensar se a Quantidade de Sockets pode afetar ou não a performance do seu Banco de Dados?
No post de hoje vamos falar sobre isso e vou compartilhar alguns casos do dia a dia! #gogogo
Edição SQL Server x Limitações:
Em primeiro lugar, o SQL Server possui algumas edições diferentes e elas possuem algumas limitações.
Segue abaixo o link da documentação oficial da Microsoft:
A edição Enterprise é a mais TOP de todas! Contudo, também é a mais cara (e muitooo mais cara), pois utiliza TODOS os recursos disponíveis no servidor. Essa edição pode ficar inviável financeiramente para empresas menores. =(
Já as demais edições ficam mais limitadas. Por exemplo, a edição Standard possui uma limitação de 4 sockets ou 24 processadores lógicos. Nos casos abaixo iremos considerar essa edição e ver os possíveis impactos.
CASO 1 – O SQL Server Standard Edition não utiliza todos os processadores lógicos da VM???
No primeiro caso, a VM (Virtual Machine) do cliente estava utilizando 6 sockets e 6 processadores lógicos, ou seja, cada socket possuía apenas um processador lógico OK.
Ao executar a query abaixo, verificamos que tinha dois processadores lógicos que não estavam VISÍVEIS para o SQL Server, isso devido a limitação de apenas 4 sockets da edição Standard!
1 2 3 4 5 6 |
SELECT current_tasks_count,runnable_tasks_count,* FROM sys.dm_os_schedulers WHERE scheduler_id < 255 --AND status = 'VISIBLE ONLINE' --AND status = 'VISIBLE OFFLINE' |
“Eita Luiz, estou pagando a licença no servidor para 6 processadores lógicos e o SQL Server está utilizando apenas 4, é isso mesmo???”
Infelizmente sim e já encontramos essa situação algumas vezes nos clientes que atendemos aqui na Power Tuning.
Como Resolver???
Nesses casos, solicitamos para a INFRA do cliente fazer o ajuste na quantidade de sockets para utilizar no máximo 4. Depois disso, o SQL Server vai conseguir utilizar TODOS os processadores lógicos da VM. =)
CASO 2 – SQL Server Standard Edition utilizando mais de 24 processadores lógicos??? Como???
Nesse segundo caso a situação foi a seguinte:
O cliente tinha uma VM no Azure com o SQL Server Standard Edition utilizando 20 processadores lógicos, contudo os recursos dessa VM não estavam com uma boa performance para o ambiente que já tinha crescido demais nos últimos anos.
Com isso, o cliente fez um UPGRADE para uma nova VM também com o SQL Server Standard Edition, mas dessa vez utilizando 32 processadores lógicos. Aí eu te pergunto:
“Como a VM utiliza o SQL Server Standard Edition ele irá limitar apenas em 24 processadores lógicos, certo???”
Então, depende hehe. Nesse caso, a VM utilizada pelo cliente tinha uma configuração com Hyper-Threading e com isso conseguia utilizar mais do que 24 processadores lógicos.
Repare no print abaixo que o SQL Server conseguiu reconhecer todos os 32 processadores lógicos! WOW!!!
Não vou entrar em detalhes sobre o Hyper-Threading nesse post, mas deixo abaixo um link como referência:
https://docs.microsoft.com/en-us/azure/virtual-machines/sizes-memory
Conclusão:
Sempre que for analisar algum banco de dados, confira a versão do SQL Server e a Quantidade de Sockets, pois você pode estar desperdiçando dinheiro e performance ao não utilizar todos os processadores lógicos.
Lembre-se também que o Hyper-Threading pode te ajudar em alguns casos. #ficaadica
Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!
Me siga no LinkedIn e YouTube para ficar por dentro das novidades.
Abraço,
Luiz Vitor França Lima
Consultor SQL Server