Central Processing Unit (ou CPU) é um dos dispositivos mais importantes que existem em um computador. É lá que todos os outros dispositivos são coordenados e onde uma série de operações são realizadas, como soma, subtração, leitura e armazenamento de dados, etc. Essas operações são realizadas através das instruções, que são apenas números que ativam certos circuitos do processador.
As linguagens de programação são interpretadas ou compiladas, resultando em instruções que a CPU entende. Um simples código escrito em C++ ou T-SQL pode resultar na execução de milhões de instruções. Na grande maioria dos casos, quanto mais instruções, mais demorado aquele código irá rodar. Otimizar o uso de CPU de um código significa reduzir o número de instruções que são executadas, ou escolher um conjunto de instruções que resultem em menos tempo de processamento.
O SQL Server possui componentes que fazem a interpretação do código T-SQL e, baseado nas cláusulas e comandos utilizados, executam as instruções adequadas. Assim como qualquer outro processo no Windows, o SQL Server possui threads e está sujeito aos limites e configurações do ambiente, e, portanto, compreender certos mecanismos e conceitos do sistema operacional é importante para efetuar otimizações em scripts.
Otimizar o consumo de CPU é um desafio, principalmente em código T-SQL. Antes de qualquer ação, é preciso compreender como o sistema operacional e as ferramentas de análise disponibilizam e mensuram o gasto de CPU para que se possa direcionar as técnicas de otimização. O Windows e o SQL Server fornecem várias ferramentas para auxiliar no processo de análise. Este artigo irá explorar os conceitos básicos, técnicas e ferramentas que o desenvolvedor ou o DBA podem utilizar para tornar a utilização de CPU mais eficiente em suas aplicações. Todos os exemplos funcionam a partir da versão 2005 e os casos específicos de uma versão serão informados.
Processador, cores, CPU e hyper thread
É importante definir os termos quando se fala em CPU, pois diferentes fontes os usam como se fossem a mesma coisa. Os próximos parágrafos irão definir os termos a serem usados no artigo.
Processador se refere ao dispositivo acoplado diretamente no computador, especificamente na placa mãe. Podem existir um ou mais processadores em um computador. Cada processador possui um ou mais cores (núcleos). O core é a unidade de processamento. Ele é capaz de realizar as operações independentemente dos outros Cores. O core é capaz de executar um grupo de instruções por vez, mas há arquiteturas, como o Simultaneous multithreading (SMT), que otimiza o uso do core, dando a impressão de que ele executa dois conjuntos de instruções por vez. Uma famosa implementação dessa arquitetura é o Hyper Thread, da Intel.
Para o sistema operacional, um processador com dois cores, e com hyper thread habilitado, quatro cores serão visualizados (dois cores físicos, cada um com dois cores lógicos, resultando em quatro cores lógicos). Na maioria dos casos, o SMT fornece um ganho considerável de performance, mas podem existir casos onde ele atrapalha, devido ao uso de recursos compartilhados, entre outros fatores.
Para esse artigo, o termo CPU será usado frequentemente e se refere a um core enxergado pelo sistema operacional, seja ele físico ou lógico.
Processos e threads
Um dos papéis do sistema operacional é coordenar a execução das instruções de diferentes programas. O Windows faz isso por meio de processos e threads. O processo é uma estrutura do Windows que contém diversos elementos, como memória, código (as instruções), etc. Todo processo possui pelo menos uma thread.
A thread é uma estrutura que o Windows utiliza para, principalmente, organizar a execução de instruções. Quando se diz que “uma thread está executando”, significa que a CPU está e ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Confira outros conteúdos:
Supabase: banco de dados como serviço...
SQL SUM: somando os valores de uma...
SQL: INNER JOIN
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.