パフォーマンスと応答性の最適化
お客様は、高パフォーマンスで応答性の高いシステムを期待しています。 これには、起動時間からアプリケーションとの流動的なユーザーインタラクションまで、幅広いシナリオが含まれています。 パフォーマンスの問題を分析するには、多くの専門知識とドメイン固有の知識が必要です。 Microsoft には、この複雑なタスクに取り組むのに役立つツールが提供されています。
このガイドでは、主要な領域におけるパフォーマンスの問題の根本原因を測定、分析、解決するプロセスについて説明します。 取り上げるトピックは次のとおりです。
Windows Performance Toolkit (WPT) の使用
イベント トレース ログ (ETL) トレースのキャプチャ
ブート、アプリケーションの起動、UI の遅延
CPU とディスクのリソース使用率の分析
クリティカル パスと待機の分析
目標
このガイドでは、次のタスクを実行する方法について説明します:
関連するデータを収集して、どんなシステムでもパフォーマンスの問題を分析します
CPU やディスクなど、システム リソースの消費量を確認する分析プロセスを理解します
一部の重要Windowsのシナリオでシステムの応答性に影響を与える可能性あるものを特定します
ツール
ADK Windows評価Toolkitは評価と呼ばれるパフォーマンス関連のテストのセットが提供されます。 評価結果は、潜在的な問題を診断するために使用されます。そのため、開発するハードウェアとソフトウェアの両方が応答性が高く、バッテリの寿命、起動パフォーマンス、シャットダウン時間への影響が最小限に抑えられます。 OEM/ISV/IHV パートナー、ファン、コミュニティの他のメンバーも同じ評価を利用して、品質の側面を測定、比較、レビューするための共通のフレームワークを確立できます。
Windows Performance Toolkit は、次の 2 つの独立したツールで構成されています:Windows Performance Recorder (WPR) および Windows Performance Analyzer (WPA) です。 WPR は、Event Tracing for Windows (ETW) の記録を作成する強力な記録ツールです。 WPR は、ユーザー インターフェイス (UI) からでも、コマンド ライン (CL) からでも実行できます。 WPR には、記録対象のイベントの選択に使用できる組み込みのプロファイルが用意されています。 WPA は強力な分析ツールであり、非常に柔軟な UI が、幅広いグラフ機能や、ピボット操作が可能で全文検索機能を備えたデータ テーブルと組み合わされています。
起動の動作
このページではWindows 8、高速スタートアップが既定のブート動作です。 シャットダウン プロセスが更新され、休止状態の動作をミラーリングする方法でディスクにデータを書き込む処理が含まれます。 起動時に、システムは次の表に示すフェーズを通過します。
フェーズ | 説明 |
---|---|
BIOSの初期化 | オペレーティング システムが BIOS の初期化に要する時間、 (PXE) Pre-Boot Execution Environment含む。 |
ハイバーファイルの読み取り | オペレーティング システムがディスクから休止ファイルを読み取るのにかかる時間。 休止ファイルには、シャットダウン時に書き込まれたすべてのシステム コンテキストが含まれます。 |
デバイスの再開 | オペレーティング システムがデバイスを再開し、アクティブな電源状態に戻すのにかかる時間。 |
WinLogon の再開 | オペレーティング システムが Winlogon プロセスを再開するのにかかる時間。 |
エクスプローラーの初期化の所要時間 | オペレーティング システムがシェルの初期化に要する時間Windows shell(explorer.exe)。 このフェーズは、デスクトップまたはコンピューターがスタート画面ユーザーに表示された時点で終了します。 |
再開後のオン/オフの所要時間 | デスクトップが表示され、Windows、CPU とディスク リソースがアイドル状態になるまで、すべてのスタートアップ タスクを完了するのにかかる時間です。 |
高速スタートアップ動作の詳細については、MSDN の「切り替えパフォーマンスのオン /オフ 」を参照してください。
CPU スケジュールとスレッド
システムのプロセッサ数が制限されているため、すべてのスレッドを同時に実行することはできません。 Windows はプロセッサのタイムシェアリングを実装します。これにより、プロセッサが別のスレッドに切り替える前に一定期間、スレッドを実行できます。 スレッド間の切り替えの動作はコンテキストスイッチと呼ばされ、ディスパッチャーと呼ばれるWindowsコンポーネントによって実行されます。 各スレッドは、特定の時点で特定の実行状態に存在します。 Windowsパフォーマンスに関連する 3 つの状態を使用:します。実行中、準備完了、そして待機中。
実行中のスレッドは実行中の状態 です。 実行できるが、現在実行されていないスレッドは、 準備完了状態です。 (特定のイベントを待機している) 実行できないスレッドは、待機中状態 です。 次の図は、考えられるスレッド遷移を示しています。
実行中状態のスレッドは、WaitForSingleObjectやSleep( > 0)などの 待機関数を呼び出すことによって、待機状態への遷移を開始します。
実行中のスレッドまたはカーネル操作は、待機中の状態(SetEventやタイマーの有効期限など) のスレッドを読み取ります。
Ready 状態の スレッド は、実行中のスレッドが待機するか、実行の量子の最後に達したときに、ディスパッチャーによって処理がスケジュールされます。
実行中状態のスレッドは、優先度の高いスレッドに割り込むか、量子が終了すると、ディスパッチャーによって切り替わり、準備完了状態になります。
スレッドの状態は、ユーザーがスレッドが操作を完了するのを待機している場合にのみ、パフォーマンスの重要な要因になります。
CPU スケジュールの詳細については、MSDN の CPU 分析 に関するトピックを参照してください。
演習
このガイドは、次の演習で構成されています。