現象 †
QueryPerformanceCounterが異常な結果を返します。
例えば「ping 127.0.0.1」の結果に、2132msなど意味不明な値を返してきます。
実際のレスポンスは他のマシンと同様に一瞬です。
原因 †
- 複数のプロセッサコアを搭載しているAMD CPUでTSC(タイムスタンプカウンタ)のずれが生じているため発生するらしいです。
どうやらCool'n'Quiet搭載のCPUかつ、2000Server、Server2003、XPx64で発生するとのこと。
対策 †
- 修正ドライバをインストール方法と、boot.iniを修正する方法があるようです。
修正ドライバインストール †
- 「AMD Processor Driver」、「AMD Dual-Core Optimizer」をダウンロードし、インストールします。
http://www.amd.com/jp/Pages/AMDHomePage.aspx
- 再起動します。
boot.iniの編集 †
- 「C:\boot.ini」を開きます。
ブートのパラメータに「/usepmtimer」を追加します。
これを行うことで、TSC(タイムスタンプカウンタ)ではなくPM_TIMER(ACPI Power Management Timer)がWindowsで使用されるようになります。
1
2
3
4
5
|
| [boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional x64 Edition" /noexecute=optin /fastdetect /usepmtimer
|
- 保存し再起動します。
検証時の環境 †
- Windows XP Professional x64 SP2
参考 †