Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

^BLKCOL を使用したブロック衝突の監視

ブロック衝突は、プロセスがブロックへのアクセスを待機させられる際に発生します。過度のブロック衝突は、アプリケーションのパフォーマンスを低下させます。

^BLKCOL の使用法

^BLKCOL ユーティリティは、指定された期間 (既定では 10 秒間) ブロック衝突をサンプル化し、この間指定された間隔 (既定では 10 ミリ秒) 内で最新のブロック衝突を記録します。記録された各衝突について、^BLKCOL はブロックだけでなく、ブロックにアクセスしようとするプロセスを作成したルーチンと行、ならびにブロック内の関連するグローバルおよびその最初と最後のリファレンスを識別します。

Note:

cstat -D オプション (このドキュメントの付録 “cstat ユーティリティを使用した Caché の監視” の "オプションを使用した cstat の実行" を参照) もブロック衝突をサンプル化しますが、関連するブロックのみを識別します。

cstat -D の出力は、^pButtons ユーティリティで生成されたレポートに含まれます (このドキュメントの "^pButtons を使用したパフォーマンスの監視" の章を参照)。

^BLKCOL を実行する際、以下を指定できます。

  • サンプリング期間の長さ (秒)

  • サンプル間の間隔 (ミリ秒)

  • ルーチンの詳細を収集するかどうか (既定は [はい] です)

  • 出力を以下としてフォーマットするかどうか

    • 最大衝突数のブロックのリスト (既定)

    • 衝突に関連するすべてのブロックのリスト

    • ブロック番号およびルーチンによって検出、ソート、およびカウントされているすべてのブロック衝突のコンマで区切られた値

    • 検出され、ソートされていない (未処理の) すべてのブロック衝突のコンマで区切られた値

    • ルーチンの衝突のホット・スポットのリスト

  • 表示するブロックの数 (該当する場合)

  • 出力をファイルに送信するかどうか

^BLKCOL の出力

^BLKCOL ユーティリティの使用については、以下のサンプル・ターミナル・セッションで示されています。

%SYS>d ^BLKCOL

Block Collision Analysis

How many seconds should we sample: <10>
How long to wait (ms) between each sample: <10>
Collect routine details? <Y>
Format for 'T'op counts, 'D'isplay all, 'S'orted CSV, 'H'ot spot, or 'R'aw CSV: <T>
Number of blocks to display: <10>
Output to file: <0>

Sampling ... (any key to interrupt)


625 block collisions in 735 samples.

Block # (count) - Global refs (first - last in block) - Routine refs (SFN)

767       (395) in c:\mycache\mgr\user\
  ^acctest - ^acctest(10220," 167") (T/BPtr)
    325 at ^AccessTest+156(4)
    25 at ^AccessTest+121(4)
    24 at ^AccessTest+92(4)
    8 at ^AccessTest+109(4)
    8 at ^AccessTest+127(4)
    4 at ^AccessTest+170(4)
    1 at ^AccessTest+163(4)

3890      (11)  in c:\mycache\mgr\user\
  ^acctest(2552,"  371") - ^acctest(2552,"  38") (Data)
    6 at ^AccessTest+164(4)
    3 at ^AccessTest+163(4)
    1 at ^AccessTest+134(4)
    1 at ^AccessTest+156(4)

15572     (9)   in c:\mycache\mgr\user\
  ^acctest(6980," 4795") - ^acctest(6988," 3259") (Data)
    7 at ^AccessTest+134(4)
    1 at ^AccessTest+164(4)
    1 at ^AccessTest+170(4)

15818     (8)   in c:\mycache\mgr\user\
  ^acctest(9124," 173") - ^acctest(9124," 1743") (Data)
    5 at ^AccessTest+164(4)
    3 at ^AccessTest+170(4)

971       (7)   in c:\mycache\mgr\user\
  ^acctest(484," 3927") - ^acctest(484," 3938") (Data)
    5 at ^AccessTest+170(4)
    2 at ^AccessTest+164(4)

1137      (7)   in c:\mycache\mgr\user\
  ^acctest(756," 4063") - ^acctest(756," 4073") (Data)
    3 at ^AccessTest+109(4)
    2 at ^AccessTest+134(4)
    1 at ^AccessTest+156(4)
    1 at ^AccessTest+163(4)

2999      (7)   in c:\mycache\mgr\user\
  ^acctest(2092,"  666") - ^acctest(2092,"  674") (Data)
    3 at ^AccessTest+170(4)
    1 at ^AccessTest+109(4)
    1 at ^AccessTest+121(4)
    1 at ^AccessTest+134(4)
    1 at ^AccessTest+164(4)

6173      (7)   in c:\mycache\mgr\user\
  ^acctest(3684,"  528") - ^acctest(3684,"  536") (Data)
    3 at ^AccessTest+163(4)
    1 at ^AccessTest+109(4)
    1 at ^AccessTest+156(4)
    1 at ^AccessTest+164(4)
    1 at ^AccessTest+170(4)

14617     (7)   in c:\mycache\mgr\user\
  ^acctest(9688,"   18") - ^acctest(9688,"   26") (Data)
    4 at ^AccessTest+170(4)
    2 at ^AccessTest+164(4)
    1 at ^AccessTest+134(4)

15282     (7)   in c:\mycache\mgr\user\
  ^acctest(8700," 4889") - ^acctest(8760," 1402") (Data)
    4 at ^AccessTest+170(4)
    3 at ^AccessTest+164(4)
%SYS>d ^BLKCOL

Block Collision Analysis

How many seconds should we sample: <10>
How long to wait (ms) between each sample: <10>
Collect routine details? <Y>
Format for 'T'op counts, 'D'isplay all, 'S'orted CSV, 'H'ot spot, or 'R'aw CSV: <T> H
Number of blocks to display: <10>
Output to file: <0>

Sampling ... (any key to interrupt)


571 block collisions in 768 samples.

 
Sorted by routine/line that waits for block ownership
_____________________________________________________

(571) AccessTest
    (324) +156^AccessTest :  s @G@($J,node)=$$getdata($E(Str,1,$r(1000)))  ;SMLXXX+, AFH
    (54) +164^AccessTest :  k @G@($J,node)
    (43) +134^AccessTest :  .  k @G@($J,node)
    (31) +92^AccessTest :  .  .  k @G@($j)
    (28) +109^AccessTest :  .  s x=$O(@G@($J,x))

Sorted by routine that owns the block
_____________________________________

(472) AccessTest
    (472) +AccessTest

FeedbackOpens in a new tab