タスクマネージャに表示されるメモリ使用量

以前 id:Kazzz さんも書かれてましたが,確かにこれはもっともな話だと思います.

それほど神経質になる必要は無いのかもしれません、がしかしアプリケーションを実際に使うユーザである程度PCの知識があるユーザは、タスクマネジャで見た時に保持するメモリが多いと見るとこれを非常に嫌悪する傾向にあります。従ってワーキングセットを多く設定する場合はきちんとその理由を説明できないと問題になることがあるので疎かにはできないのです。

問題は,「ある程度PCの知識はあるが Windowsの仮想メモリ機構に関する十分な知識はないユーザ(及び開発者)」が,タスクマネージャに表示される「メモリ使用量」に過剰反応してしまうという事案にどう対処するか,というところにあります.
1つの無難な方法としては,デフォルトの動作は Conservative にし,Progressive な動作は上級ユーザを対象に Opt-in を徹底するというものでしょう.
いわゆる「ある程度PCの知識がある」ユーザーさんの多くは,「気に入らないことを勝手にされる」のを嫌い,「カスタマイズで快適になる(あるいは,快適になったような気がする)」ことに満足感を得るので,こちらの方がかえって満足度が上がるのではないかと思います.
さて,タスクマネージャに表示される「メモリ使用量」を小さく保つにはどうするかですが,ファイルをメモリマップするときは一度に多くのメモリ空間にアクセスしないとか,データや計算結果をメモリ上にキャッシュする代わりにこまめにディスク上に書き出すとか,定期的に SetProcessWorkingSetSize API を呼び出すとか,機能の一部を別プロセスやサービスに分離するといった方法が考えられるでしょう.
このようなアプローチはパフォーマンス上好ましくない側面もありますが,かといってユーザ(及び開発者)全員に Mark Russinovich 氏並の知識を持て,というのもまあ無理があるので,利用者の満足度を上げるという意味では仕方がない側面もあります.



一方,もう少し現実的な解として,タスクマネージャの表示を弄るという手があります.これについては私も以前から Microsoft の方にちょくちょく「タスクマネージャの『メモリ消費量』という記述は何とかならいですかねぇ?」と愚痴ったりしていましたが,Windows Vista build 5472 でふと見てみると,タスクマネージャのデフォルト表示が,以前の「Working Set」ではなくて,そのサブセットである「Private Working Set」に代わっていました.
すばらしい.
多分変更があったのはここ最近のビルドではないかと思います.


Windows Vista build 5472 デフォルト表示


設定を変更し「Working Set」も表示させたもの


「Private Working Set」を小さく見せるにはどうするか,はまあ分かる人なら分かるでしょうから,省略でいいですかね? Process Explorer Version 10 以降では,これらのワーキングセットの細目を表示してくれますので,Vista ベータ版をインストールするまでもなく実験は可能です.
さて,Vista がこの仕様のままリリースされるかどうかは分かりませんが,「ある程度PCの知識があるユーザ」の目に晒されるアプリケーション開発者の方は,Windows Vistaで次の点がどうなるか注目しておきましょう.

  • ウィンドウ最小化時のワーキングセット縮小 → 廃止または限定化?
  • タスクマネージャのデフォルト表示 → 「Private Working Set」へ変更?

以下関連話題.