Valores de tempo do SQL Server podem estar incorrectos quando utilizar utilitários ou tecnologias alterar frequências da CPU

Traduções de Artigos Traduções de Artigos
Artigo: 931279 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Microsoft SQL Server 2005 utiliza o contador da CPU alta resolução para fornecer capacidades de temporização microsecond. Um microsecond é um millionth de segundo (ou um milésimos de um milisegundos). No entanto, valores de tempo do SQL Server podem estar incorrectos se utilizar tecnologias alterar frequências de CPU. Por exemplo, este problema poderá ocorrer quando utiliza qualquer uma das seguintes tecnologias:
  • CPU passo
  • AMD Cool'n ' silencioso tecnologia
  • Vários esquemas de energia
Este artigo contém métodos e informações adicionais para o ajudar a resolver este problema.

Sintomas

Quando utiliza a instrução SET STATISTICS tempo para apresentar a execução de servidor, análise e compilação horas, poderá obter valores incorrectos. Por exemplo, poderá notar que o tempo decorrido do tempo de execução do SQL Server é muito mais do que o tempo de CPU. Este problema poderá afectar a precisão da optimização do desempenho. Este problema ocorre quando utiliza uma das tecnologias que estão listadas na secção "Sumário" no servidor.

Causa

Este problema ocorre porque as frequências da CPU são alteradas quando utiliza estas tecnologias. SQL Server 2005 utiliza o contador da CPU alta resolução para fornecer capacidades de temporização microsecond. Se forem alteradas frequências de CPU para poupar energia e reduzir a saída de calor, durações calculadas podem estar incorrectas.

Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente para o SQL Server 2005. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
913089Como obter o service pack mais recente para o SQL Server 2005
Nota Em SQL Server 2005 Service Pack 3 e service packs posteriores, não é utilizado o carimbo de data / hora do processador. Estas versões do SQL Server 2005 utilizam um temporizador mais fiável que tenha uma precisão de máxima de 1 milisegundos.

Ponto Da Situação

Este problema foi corrigido pela primeira vez no SQL Server 2005 Service Pack 3.

Como contornar

Pontos de dados conhecidos e estável para efectuar a optimização do desempenho preciso requer o SQL Server 2005. Se ajustes de frequência da CPU dinâmicas estiverem activadas no computador, poderá desactivá-los para que as CPU mantém uma velocidade de frequência constante antes de começar a monitorizar e optimizar o desempenho do SQL Server. Para o fazer, utilize os seguintes métodos.

Configurar o esquema de energia no computador para forçar as CPU permaneçam com frequência máxima

Para o fazer, siga estes passos:
  1. Clique em Iniciar , clique em Executar , escreva Powercfg.cpl e, em seguida, clique em OK .
  2. Na caixa de diálogo Propriedades de opções de energia , clique em ' Sempre ligado ' na lista esquemas de energia .
  3. Clique em OK .
Poderá ocorrer um drift. Um drift é um divergence entre valores de frequência da CPU. Para mais informações, consulte a secção "Impulso". Neste caso, tem de reiniciar Microsoft Windows para voltar a sincronizar frequências de todas as CPU depois de alterar o esquema de energia.

Se não conseguir reiniciar o computador, Active a afinidade do processador do SQL Server impedir que threads de trabalho do SQL Server mover entre CPU. Quando o fizer, não é necessário reiniciar o computador, mesmo se um divergence entre valores de frequência da CPU ocorre. Para activar a afinidade do processador do SQL Server para todas as CPU no servidor, tem de utilizar uma máscara de diferente, dependendo do número de processadores lógicos estão no servidor.

A tabela seguinte lista cenários de exemplo.
Reduzir esta tabelaExpandir esta tabela
Número de CPUInstruções para activar a afinidade do processador
02 CPUexec sp_configure 'máscara de afinidade', 0 x 00000003
AVANÇAR
reconfigurar
AVANÇAR
04 CPUexec sp_configure 'máscara de afinidade', 0x0000000F
AVANÇAR
reconfigurar
AVANÇAR
08 CPUexec sp_configure 'máscara de afinidade', 0x000000FF
AVANÇAR
reconfigurar
AVANÇAR
16 CPUexec sp_configure 'máscara de afinidade', 0x0000FFFF
AVANÇAR
reconfigurar
AVANÇAR
32 CPUexec sp_configure 'máscara de afinidade', 0xFFFFFFFF
AVANÇAR
reconfigurar
AVANÇAR
Nota Poderá ser insuficiente para desactivar as funcionalidades de variação de frequência da CPU ao nível do BIOS. Vários utilitários de outros fabricantes podem alterar as frequências de CPU. Algumas implementações activar ajustes de frequência, mesmo quando as CPU estão em definições de esquema de energia máximas. Neste caso, tem de desactivar estes utilitários de outros fabricantes quando executadas no SQL Server 2005 optimização do desempenho.

Utilizar utilitários de outros fabricantes e os controladores para sincronizar frequências de CPU e contadores de relógio da CPU

Em ocasiões raras, um sistema pode requerer uma actualização do fabricante para corrigir problemas de frequência da CPU. É um procedimento recomendado para verificar o sistema para as actualizações de BIOS microcódigo e firmware mais recentes se suspeitar que o sistema pode ter um problema.

Mais Informação

Microsoft SQL Server 2000 e versões anteriores do SQL Server utilizam os mecanismos de temporização do Windows. Os mecanismos de temporização utilizam valores de precisão milisegundos. Normalmente, esta precisão é 10 a 15 ms. no entanto, a precisão pode ser tão grande como ms 55. Consultas do SQL Server frequentemente concluída dentro do dígito milisegundos ou tempo microsecond abrange. Esta precisão requer um temporizador de alta resolução. Por este motivo, estas versões do relatório do SQL Server a duração de algumas consultas como ms. 0 por conseguinte, é difícil monitorizar o desempenho e optimizar o desempenho do SQL Server em versões anteriores do SQL Server.

SQL Server 2005 melhora a exactidão utilizando o contador da CPU alta resolução para fornecer capacidades de temporização microsecond. Quando utiliza as tecnologias que estão listadas na secção "Sumário", os valores de tempo comunicados podem estar incorrectos.

Este problema poderá afectar os objectos e as funcionalidades seguintes:
  • Eventos de rastreio:
    • O evento de atenção
    • Eventos no nó procedimentos armazenados
    • Eventos no nó TSQL
    • Eventos no nó objectos
    • Eventos no nó transacções
  • Vistas de gestão dinâmica:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • A instrução SET STATISTICS TIME
  • A tabela de sistema sysprocesses
Depois de instalar o SQL Server 2005 Service Pack 2 (SP2), o SQL Server regista uma mensagem de erro no registo de erro quando o SQL Server detecta que os temporizadores de alta resolução não estão sincronizados entre as CPU. A mensagem de erro indica que temporizações de desempenho poderão não ser exactas e os utilizadores devem utilize dados de desempenho com cuidado.

O texto da mensagem de erro semelhante uma das seguintes mensagens de erro:
Mensagem de erro 1
O contador de carimbo de data / hora da CPU no programador id 2 não está sincronizado com outra CPU.
Mensagem de erro 2
Frequência de carimbo de data / tempo da CPU foi alterado de 191469 para 1794177 ticks por milissegundo. Será utilizada a frequência de nova
SQL Server utiliza a instrução RDTSC (Real Time carimbo de data / contador) para obter a contagem de tiques 64 bits da CPU. Pode dividir este valor, a frequência da CPU a converter o valor em milisegundos. Variações de tempo podem ocorrer quando as alterações de frequência da CPU ou drift ocorre.

CPU passo

CPU passo é definida como uma alteração deliberada na frequência da CPU. CPU passo também pode ser conhecida como tecnologia SpeedStep da Intel ou AMD PowerNow! tecnologia. Quando CPU passo ocorre, a velocidade da CPU pode aumentar ou diminuir em incrementos mais pequeno 50 MHz para poupar energia e reduzir a saída de calor. CPU que estão ao mesmo nó de acesso (NUMA) de memória não-uniform não ajustar independentemente frequências.

A tabela seguinte ilustra como alterações de nível da CPU poderão afectar cálculos de temporização.
Reduzir esta tabelaExpandir esta tabela
AcçãoMarcas de escala RDTSCTicks por milissegundo (frequência)Hora do relógio parede
Iniciar batch12000
Passo de frequência para baixo2001001ms
Secção de fim5003ms
TOTAIS5004ms
SQL Server captura os ticks RDTSC no início e fim ticks RDTSC. Em seguida, SQL Server divide os ticks pelo valor de frequência.

Neste exemplo, os cálculos de temporização seguintes ocorrem quando utiliza um valor de frequência de 200 ou 100:
  • frequência 200: 500/200 = 2.5 ms
  • frequência 100: 500/100 = 5 ms
Nenhum dos cálculos temporização corresponde a altura do ms 4 relógio parede real.

Se for utilizado este cálculo de um RPC: concluída rastreio evento, a duração e a hora de fim colunas de dados são incorrectamente comunicadas. O RPC: concluída evento captura a hora do relógio parede inicial e contagem de escala da CPU. Para obter maior tempo de resolução do Windows fornece nas colunas de dados SQL Server 2005, a duração e hora de fim no SQL Server rastreio são calculados utilizando a contagem de tiques CPU decorrida. A coluna hora de fim é calculada adicionando a coluna duração para a coluna hora de início . Neste exemplo, a coluna hora de fim é calculada adicionando incorrectamente ou ms 2.5 ms 5 à hora de início.

Drift

Drift é um divergence nos valores de relógio da CPU. Sistemas que tenham várias CPU podem produzir valores de relógio da CPU diferentes para o mesmo ponto no tempo. Embora não seja comum, CPUs poderão ocorrer separação de relógio ao longo do tempo.

O exemplo seguinte demonstra como drift alterações podem afectar o resultado da coluna de dados de duração num rastreio do SQL Server. O exemplo assume que a frequência da CPU permanece fixa em 200 ticks por milissegundo. A tabela seguinte ilustra os eventos neste cenário.
Reduzir esta tabelaExpandir esta tabela
AcçãoCPU agendada do WindowsCPU 1 RDTSCCPU 2 RDTSCHora do relógio parede
Iniciar batch110011000
Secção de fim29001900ms 4
TOTAISms 4
SQL Server captura os ticks RDTSC os pontos de início e pontos finais. Em seguida, SQL Server divide ticks RDTSC pelo valor de frequência. Neste exemplo, Windows agendou o thread de trabalho do SQL Server em dois processadores diferentes. O thread de trabalho do SQL Server que a secção de serviços executado pela primeira vez no primeira CPU (CPU 1).

No entanto, a execução de comandos foi interrompida em algum momento e SQL Server enviadas a execução de comandos para a fila pendente. Quando o SQL Server enviado o thread de trabalho do SQL Server que serve este processo para a fila runnable novamente, o Windows distribuído o thread para executar a segunda CPU (2 de CPU). O thread de trabalho do SQL Server concluída em execução no 2 da CPU. Devido a drift da CPU, o valor de escala de fim que foi capturado de CPU 2 era 1900 em vez de 900. Pode evitar este comportamento se activar a afinidade do processador do SQL Server.

Os cálculos de temporização seguintes são utilizados neste exemplo:
  • mas incorrecta dada valor: (100 1900 = 1800) / 200 = 9 ms
  • corrigir valor: (900 100 = 800) / 200 = 4 ms
O valor da coluna duração para o RPC: concluída evento iria ser dada por ms 9 em vez de 4 ms. este resultado é duplo mais do que o valor correcto da ms 4.

Mensagens de aviso drift são adicionadas ao SQL Server 2005 para indicar que saídas de desempenho que são mencionadas anteriormente podem não ser fiáveis. Em algumas situações não estão destapadas, SQL Server 2005 SP2 poderá reportar mensagens de aviso sobre o seguinte:
  • Mensagens de aviso drift FALSO
  • Drift podem ficar dezenas de milissegundos sem causar um efeito de sistema visíveis
Tem de ser cuidado quando avaliar saídas relacionadas com o desempenho e quando comparar saídas relacionadas com o desempenho a intervalos de relógio de parede. Se existirem sem sinais de outros problemas de desempenho, normalmente, pode ignorar as mensagens de aviso drift. Por exemplo, pode ignorar normalmente as mensagens de aviso drift nas seguintes situações:
  • Processos estão a executar conforme esperado.
  • Consultas do SQL Server não estão a executar em padrões durational estranhos.
  • Não verá sinais de outros congestionamentos.
No entanto, antes de ignorar drift aviso mensagens, recomendamos que contacte o fabricante para se certificar de que não RDTSC problemas conhecidos existe.

Pode utilizar o sinalizador de rastreio 8033 (?T8033) para repor o comportamento de relatório na versão original do SQL Server 2005 e no SQL Server 2005 SP1. A versão original do SQL Server 2005 e SQL Server 2005 SP1 não comunicam drift mensagens de aviso. Se estiver a executar a versão original do SQL Server 2005 ou SQL Server 2005 SP1 sem problemas, normalmente, pode ignorar as mensagens.

Por que razão a instrução WAITFOR DELAY funciona correctamente? Quanto processos do sistema periódica?

Mecanismos de limite de tempo não são afectados por predefinição alta resolução. SQL Server não utiliza o temporizador de alta resolução para actividades baseada no temporizador. Algumas actividades de limite de tempo baseiam-se o temporizador de resolução reduzida que utiliza a função ObterContagemMarcaEscala . Estas actividades de limite de tempo incluem tempo limite de bloqueio, a instrução WAITFOR DELAY e detecção de impasse.
Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
938448Um servidor baseado no Windows Server 2003 pode ocorrer drift de contador de carimbo de data / hora se o servidor utiliza processadores AMD Opteron de duplo núcleo ou processadores AMD Opteron multiprocessadores
895980Programas que utilizam a função QueryPerformanceCounter poderão funcionar lentamente no Windows Server 2003 e no Windows XP
Os produtos de outros fabricantes explicado neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, sobre o desempenho ou fiabilidade destes produtos.

Propriedades

Artigo: 931279 - Última revisão: 16 de dezembro de 2008 - Revisão: 7.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Palavras-chave: 
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 931279

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com