Tclスクリプトの特定の処理のメモリ使用量を調べたくて、Win32 APIを使う方法とか、WMIを使う方法とか、色々調べていたのですが、TWAPIパッケージのget_process_memory_infoメソッドが一番簡単でした。
The Tcl Windows API (TWAPI)
TWAPIはいくつかのWindows APIやWindowsに依存する処理を集めたパッケージです。
Win32 API関数を使いたい場合はサポートしていないものもあるので、Ffidlパッケージで悪戦苦闘しながら実装していましたが、Windows Management Instrumentation(WMI)を使う場合や、メモリ使用量の取得のような汎用的な情報取得に便利な機能が詰まっているようです。
メモリ使用量の取得
get_process_memory_infoメソッドでメモリ使用量に関する情報を取得できます。
package require twapi
array set process_memory_info [::twapi::get_process_memory_info]
parray process_memory_info
これを実行すると以下のようになります。
process_memory_info(-pagefaults) = 8895
process_memory_info(-pagefilebytes) = 20496384
process_memory_info(-pagefilebytespeak) = 20496384
process_memory_info(-poolnonpagedbytes) = 20496
process_memory_info(-poolnonpagedbytespeak) = 20496
process_memory_info(-poolpagedbytes) = 261832
process_memory_info(-poolpagedbytespeak) = 262008
process_memory_info(-privatebytes) = 20496384
process_memory_info(-workingset) = 34123776
process_memory_info(-workingsetpeak) = 34127872
get_process_memory_info
は{key value key value ...}
というリストで結果を返します。
リストから特定のkeyのvalueを取得する方法はいくつかありますが、ここでは一覧表示するのにparray
メソッドが簡便だったので、いったん配列にしました。