NSD - プロセスヒープの確認

2009年06月04日 00:19

前回のNSD関連のトピック では共有メモリの使用量の確認の話をしましたが、共有メモリの話が分かると、プロセスヒープの確認方法も案外簡単に分かるようになります。

各プロセス毎のプロセスヒープはNSDでは以下のように出力されます。

プロセスヒープメモリ使用量の出力の例 (1)
Process Heap Memory:
TYPE : Count SIZE ALLOC FREE FRAG OVERHEAD %used %free
S-DPOOL: 6 3145728 221436 2918148 0 9428 7% 92%
POOL : 1 17408 13538 972 0 2906 77% 5%
Overall: 6 3145728 220464 2919120 0 12334 7% 92%


新しいバージョンでは以下のようなフォーマットです。

プロセスヒープメモリ使用量の出力の例 (2)
<@@ ------ Notes Memory -> Usage Summary -> Process Heap Memory Stats :: [ nlnotes:  1318] (Time 14:47:30) ------ @@>

TYPE : Count SIZE ALLOC FREE FRAG OVERHEAD %used %free
Static-DPOOL: 54 28311552 26130380 2043076 0 211900 92% 7%
VPOOL : 117 2477436 649097 1452212 0 379807 26% 58%
POOL : 696 15042508 10526554 4107456 0 427970 69% 27%
Overall : 54 28311552 20570712 7602744 0 1019677 72% 26%


各列の意味も前回と同じです。

Count: 使用されているメモリブロック数
Size: 確保されている共有メモリのサイズ
Alloc: 確保されている共有メモリのうち実際にDominoが内部的にアロケートしているもの
Free: 確保されている共有メモリのうち実際にDominoが内部的にアロケートしていないもの
%used: 使用率 (多少誤差はあると思いますが、Alloc/Size * 100 のような値になっているはずです)
%free: 未使用率 (Free/Size * 100 )


よく混同されるのですが、プロセスヒープとスタック使用量を混同しないようにしてください。
プロセスヒープと言うのは「プロセス内のスレッド全てが利用できるメモリ領域」ですよね。
なのでここには各スレッドが消費しているスタックサイズは反映されませんし、共有メモリのサイズも反映されません。 「該当プロセスが消費しているメモリの大きさ」とは少しずれてしまいますよね。

さらに言うと、よくWindowsのタスクマネージャーで表示されるメモリ使用量と比較して疑問を持ってしまう人もいますが、これは共有メモリなども含んでしまうので、この値とは大きく異なる値になっているはずです。

ここはどのくらいの大きさだと大きいと判断するのか・・・・と言う事は難しいので一概には言えません。
たとえばAIXはOSの制限でプロセスヒープは512MBが上限なので、その辺を参考にしたりする事はありますが・・・ (AIXに詳しい方はこの数字もメモリモデルによって複数パターンがあるので反論があると思いますが。。。)





コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/163-ef28db9e
    この記事へのトラックバック


    最新記事