QueryPerformanceCounter 함수를 사용하는 프로그램이 제대로 수행되지 않을 수 있음

이 문서에서는 BIOS에서 AMD Cool'n'Quiet 기술을 사용하도록 설정된 32비트 컴퓨터 및 x64 기반 컴퓨터에서 발생하는 문제에 대한 해결 방법을 제공합니다.

적용 대상: Windows Server 2012 R2, Windows 10 - 모든 버전
원본 KB 번호: 895980

증상

다음 운영 체제에서 다음을 수행합니다.

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • Windows Server 2000 게스트 O.S.
  • Windows XP 게스트 O.S.
  • Windows Server 2003 게스트 O.S.

함수를 QueryPerformanceCounter 사용하여 시스템 시간을 쿼리하는 프로그램이 제대로 수행되지 않을 수 있습니다.

예를 들면

ping 명령을 사용하여 원격 컴퓨터에 ICMP(인터넷 제어 메시지 프로토콜) 패킷을 보내는 경우 회신에 부정적인 응답 시간이 표시 될 수 있습니다. 예를 들어 다음 ping 명령은 다음 회신을 생성할 수 있습니다.

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

출력:

32바이트 데이터로 x.x.x.x.x ping:

x.x.x.x에서 회신: bytes=32 time=-59ms TTL=128
x.x.x.x에서 회신: bytes=32 time=-59ms TTL=128
x.x.x.x에서 회신: bytes=32 time=-59ms TTL=128
x.x.x.x에서 회신: bytes=32 time=-59ms TTL=128

또한 논리 디스크 또는 실제 디스크에 성능 카운터를 사용하는 경우 대기 시간이 긴 값이 잘못 표시될 수 있습니다.

참고

이 문제는 x86 기반 버전의 Windows 또는 x64 기반 버전의 Windows를 실행하는 컴퓨터에서 발생합니다.

원인

이 문제는 컴퓨터에 BIOS 또는 일부 Intel 다중 코어 프로세서에서 AMD Cool'n'Quiet 기술(AMD 듀얼 코어)이 사용하도록 설정된 경우에 발생합니다. 다중 코어 또는 다중 프로세서 시스템은 서로 다른 코어 간의 시간이 동기화되지 않을 때 TSC(타임스탬프 카운터) 드리프트가 발생할 수 있습니다. TSC를 시간 유지 리소스로 사용하는 운영 체제에서 문제가 발생할 수 있습니다.

해결 방법

이 문제를 resolve 위해 하드웨어 공급업체와 검사 문제를 해결하기 위해 새 드라이버/펌웨어 업데이트를 사용할 수 있는지 확인합니다.

참고

드라이버 설치는 Boot.ini 파일에 /usepmtimer 스위치를 추가할 수 있습니다. 이 스위치는 "해결 방법" 섹션에서 설명합니다.

해결 방법

이 문제를 해결하려면 컴퓨터에서 BIOS를 업데이트합니다. 또는 /usepmtimer 스위치를 사용하도록 Boot.ini 파일을 수정합니다. 이렇게 하려면 다음과 같이 하십시오.

  1. 관리 자격 증명이 있는 계정을 사용하여 컴퓨터에 로그온합니다.

  2. 시작을 클릭하고 실행을 클릭하고 를 입력notepad c:\boot.ini한 다음 확인을 클릭합니다.

  3. Boot.ini 파일에서 "기본값"으로 시작하는 줄은 "[부팅 로더]" 섹션에 있습니다. 이 줄은 기본 운영 체제의 위치를 지정합니다. 줄은 다음과 같이 나타날 수 있습니다.

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

    "[운영 체제]" 섹션에서 "기본" 줄에 해당하는 운영 체제의 줄을 찾습니다. 예를 들어 컴퓨터에서 Microsoft Windows Server 2003 Enterprise x64 Edition을 실행하는 경우 줄은 다음과 유사합니다.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. 줄 끝에 공백을 추가한 다음 /usepmtimer를 입력합니다. 이제 줄은 다음과 유사합니다.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. 파일을 저장한 다음 메모장을 종료합니다.

  6. 컴퓨터를 다시 시작합니다.

다음은 /usepmtimer 스위치를 포함하는 시스템의 샘플 Boot.ini 파일입니다.

[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

참고

Boot.ini 파일은 시스템 드라이브의 루트 폴더에 있습니다.
/UsePmTimer 설정을 사용하면 성능이 저하할 수 있습니다.

Microsoft Windows x64 기반 버전에 대한 기술 지원

하드웨어에 Windows x64 버전이 이미 설치된 경우 하드웨어 제조업체는 Windows x64 버전에 대한 기술 지원 및 지원을 제공합니다. 이 경우 하드웨어에 Windows x64 버전이 포함되어 있기 때문에 하드웨어 제조업체에서 지원을 제공합니다. 하드웨어 제조업체가 고유한 구성 요소를 사용하여 Windows x64 버전 설치를 사용자 지정했을 수도 있습니다. 고유한 구성 요소에는 특정 장치 드라이버가 포함되거나 하드웨어 성능을 최대화하기 위한 추가 설정이 포함되어 있을 수 있습니다. Microsoft는 Windows x64 버전에 대한 기술 지원이 필요한 경우 합리적인 지원을 제공합니다. 그러나 제조업체에 직접 문의해야 할 수 있습니다. 제조업체가 하드웨어에 설치한 소프트웨어를 지원하는 것이 가장 적절합니다. Microsoft Windows Server 2003 x64 버전과 같은 Windows x64 버전을 별도로 구입한 경우 Microsoft에 기술 지원을 문의합니다.

타사 정보 고지 사항

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.