NSD: Top 10 Shared Memory Block Usage

2009年06月16日 00:18

以前は、NSDから共有メモリの利用量を確認する話をしました。

NSD - 共有メモリの利用量を確認する

ここで共有メモリの利用量が多い事が分かったときにNSDからもう少し分析を行うことが出来ます。
「Top 10 Shared Memory Block Usage」 と言う項目を探してください。


#------ Top 10 Shared Memory Block Usage:
BY SIZE | BY HANDLE COUNT
Type TotalSize Handles | Type Handles TotalSize
---------------------------- | ----------------------------
0x82cd 680972288 173 | 0x841c 572 2937390
0x82cc 12622080 173 | 0x841b 553 22430
0x834a 5767168 6 | 0xab04 377 14640
0x8252 4194304 4 | 0x8405 321 2172928
0x841c 2937390 572 | 0x8439 265 318344
0x8405 2172928 321 | 0x8604 255 6516
0x826c 1504338 23 | 0x8001 249 337146
0x824b 1497232 122 | 0x82cc 173 12622080
0x8a03 1355490 169 | 0x82cd 173 680972288
0x8433 1048576 1 | 0x8a03 169 1355490
-----------------------------------------------------------


最近のバージョンでは以下のように、「16bit Handles」と「Memhandles」に分けて表示されます。
これはメモリの仕様が変わったわけではなくNSDがより表示を詳細に表示するようになっただけです。
それぞれのハンドルの種類がどういう意味があるかについて気になる方もいると思いますが、ここで共有メモリを利用する場合にもNotes/Dominoでは2種類のハンドルがある、とだけ理解しておいてください。

詳細に理解するにはドミノのメモリブロックを全て理解する必要がありますが、残念ながらメモリブロックの詳細などについては公開されていないため、ここではメモリの利用方法をあらわす一意の識別子であるとご理解下さい。

<@@ ------ Notes Memory -> Usage Summary -> Top 10 Memory Block Usage :: (Shared) (Time 14:47:29) ------ @@>


<@@ ------ Notes Memory -> Usage Summary -> Top 10 Memory Block Usage -> 16 bit Handles By Size :: (Shared) (Time 14:47:29) ------ @@>

Type TotalSize Count Typename
-----------------------------------------------------------
0x880d 1569696 24 BLK_CL_OPENED_NOTE
0x0a0a 1371296 42 ???
0x824b 1063634 29 BLK_OPENED_NOTE
0x8150 457828 7 BLK_SEMWAITERPOOL
0x8a01 392424 6 BLK_NETPOOL
0x8405 312618 175 BLK_IDTABLE
0x8141 261616 4 BLK_STATICPOOL
0x9094 182428 342 BLK_NEM_BITMAP_COLORTABLE
0x8001 160806 114 ???
0x826c 130808 2 BLK_EXTMGR

<@@ ------ Notes Memory -> Usage Summary -> Top 10 Memory Block Usage -> Memhandles By Size :: (Shared) (Time 14:47:29) ------ @@>

Type TotalSize Count Typename
-----------------------------------------------------------
0x82cd 7872512 2 BLK_UBMBUFFER
0x8252 2097152 2 BLK_NSF_POOL
0x826d 1048576 1 BLK_NSF_DIRMANPOOL
0x8311 1048576 1 BLK_NIF_POOL
0x8a08 1048576 1 BLK_SESSION_POOL
0x8462 521612 221 BLK_CESCTX
0x938d 262168 1 BLK_SHARED_UNK_HASH
0x834a 262144 1 BLK_GB_CACHE
0x82cc 145920 2 BLK_UBMBCB
0x8a05 110000 1 BLK_NET_SESSION_TABLE



 フォーマットはバージョンによって色々ありますが、それぞれ列は以下のように理解します。

Type: メモリブロックの種類をあらわす16進の数値
TypeName: 上のタイプに付けられている名前
TotalSize: 実際にアロケートされているサイズ(バイト)
Count: 使用されている数

共有メモリではいくつか特徴的なことがあるのですが、まず上のTypeに当てられている数を見ると全て0x8xxxのように0x8から始まっています。
 これは0x8が共有メモリをあらわすためで、実際のBlock Typeは0x02cd となります。このへんは豆知識で、知っていても知らなくてもどうにかなる話ではあるのですが。。

次にDominoサーバーで取得したNSDでは多くの場合、BLK_UBMBUFFER が一番大きな値を示していると思いますが、これがいわゆるバッファープールのサイズとほぼ等しくなります。
 バッファープールの大きさと共有メモリの大きさがたまに混同されてしまう事がありますが、結局共有メモリの寄与で一番大きなものは、BLK_UBMBUFFER であることがこのことからも分かるのではないでしょうか。
 通常500MBを超えるようなブロックは注意しないといけないのですが、このブロックはバッファプールの設定に依存するので500MB-800MBの間を推移していればよいのではないかと思います。(バッファプール1GB 程度に達している場合はやや多目ですので設定を変えるように促すとは思いますが。)

ハンドル数に関してはいくつが多いとは一概に言えないのですが、通常はこのセクションは共有メモリの利用量が大きい、などの症状がすでに共有メモリの利用量のセクションから確認できているために、この辺の問題を疑ってから見ることが多いのでどのブロックの寄与がもっとも大きいかを確認していれば分かるのではないかと思います。 Databaseの処理が多いときは、BLK_VARRAYやBLK_VARRAY_CHUNKの数も多めに出るので、BLK_UBMBUFFER を含めたこの3つのブロックが多いときはまずは無視してみます。

この数が多いときはメモリーリークなどの問題も疑わないといけないので、ややこしいですし、ブロックとかハンドルの詳細が見えないのでやや分かりにくい点もあると思うのですが、このようにして「共有メモリの利用量が多い」と言う問題が分類していく事が可能である事はわかっていただけたのではないかと思います。


コメント

    コメントの投稿

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

    トラックバック

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


    最新記事