Os programas que usam a função QueryPerformanceCounter podem ter um desempenho ruim

Este artigo fornece uma resolução para um problema que ocorre em computadores de 32 bits e computadores baseados em x64 que têm a tecnologia AMD Cool'n'Quiet habilitada no BIOS.

Aplica-se a: Windows Server 2012 R2, Windows 10 - todas as edições
Número original do KB: 895980

Sintomas

Nos seguintes sistemas operacionais:

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • O.S. convidado do Windows Server 2000.
  • O.S. convidado do Windows XP.
  • O.S. convidado do Windows Server 2003.

Um programa que usa a função para consultar o QueryPerformanceCounter tempo do sistema pode ter um desempenho ruim.

Por exemplo:

Quando você usa o comando ping para enviar pacotes ICMP (Protocolo de Mensagem de Controle da Internet) para um computador remoto, a resposta pode mostrar tempos de resposta negativos. Por exemplo, o seguinte comando ping pode gerar as seguintes respostas:

C:\>ping x.x.x.x

Saída:

Pingando x.x.x.x com 32 bytes de dados:

Resposta de x.x.x.x: bytes=32 time=-59ms TTL=128
Resposta de x.x.x.x: bytes=32 time=-59ms TTL=128
Resposta de x.x.x.x: bytes=32 time=-59ms TTL=128
Resposta de x.x.x.x: bytes=32 time=-59ms TTL=128

Além disso, se você usar contadores de desempenho para Disco Lógico ou Disco Físico pode mostrar incorretamente um valor de alta latência.

Observação

Esse problema ocorre em um computador que está executando uma versão baseada em x86 do Windows ou em uma versão baseada em x64 do Windows.

Motivo

Esse problema ocorre quando o computador tem a tecnologia AMD Cool'n'Quiet (núcleos duplos AMD) habilitada no BIOS ou em alguns processadores multi-core da Intel. Sistemas multi-core ou multiprocessadores podem encontrar a deriva TSC (Contador de Carimbo de Tempo) quando o tempo entre diferentes núcleos não for sincronizado. Os sistemas operacionais que usam o TSC como um recurso de manutenção de tempo podem ter o problema.

Resolução

Para resolve esse problema, marcar com o fornecedor de hardware para ver se uma nova atualização de driver/firmware está disponível para corrigir o problema.

Observação

A instalação do driver pode adicionar a opção /usepmtimer no arquivo Boot.ini. Essa opção é discutida na seção "Solução alternativa".

Solução alternativa

Para solucionar esse problema, atualize o BIOS no computador. Ou modifique o arquivo Boot.ini para usar o comutador /usepmtimer. Para fazer isso, siga estas etapas:

  1. Faça logon no computador usando uma conta com credenciais administrativas.

  2. Clique em Iniciar, clique em Executar, digite notepad c:\boot.inie clique em OK.

  3. No arquivo Boot.ini, uma linha que começa com "padrão" está localizada na seção "[carregador de inicialização]". Essa linha especifica o local do sistema operacional padrão. A linha pode aparecer da seguinte maneira:

    default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
    

    Na seção "[sistemas operacionais]", localize a linha do sistema operacional que corresponde à linha "padrão". Por exemplo, se o computador estiver executando o Microsoft Windows Server 2003, Enterprise x64 Edition, a linha deverá se assemelhar ao seguinte:

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. No final da linha, adicione um espaço e digite /usepmtimer. A linha agora deve se assemelhar ao seguinte.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. Salve o arquivo e saia do Bloco de Notas.

  6. Reinicie o computador.

A seguir está um arquivo Boot.ini de exemplo para um sistema que contém o comutador /usepmtimer.

[boot loader]  
timeout=0  
default=multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS  
[operating systems]  
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer

Observação

O arquivo Boot.ini está localizado na pasta raiz da unidade do sistema.
Usar a configuração /UsePmTimer pode introduzir uma diminuição no desempenho.

Suporte técnico para versões do Microsoft Windows com base em x64

Se o hardware veio com uma edição do Windows x64 já instalada, seu fabricante de hardware fornecerá suporte técnico e assistência para a edição do Windows x64. Nesse caso, ele oferece suporte porque uma edição de x64 do Windows foi incluída no hardware. O fabricante também pode ter personalizado a instalação da edição x64 do Windows, usando componentes exclusivos. O fabricante pode incluir drivers de dispositivos específicos ou configurações opcionais para maximizar o desempenho do hardware. A Microsoft fornecerá assistência razoável se você precisar de ajuda técnica com uma edição x64 do Windows. No entanto, pode ser necessário contatar diretamente o fabricante. O fabricante é o mais qualificado para dar suporte ao software instalado no hardware. Se você comprou separadamente uma edição x64 do Windows, como o Microsoft Windows Server 2003 x64, contate a Microsoft para obter suporte técnico.

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.