ユーザー モード ドライバーのログ記録
この記事では、WDDM でのユーザー モード ドライバーのログ記録の概要について説明します。
ビデオ メモリのより実用的な内訳を取得するには、WDDM ドライバーは、Direct3D リソースとビデオ メモリ割り当ての間の関係を公開する必要があります。 Windows 8 以降では、この機能は、ユーザー モード ドライバー (UMD) ログ インターフェイスを追加することで可能です。 この情報を Windows イベント トレーシング (ETW) トレースに追加すると、API の観点からビデオ メモリの割り当てを確認できます。
要件:
- WDDM の最小バージョン: 1.2
- Windows の最小バージョン: 8
- ドライバーの実装 — フル グラフィックスおよびレンダリング専用: 必須
- WHLK の要件とテスト: Device.GraphicsڂUMDLogging
開発者にとって、UMD ログは、内部断片化やサーフェスの迅速な破棄の影響など、メモリ コストを明確にできます。 これにより、Microsoft は、パフォーマンスの問題を分析するためのトレースを提供する顧客やパートナーとより適切に連携できます。 特に、この機能は、メモリ関連のパフォーマンスの問題を調査する際の一般的なブロック ポイントを克服するのに役立ちます。アプリケーションで使用されているワーキング セットが大きすぎますが、問題の原因となっている API リソースまたは呼び出しを特定することはできません。
ドライバーは、UMD ETW インターフェイスを実装することで、Direct3D リソースとビデオ メモリ割り当ての間の関係を公開する必要があります。 ログ イベントに加えて、ドライバーは、任意の時点でリソースと割り当ての間のすべての既存のマッピングを報告できる必要があります。
UMD ドライバー割り当てログ DDI
UMD 割り当てログ DDI は、DirectX グラフィックス カーネル サブシステム (Dxgkrnl.sys) でどのカーネル割り当てに関連付けられている API リソースを示す ETW カーネル レベルのトレース機能の下でイベントを提供します。
DDI を使用すると、次のことができます。
- 内部メモリの断片化や、迅速に破棄されるサーフェスの影響を検出します。
- パフォーマンスの問題を特定するのに役立つ、Microsoft のより優れたトレース情報を提供します。
- アプリのリソースまたは API 呼び出しが原因でメモリのワーキング セットが大きすぎる原因を特定するのに役立ちます。
umdprovider.h ヘッダーの次の関数、列挙体、および構造体を使用して、UMD 内のイベントをログに記録します。
- UMDEtwLogMapAllocation 関数
- UMDEtwLogUnmapAllocation 関数
- UMDEtwRegister 関数
- UMDEtwUnregister 関数
- UMDETW_ALLOCATION_SEMANTIC 列挙体
- UMDETW_ALLOCATION_USAGE 構造体
umdetw.h ヘッダーも参照してください。
ハードウェア認定の要件
ハードウェア デバイスがこの機能を実装するときに満たす必要がある要件については、Device.Graphics ¦ UMDLogging に関する WHLK ドキュメントを参照してください。
Windows 8 で追加された機能の確認については、「WDDM 1.2 の機能」を参照してください。