Share via


オン/オフ パフォーマンスのベスト プラクティス

プラットフォーム

クライアント- Windows Vista |Windows 7
サーバー- Windows Server 2008 |Windows Server 2008 R2

説明

高度なコンピューター電源インターフェイス (ACPI) 仕様で定義されているように、システムの電源状態 (または S 状態) は、最も一般的な S 状態遷移はコンピューターのオンとオフを切り替えるので、オン/オフ状態と口語的に呼び出されます。 Windows Vista または Windows 7 を実行しているシステムでは、起動、スリープ (ACPI S3)、休止状態 (ACPI S4)、シャットダウンなど、さまざまなオン/オフ状態遷移があります。

これらのオン/オフ遷移中の良好なパフォーマンスは、コンピューターの認識品質を向上させるだけでなく、毎日のコンピューターの使用パターンとシステムの信頼性にも大きく影響します。 お客様は、起動やシャットダウンに時間がかかりすぎるシステムに不満を感じる可能性があります。 長いスリープと休止状態の切り替えを持つモバイル システムは、不必要にバッテリの寿命を使い果たすことができます。 シャットダウン時間が長いほど、モバイル システムの信頼性にも悪影響を及ぼす可能性があります。 たとえば、予期しない電源切断のリスクが高くなります。

ドライバー、アプリケーション、サービスなどのシステム拡張機能は、オン/オフの移行時間に大きな影響を与える可能性があります。 このセクションでは、起動、スタンバイ、シャットダウン中の遅延を回避し、起動後と再開後のユーザー エクスペリエンスを確実に応答性を確保するために、アプリケーションとサービスの開発者が従うことができるベスト プラクティスの一部について説明します。 Windows パフォーマンス ツールキットを使用してパフォーマンスのオン/オフの問題を特定し、アプリケーションまたはサービスに関する以下の推奨事項を実装する方法の詳細については、「他のリソースへのリンク」セクションのホワイトペーパーを参照してください。

ベスト プラクティス

  • Windows Performance Toolkit を使用して、すべてのオン/オフ切り替え中のパフォーマンスを測定します。
  • 制御された方法でテストを実行し、有効なベースラインと比較します。
    • システム拡張機能ができるだけ少ないシステムでベースライン測定を取得する
    • アプリケーションとサービスを一度に 1 つずつ追加する
    • オン/オフ切り替え時間で許容できない回帰をテストする
  • クリティカル ブート パス上のアプリケーションにマネージド コードを使用しないでください。
  • すべてのアプリケーションがシャットダウン通知 (WM_QUERYENDSESSIONおよびWM_ENDSESSION メッセージ) に迅速に応答することを確認します。
  • シャットダウン通知に応じて CPU、ディスク、ネットワークのアクティビティを最小限に抑えることで、サービスとアプリケーションのシャットダウン パスの遅延を減らします。
  • 中断通知 (WM_POWERBROADCAST メッセージ) の処理の遅延を回避します。
  • 迅速に応答してイベントを再開し、再開後の CPU、ディスク、ネットワークの使用量を最小限に抑えます。
  • 起動後のアプリケーション リソースの消費量を減らします。
  • 起動時に RunOnce キーからアプリケーションを起動しないでください。
  • ブート中にシステム リソースを使用できるようにするために、すべての不要なサービスを需要開始またはトリガー開始に変換します。
  • 読み込み順序グループを使用してサービスの依存関係を表現しないようにします。
  • 実行中のすべてのサービスで、サービス コントロール マネージャー (SCM) がブロックされないように、起動時にできるだけ早くこの状態が報告されるようにします。
  • スタートアップ パスでサービスにマネージド コードを使用しないでください。
  • 絶対に必要でない限り、サービスが事前シャットダウンとシャットダウンの通知 (SERVICE_CONTROL_PRESHUTDOWNおよびSERVICE_CONTROL_SHUTDOWN制御コード) を受け取ることをオプトインすることを許可しないでください。
  • シャットダウン通知を受け取ることを選択したすべてのサービスが、SCM に迅速に応答することを確認します。
  • 絶対に必要な場合を除き、サービスが中断通知の受信をオプトインしないことを確認します。
  • すべてのサービスが迅速に応答してイベントを再開し、再開後の CPU、ディスク、ネットワークの使用量を最小限に抑えるようにします。