第五十八章 使用 ^BLKCOL
监视块冲突
当一个进程被迫等待访问一个块时,就会发生块冲突。过多的块冲突会降低应用程序性能。
Using ^BLKCOL
在 IRIS®
数据平台中,^BLKCOL
实用程序对指定时间段(默认为 10
秒)内的块碰撞进行采样,记录这段时间内指定时间间隔(默认为 10
毫秒)内的最新块碰撞。对于每个记录的冲突,^BLKCOL
不仅标识块,还标识涉及的全局及其在块中的第一个和最后一个引用,以及创建试图访问块的进程的例程和行。
注意:irisstat -D
选项,如本指南附录“使用 irisstat
实用程序监视 IRIS
”中的使用选项运行 irisstat
中所述,也对块冲突进行采样,但仅识别涉及的块。
irisstat -D
的输出包含在 ^SystemPerformance
实用程序生成的报告中,如本指南的使用 ^SystemPerformance
监控性能一章所述。
运行 ^BLKCOL
时,可以指定以下内容:
- 采样周期的长度(以秒为单位)
- 采样之间的间隔(以毫秒为单位)
- 是否收集例程详细信息(默认为是)
- 是否将输出格式化为:
- 具有最高冲突计数的块列表(默认)
- 涉及的所有块的列表
in collisions
- 来自检测到的所有块碰撞的逗号分隔值,按块编号和例程排序和计数
- 来自所有检测到的块碰撞的逗号分隔值,未排序(
RAW
) - 例程中的碰撞热点列表
- 要显示的块数(如果适用)
- 是否将输出发送到文件
^BLKCOL Ouputend
输出到文件
^BLKCOL
实用程序的使用显示在以下示例终端会话中:
%SYS>do ^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:\InterSystems\iris\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:\InterSystems\iris\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:\InterSystems\iris\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:\InterSystems\iris\mgr\user\
^acctest(9124," 173") - ^acctest(9124," 1743") (Data)
5 at ^AccessTest+164(4)
3 at ^AccessTest+170(4)
971 (7) in c:\InterSystems\iris\mgr\user\
^acctest(484," 3927") - ^acctest(484," 3938") (Data)
5 at ^AccessTest+170(4)
2 at ^AccessTest+164(4)
1137 (7) in c:\InterSystems\iris\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:\InterSystems\iris\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:\InterSystems\iris\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:\InterSystems\iris\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:\InterSystems\iris\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
标签:iris,InterSystems,AccessTest,第五十八章,user,监视,BLKCOL,acctest
From: https://www.cnblogs.com/yaoxin521123/p/17069658.html