積読日記
Mon, 19 Jamboree 2009 編集
tDiary 1524日目
■ [game] SaGa 2 秘宝伝説 (仮)
サガシリーズ 20 周年記念で秘宝伝説が DS にてリメイクされるとの由.
■ [programming] GPUView で遊ぶ 1 - インストール -
Windows SDK for Windows 7 beta についている GPUView で少し遊んでみた. まずはインストールから.- Windows SDK for Windows 7 beta を入れる.
- %SDK のインストールパス%\Bin\xperf_xxx.msi (xxx は x86, x64 など自分の環境に適したものを) を実行し, インストーラの指示に従う.
- インストールが完了すると, 標準では %ProgramFiles%\Microsoft Windows Performance Toolkit に一式がインストールされる. 目的の GPUView はその下の GPUView.xxx にインストールされている.
■ [programming] GPUView で遊ぶ 2 - プロファイルの開始と終了 -
GPUView.exe は, 収集したログ (*.etl) を可視化するためのフロントエンドである. ログの収集は xperf.exe に適切なパラメータを与え, 測定対象を動かすことで行う. 幸いなことに, 便利なバッチファイル (log.cmd) がついている. log.cmd は xperf.exe の状態を把握しており, 最初の実行でプロファイルを開始し, 次の実行でプロファイルを終了する. 開始と終了の間に測定対象 (3D ゲームの実行など) を行えばよい. log.cmd の実行には管理者権限が必要なので, 管理者権限つきのコマンドプロンプトを開く. log.cmd を実行し, プロファイルの開始が成功するとC:\Program Files\Microsoft Windows Performance Toolkit\GPUView.x86>log.cmd C:\Program Files\Microsoft Windows Performance Toolkit\xperf.exe New Profile Interval = 1221 [0.1221ms]と出力される. その後に測定対象を実行し, 必要な操作を終えてから再び, log.cmd を実行すると,
C:\Program Files\Microsoft Windows Performance Toolkit\GPUView.x86>log.cmd C:\Program Files\Microsoft Windows Performance Toolkit\xperf.exe All loggers stopped, starting merge... Merged Etl: Merged.etl Restoring Performance Counter Interval New Profile Interval = 10000 [1.0000ms]と表示され, 測定結果が Merged.etl というファイルに出力されたことがわかる.
メモリが足りない場合には,
C:\Program Files\Microsoft Windows Performance Toolkit\GPUView.x86>log.cmd C:\Program Files\Microsoft Windows Performance Toolkit\xperf.exe New Profile Interval = 1221 [0.1221ms] Xperf: error: OLogger: このコマンドを実行するのに十分な記憶域がありません。 (0x8).残念な感じである.
■ [programming] GPUView で遊ぶ 3 - ログを調べる -
ここで初めて GPUView.exe を起動する. 開くファイルを聞かれるので先ほど作成された Merged.etl を選択する. *.etl ファイルの大きさに正比例して起動に時間がかかりメモリを沢山くうのでじっと待つ. 起動すると,のようなウィンドウが現れる. この状態は, 見やすいようにメニューの View → Zoom → ZoomIn (a キーの押下でもよい) で適当に拡大してある.
さて, このウィンドウの見方だが, GPU Hardware Queue と書かれた行が, GPU に積まれた仕事の queue を表しており, 何段かある箱の一番下の段が実行中の仕事である. この例では最大で仕事が三つ (左から二番目の青い縦線のすぐ右の黒い四角) 積まれている. 下側の dwm.exe と graphedt.exe の行は CPU の仕事の queue を表している. CPU 側と GPU 側で同じ色 (黒い箱と赤いペケの入った箱と黄土色の箱) は同じ仕事であることを表す. dwm が黄土色の仕事を GPU に積んで, GPU がそれを処理中に graphedt が赤いペケの仕事を積んだので GPU 側の黄土色の箱の上に赤いペケの箱が増えて, 黄土色の仕事が終わったので赤いペケの実行に移り, といった具合である.
赤いペケは非常に重要で, GPU での Present 処理 (IDirect3DSwapChain9::Present など) を意味する. この様子から, 自分のアプリが GPU に与える仕事のつまり具合を観察できる.
Options では有用な情報を表示できる.
- Toggle Vsync: Vsync の On/Off を切り替えられる. この絵では既に有効にしてあり, 青い縦線が Vsync である.
- Toggle Memory Charts: メモリ使用量のグラフが表示される.
- Toggle Present Charts: FPS と Latency のグラフが表示される.
右側の GUID List: から GUID を選択すると, 左側の Event List: に対応するイベントが表示される. この絵は DXVA2 - VideoProcess Blt (2600) を選んだところである. Select All などで選択し, Mark で Marked Event: にイベントを追加すると, GPUView のメインウィンドウにそのイベントの発行タイミングが反映される. 自分のアプリでの特定の API 呼び出しを調べたいときに役に立つ.
■ [programming] GPUView で遊ぶ 4 - まとめ -
前掲の資料を参考に少し遊んでわかった (つもりになった) ことを雑多に書いた. すぐにわかった範囲での GPUView の長所は,- CPU と GPU の間の仕事を queue として可視化する
- queue の推移が時系列で追える
- 特定のイベントの発生時期を時系列で追える
投稿日時 : 2009年01月20日 03:28
Before...
□ SpoonyProodaycyusd [what is the safe viagra dosage http://buyciales.eklablog.n..]
□ SpoonyProodayblrgy [viagra protester http://viagra.id.st/#yqduf - viagra gener..]
□ SpoonyProodayinuof [der kleine nils viagra http://commander-kamagra-en-ligne-w..]