- Desempenho do Processador x Desempenho do SQL Server – Parte 4
- Desempenho do Processador x Desempenho do SQL Server – Parte 3
- Desempenho do Processador x Desempenho do SQL Server – Parte 2
- Desempenho do Processador x Desempenho do SQL Server – Parte 1
A CPU é um dos recursos mais fundamentais, senão o mais fundamental, de um computador. É ali que todos os recursos de um computador são coordenados. Este é o primeiro post de mais uma série onde vamos aprender conceitos básicos sobre velocidade de CPU e como podemos usar isso para análises simples em consultas de um SQL Server.
Hoje vamos obter um conhecimento fundamental sobre CPU antes de partir para o SQL Server!
Clocks e Hertz
Você já deve estar cansado de ver os termos “2.5 GHz”, “3.0 GHz”, etc. Mas você sabe, de fato, o que eles significam? Embora eu necessite de uma série exclusiva somente para este assunto, é necessário um simples entendimento:
- Quanto maior este valor, mais rápido as instruções são executadas
Basicamente, toda CPU tem um “clock“, que é um dispositivo que “liga” e “desliga” X vezes por segundo. Cada vez que esse dispositivo “liga”, nós dizemos que houve um “clock tick”, ou, apenas “tick”. Esse é o valor que você vê nas especificações:
- Um processador de 1 Hertz (1 Hz) significa que seu clock liga e delisga 1 vez por segundo (1 tick por segundo)
- 1000 Hertz, são 1000 ticks por segundo. Aqui se pode aplicar as unidades do SI (Sistema Internacional de Medidas) : 1000 Hertz = 1 KHz (Kilo Hertz)
- 1 milhão de Hertz, ou 1 MHz, significa 1 milhão de ticks por segundo.
- 2.5 GHz (Giga Hertz) , significa 2.5 x 1 bilhão (Giga), que equivale a 2 bilhões e 500 milhões de vezes por segundo
Uma vez que a velocidade do processador dita quantos ticks temos em um segundo, então, podemos calcular quanto tempo dura um tick. Pode parecer confuso o que eu vou dizer agora, mas é apenas uma questão de lógica, pare e reflita.
Cada tick do clock, leva um tempo fixo. Nenhum tick leva mais ou menos tempo que o outro tick. Então, quanto mais lento o processador, maior será o tempo de 1 tick. Pense em números pequenos, que vai ajudar:
- Em um processador de 2 Hertz (dois ticks por segundo), cada tick leva 500 ms (0.5 segundos)
- Em um processador de 4 Hertz (quatro ticks por segundo), cada tick leva 250 ms ( 0.250 segundos)
- Percebeu a fórmula mágica pra calcular o tempo de 1 tick?
- Tempo de um Tick, em Milssegundos = 1000ms/<Número Hertz>
- 2.5 MHz = 1000/2500000 = 0,0004 ms (1 tick = 400 nanossegundos)
- 1.0 MHz = 1000/1000000 = 0,001 (1 tick = 1000 nanossegundos)
- 2.5 GHz resulta num tick muuuuuuuuuuuuuuuuuuito pequeno! faça as contas você mesmo!
As instruções que um processador pode executar, gastam N ticks (isso porque, grosseiramente falando, cada vez que o clock liga, ele aciona certos circuitos e sincroniza o processador com a placa mãe, etc.) . Isso vai depender de cada processador, e de cada instrução. A velocidade da CPU dita o tempo de cada instrução:
Por que saber de tudo isso é importante?
Quando você traz esses conceitos para o sistema operacional, e para os seus programas, como o SQL server, fica fácil entender certas coisas. No caso de uma simples consulta SQL, você tem centenas de milhares de instruções executando. Por exemplo, uma query como esta:
SELECT SUM(Valor) FROM Pedidos
Pode causar a execução de milhares de instruções. Vai depender da quantidade de registros, tamanho, concorrência, etc. A questão é que, no final das contas, tudo se resume ao que a CPU irá fazer, e entender a velocidade do seu processador vai te ajudar a compreender certos “fenômenos” e até planejar melhor seu ambiente. Imagine como esta query seria afetada se o tempo de cada instrução dobrasse…
No próximo post vou mostrar todos estes conceito na prática, quando você executa uma query no SQL Server!
Até lá!
UPDATE: Obrigado ao Luiz Vitor pelas indicações de correção no texto!
UPDATE 2: Muito obrigado José Diz pelas dicas, principalmente sobre o sistema internacional de medidas!
DBA Team Leader na Power Tuning
Comments ( 4 )