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.

Número de KB original: 895980

Sintomas

Nos seguintes sistemas operacionais:

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • O.S. convidado do Windows Server 2000.
  • Sistema operacional convidado do Windows XP
  • sistema operacional convidado do Windows Server 2003.

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

Por exemplo:

Quando você usa o comando ping para enviar pacotes ICMP (Internet Control Message Protocol) para um computador remoto, a resposta pode mostrar tempos de resposta negativos. Por exemplo, o comando ping a seguir 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 de vários núcleos da Intel. Sistemas multicore ou multiprocessadores podem encontrar descompasso do TSC (Contador de Carimbo de Tempo) quando o tempo entre diferentes núcleos não está sincronizado. Os sistemas operacionais que usam o TSC como um recurso de manutenção de tempo podem enfrentar o problema.

Resolução

Para resolver esse problema, verifique 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 a opção /usepmtimer. Para fazer isso, siga estas etapas:

  1. Faça logon no computador usando uma conta que tenha 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á ser semelhante à 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 ser semelhante à seguinte.

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

  6. Reinicie o computador.

Veja a seguir um arquivo de 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 baseadas em x64 do Microsoft Windows

Se o hardware veio com uma edição do Windows x64 já instalada, o fabricante de hardware fornece suporte técnico e assistência para a edição Windows x64. Nesse caso, o fabricante de hardware oferece suporte porque uma edição do Windows x64 foi incluída com seu hardware. O fabricante de hardware pode ter personalizado a instalação da edição do Windows x64 usando componentes exclusivos. Componentes exclusivos podem incluir drivers de dispositivo específicos ou podem incluir configurações opcionais para maximizar o desempenho do hardware. A Microsoft fornecerá assistência dentro de um esforço razoável se você precisar de ajuda técnica com uma edição x64 do Windows. No entanto, talvez seja necessário entrar em contato diretamente com o fabricante. Seu fabricante é mais qualificado para dar suporte ao software instalado pelo fabricante no hardware. Se você comprou uma edição do Windows x64, como uma edição do Microsoft Windows Server 2003 x64 separadamente, entre em contato com a Microsoft para obter suporte técnico.

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

Os produtos de terceiros que este artigo aborda são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, sobre o desempenho ou a confiabilidade desses produtos.