読者です 読者をやめる 読者になる 読者になる

それはそれとしてモニタ系ツールは面白い

Vista .NET

さてさて,「タスクマネージャの数字に一喜一憂しても多分意味ないよ」と書き続けている当日記ですが,それはそれとして私自身はといえば,タスクマネージャの数字ぼけーっと眺めるのが結構好きだったりします.Windows Vista からはリソースモニタという新しいモニタツールも入って良い感じですね.
余談ですが,一見非公開 API やドライバを使わないと実現が無理そうな Vista のリソースモニタですが,実は実は,ほとんどの部分が公開 API によるユーザモードの実装で可能なようです.リソースモニタが数字の取得に Event Traces for Windows (ETW) によるリアルタイムカーネルロギングを使っているところまでは突き止めていて,実際私が作ってみた C# 版のクローンでは,同じ手法によってリソースモニタとほぼ同じ情報を得るところまではできています.もっとも,いくつか未解決の問題があるので,もしかしたら非公開構造体やドライバを使っている部分もあるかもしれませんけど.まあ詳しくはまた時間ができたら日記なりイベントで紹介する方向で.
閑話休題.
昨日の遅延書き込みの話*1は,調べている私にとっても新鮮な話でした.てなわけで,どんなときにどれぐらい遅延書き込みデータが溜まっているのか,ちらっと横目で見ながら作業できると面白いかなーと,今日は簡単にモニタ用のツールを作って一日作業してみました.作ってみたのは,パフォーマンスカウンタの『Memory - Modified Page List Bytes』を 3 秒ごとに表示するというツールです.
ただし注意としては,この数字は遅延書き込みデータそのものではなくて,常にそれより大きな数字になります.つまり『CcTotalDirtyPages』は『Modified Page List Bytes』の一部にあたります.キャッシュマネージャ管理外のダーティーページには,例えばメモリマップドファイルのダーティーページが挙げられます.まあそんな『Modified Page List Bytes』でも,差分をみればだいたい雰囲気が分かるかなと.
んで,折角なので PowerGadgets を使ってみました.実は 1 年ぐらい前にクリエイターライセンスを買ってたりします.PowerGadgets は動かすのにもライセンスが必要なので,まさに俺専用という感じですごめんなさい.

しかし PowerGadgets,私みたいな絵心のない人間にとってはかなりありがたいライブラリなのですが,どれぐらいの人がライセンス持ってるんでしょうか? 困ったことに,こういうのは一人で「うひょー,超便利ー」と使っていてもあんまり面白くないんですよねぇ.
とりあえず以下はファイルコピー中のスクリーンショットVista のサイドバーエリアに見えるのは同じく PowerGadgets で作ったガジェット版のグラフです.今日はこのガジェットのために久しぶりにサイドバーを復活させました.

数字の単位は MB.コピー開始時点での数字が 38 MB ぐらいだったので,ファイルコピー中に 244 MB ぐらい増加していることがわかります.カーネルデバッガで調べた CcDirtyPageThreshold が 256 MB だったので,この増加量はまあ想定の範囲内ですね.そして予想通り,ファイルコピーダイアログが消えてから,徐々に平時の数字へ戻っていきました.って,動画で撮ればよかったのか.まあいいや.
そもそも ReadyBoostMonitor のときのように,WPF で作れば配布できたわけでまさにごめんなさい.ビジュアル系のデザインはどうも苦手なので,切実な意味で WPF による分業には本当に期待しています.データの取得系なら書きますので誰かかっこいいグラフ化やっていただけないでしょーか?
あと,パフォーマンスカウンタのモニタツールで良いのをご存じでしたら教えていただけると幸いです.Windows 標準のあれはやっぱりいまいちでしょうと.