この記事では、64 ビット 版の Windows で 64 ビット アプリケーションを実行すると、システムで CPU スパイクが 1 ~ 2 分間発生する問題の回避策について説明します。
適用対象: Windows 7 Service Pack 1
元の KB 番号: 2723033
現象
/LARGEADDRESSAWARE:NO オプションを使用してコンパイルされた 64 ビット アプリケーションが 64 ビット バージョンの Windows で実行されている場合、システムで CPU スパイクが 1 ~ 2 分間発生する可能性があり、これは間違いなく発生します。 この状況では、タスク マネージャーは、SysMain(SuperFetch) サービスをホストしているsvchost.exe プロセスが CPU 使用率を消費することを示します。
原因
Windows では、プロセスの作成時に、2 GB を超えるアドレス空間に対して 1 つの読み取り専用仮想アドレス記述子 (VAD) が作成されます。 実行中のプロセスの VAD ツリーのスキャン中に SuperFetch が VAD を検出し、巨大な VAD サイズでスピンし、CPU がスパイクする原因となります。
回避策
この問題を回避するには、アプリケーションのコンパイル時にオプション /LARGEADDRESSAWARE:NO を回避してください。
Note
既定では、64 ビット アプリケーションは拡張アドレス空間 (プロセスあたり 8 テラバイト) を使用します。