使用 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.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 做為計時資源的作業系統可能會遇到此問題。

解決方案

若要解決此問題,請洽詢硬體廠商,以查看是否有新的驅動程式/韌體更新可用來修正此問題。

注意事項

驅動程式安裝可能會在 Boot.ini 檔案中新增 /usepmtimer 參數。 此參數會在一節中討論。

因應措施

若要解決此問題,請更新電腦上的BIOS。 或者,修改 Boot.ini 檔案以使用 /usepmtimer 參數。 如果要執行這項操作,請依照下列步驟執行:

  1. 使用具有系統管理認證的帳戶登入計算機。

  2. 按兩下 [開始],按兩下 [ 執行],輸入 notepad c:\boot.ini,然後按兩下 [ 確定]

  3. 在 Boot.ini 檔案中,開頭為 “default” 的行位於 “[boot loader]” 區段中。 這一行會指定預設作業系統的位置。 這一行可能會如下所示:

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

    在 [[操作系統]] 區段中,找出對應至 “default” 行之操作系統的行。 例如,如果計算機執行的是 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 設定可能會導致效能降低。

X64 型版本 Microsoft Windows 的技術支援

如果您的硬體隨附已安裝的 Windows x64 版本,您的硬體製造商會提供 Windows x64 版本的技術支援和協助。 在此情況下,您的硬體製造商會提供支援,因為您的硬體附帶 Windows x64 Edition。 您的硬體製造商可能已使用獨特元件自訂 Windows x64 Edition 安裝。 獨特元件可能包含特定裝置驅動程式,或可能包括選用的設定,以最大化硬體效能。 如果您需要與 Windows x64 Edition 相關的技術協助,Microsoft 將會提供合理程度的協助。 不過,您可能必須直接與製造商連絡。 您的製造商最適合支援您廠商安裝在硬體上的軟體。 如果您單獨購買 Windows x64 Edition,例如 Microsoft Windows Server 2003 x64 Edition,請向 Microsoft 尋求技術支援。

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。