ZSHow

ZSHOWコマンドは、現在のGT.MM環境に関する情報を表示します。

ZSHOWコマンドのフォーマットは:

ZSH[OW][:tvexpr][expr[:glvn][,...]]

ZSHOWのインフォメーション・コード

ZSHOWの引数は情報の1つ以上のタイプを選択するコードを含む式です。

A:AはAutorelinkを表し、MUPIP RCTLDUMPと同じフォーマットで出力を提供しますが、コマンドを発行するプロセスによってリンクされたルーチンに制限されています。ZSHOW "*" には、情報の典型的な量がその価値に対して良好なリターンを提供しないとの期待のため、ZSHOW "A" は含まれません。もしエラー処理やINTRPTルーチンがこの情報をダンプしたい場合は、ZSHOW "*" を実行する前に ZSHOW "A"をローカル変数に明示的に問い合わせてください。

B:アクティブなZBREAKのブレークポイントを表示

C:ロードされた外部呼び出しパッケージとそのルーチンのリストを提供します。ZSHOW "C" は、アクセス可能であるがプロセスによってアクセスされていないパッケージを報告しません。

D:デバイス情報を表示

G:プロセスの起動後のグローバル変数とデータベースファイルにアクセスするためのアクセス統計を表示

I:すべての特殊変数の現在値を表示

L:プロセスが保持するGT.MのロックとZALLOCATEを表示

R:スタック上の各ルーチンのMソースコードの MurmurHash3 アルゴリズムに基づくGT.M呼び出しスタックとハッシュを表示します。

S:GT.Mの呼び出しスタックを表示

V:ローカルとエイリアスの変数を表示

* : ZSHOW情報の可能性のあるすべてのタイプを表示

コードは大文字または小文字です。無効なコードは実行時エラーを生成します。1つの ZSHOW 引数の中に同じコードの複数の出現は、対応する情報の1つの出力インスタンスのみ生成します。引数の中のコードの最初に出現する順序は、対応する出力インスタンスの順序を決定します。

もしあなたが、ローカル変数を転送先に使用していて、 "V" より前にある別のコードを配置している場合、コードより前の結果もまた "V" コードの結果として現れる効果があります。

ワイルドカード(*)がリスト内にある場合、ZSHOW はデフォルトの順序(ZSHOW "IVBDLGR")を使用します。

  • 固有の特殊変数

  • ローカル変数

  • ZBREAKの情報

  • デバイスの情報

  • LOCK と ZALLOCATE の情報

  • グローバル変数とデータベースファイルのアクセス統計情報

  • GT.Mの呼び出しスタックとスタック上の各ルーチンのMソースコードのMD5チェックサム。

  • GT.Mスタック

もし G がリストで発生した場合、統計情報は、それぞれのアイテムがコロンに続くそのニーモニックとカウンタを持つカンマ区切りのリストで、次の順序で表示されます。GT.MはDECIMALのカウンタを維持します。各カウンタは、8バイトあります(2**64まで高く得ることが可能)。もしこれらのカウンタが、現在のGT.Mの数値表現の精度の閾値値である18進数( 2**59と2**60の間どこか )を超えている場合、GT.Mの中で算術式の中でそれらを使用することは、精度の損失を生じさせます。ニーモニックは、以下のとおりです:

SET : # of SET operations (TP and non-TP) 
KIL : # of KILl operations (kill as well as zwithdraw, TP and non-TP) 
GET : # of GET operations (TP and non-TP) 
CAT : total of critical section acquisitions successes
CFE : total attempts in CFT caused by epochs
CFS : sum of squares of blocked critical section acquisitions
CFT : total of blocked critical section acquisitions
CQS : sum of squares of critical section acquisition queued sleeps
CQT : total of critical section acquisition queued sleeps
CYS : sum of squares of critical section acquisition processor yields
CYT : total of critical section acquisition processor yields
DTA : # of DaTA operations (TP and non-TP) 
ORD : # of $ORDer() operations (TP and non-TP). The count of $Order(xxx,1) operations are reported under this item.
ZPR : # of $ZPRevious() (reverse order) operations (TP and non-TP). The count of $Order(xxx,-1) operations are reported under this item.
QRY : # of $QueRY() operations (TP and non-TP) 
LKS : # of LocK calls (mapped to this db) that Succeeded 
LKF : # of LocK calls (mapped to this db) that Failed 
CTN : Current Transaction Number of the database for the last committed read-write transaction (TP and non-TP) 
DRD : # of Disk ReaDs from the database file (TP and non-TP, committed and rolled-back).This does not include reads that are satisfied by buffered globals for databases that use the BG (Buffered Global) access method. GT.M always reports 0 for databases that use the MM (memory-mapped) access method as this has no real meaning in that mode.
DWT : # of Disk WriTes to the database file (TP and non-TP, committed and rolled-back). This does not include writes that are satisfied by buffered globals for databases that use the BG (Buffered Global) access method. GT.M always reports 0 for databases that use the MM (memory-mapped) access method as this has no real meaning in that mode.
NTW : # of Non-TP committed Transactions that were read-Write on this database 
NTR : # of Non-TP committed Transactions that were Read-only on this database 
NBW : # of Non-TP committed transaction induced Block Writes on this database 
NBR : # of Non-TP committed transaction induced Block Reads on this database 
NR0 : # of Non-TP transaction Restarts at try 0 
NR1 : # of Non-TP transaction Restarts at try 1 
NR2 : # of Non-TP transaction Restarts at try 2 
NR3 : # of Non-TP transaction Restarts at try 3 
TTW : # of TP committed Transactions that were read-Write on this database 
TTR : # of TP committed Transactions that were Read-only on this database 
TRB : # of TP read-only or read-write transactions that got Rolled Back (incremental rollbacks are not counted) 
TBW : # of TP transaction induced Block Writes on this database 
TBR : # of TP transaction induced Block Reads on this database 
TR0 : # of TP transaction Restarts at try 0 (counted for all regions participating in restarting TP transaction)
TR1 : # of TP transaction Restarts at try 1 (counted for all regions participating in restarting TP transaction)
TR2 : # of TP transaction Restarts at try 2 (counted for all regions participating in restarting TP transaction)
TR3 : # of TP transaction Restarts at try 3 (counted for all regions participating in restarting TP transaction)
TR4 : # of TP transaction Restarts at try 4 and above (restart counted for all regions participating in restarting TP transaction) 
TC0 : # of TP transaction Conflicts at try 0 (counted only for that region which caused the TP transaction restart)
TC1 : # of TP transaction Conflicts at try 1 (counted only for that region which caused the TP transaction restart)
TC2 : # of TP transaction Conflicts at try 2 (counted only for that region which caused the TP transaction restart)
TC3 : # of TP transaction Conflicts at try 3 (counted only for that region which caused the TP transaction restart)
TC4 : # of TP transaction Conflicts at try 4 and above (counted only for that region which caused the TP transaction restart)
DFL : # of times a process flushes the entire set of dirty database global buffers in shared memory to disk.
DFS : # of times a process does an fsync of the database file. For example: a) after writing an epoch journal record, b) as part of database file extension c) during database rundown d) as part of mupip reorg -truncate etc.
JFL : # of times a process flushes all dirty journal buffers in shared memory to disk. For example: when switching journal files etc.
JFS : # of times a process does an fsync of the journal file. For example: when writing an epoch record, switching a journal file etc.
JBB : # of bytes written to the journal buffer in shared memory.
JFB : # of bytes written to the journal file on disk. For performance reasons, GT.M always aligns the beginning of these writes to file system block size boundaries. On Unix, JFB counts all bytes including those needed for alignment in order to reflect the actual IO load on the journal file. Since the bytes required to achieve alignment may have already been counted as part of the previous JFB, processes may write the same bytes more than once, causing the JFB counter to typically be higher than JBB.
JFW : # of times a process invokes a write system call for a journal file.
JRL : # of logical journal records (e.g. SET, KILL etc.)
JRP : # of PBLK and AIMG journal records written to the journal file (these records are seen only in a -detail journal extract)
JRE : # of regular EPOCH journal records written to the journal file (only seen in a -detail journal extract); these are written every time an epoch-interval boundary is crossed while processing updates
JRI : # of idle EPOCH journal records written to the journal file (only seen in a -detail journal extract); these are written when a burst of updates is followed by an idle period, around 5 seconds of no updates after the database flush timer has flushed all dirty global buffers to the database file on disk
JRO : # of all journal records other than logical, PBLK, AIMG and EPOCH records written to the journal file (for example, PINI, PFIN, and so on.)
JEX : # of times a process extends the journal file
DEX : # of times a process extends the database file
[NT]B[WR] mnemonics are satisfied by either disk access or, for databases that use the BG (buffered global) access method, global buffers in shared memory.
ZTR : # of ZTRIGGER command operations 

もしオペレーションがTPトランザクション内部で実行され、かつ、ロールバック、、の結果としてコミットされていない場合、または、明示的または暗黙的に再起動する場合は、GT.Mはまだそれをカウントします。

かつて存在していたがその後KILLされているグローバル上の同じ操作がカウントされている間、けっして存在していなかったグローバル上のKILL/ GET/ DATA/ QUERY/ ORDER/ ZPREVIOUS の操作はカウントされません。

それらがデータを持つグローバルを見つけるポイントにグローバルディレクトリのマップを処理するように、名前レベルのORDER/ ZPREVIOUS 操作(たとえば添字なし$ORDER(^a) )は、 領域にそれぞれの遷移のためのカウントをインクリメントします。

[注意] 注意

ZSHOW "G" のカンマで区切られた部分の使用は、アプリケーションコードの上位互換性を促進しながら、追加データを提供するために、GT.Mの将来のリリースに対応することができます。 FISはGT.Mの将来のバージョンで報告される統計情報の順序を変更する権利を留保するので、フィールドの位置に依存していたりまたは順序の代わりに、文字列から一部分を選ぶとき、アプリケーションプログラムは、(ニーモニック)の名前を使用する必要があります。

加えて、"G" もまた、グローバルディレクトリと領域名のすべてのデータベースファイルに集約された統計情報 (GLD:*,REG:* line) を含む行を表示します。もし2つ以上の領域(同じまたは異るグローバルディレクトリにある)が同じ物理データベースファイルにマップする場合、ZSHOW "G" は、これら2つの領域の同一の統計情報を報告しますが、この行のすべてのデータベースファイル間で一度だけ、それらをカウントします。この統計情報は、個々のデータベースファイルのためにのみの理にかなっているので、常に0としてCTNの値を報告します。

ZSHOW "G"は、ベンチマーク演習に使用することができます。 GT.Mの高速ストレージ機構 -- その後の分析のために、プロセスは、ZHOW "G" するため、そして、ローカル変数で返される文字列を格納するために、定期的なコマンドを作ることができます。

別の方法として、デフォルトで$ZJOBEXAM() 関数は、自動的に "G" 情報のコードを含んでいる順番にZSHOW "*" を実行するので、特定のプロセス上で定期的に MUPIP INTRPTコマンドの呼び出すことは、$ZJOBEXAMダンプファイルで、すべてのグローバルアクセスの統計情報を追加的に記録することになります。

ZSHOW "G" は、対応しているセグメントはグローバルディレクトリのBGやMMのアクセスメソッドを持っているその領域のためだけに、プロセスのプライベートグローバルアクセスの統計情報を報告します。他のアクセス方式での領域、例えば、リモートのデータベースファイルへ領域/セグメントをマップするGT.CM GNPの場合、集約された統計が(すべてのプロセス間で)リモートデータベースのファイルヘッダーに集め続けるにもかかわらず、ZSHOW "G" は任意のプロセスプライベート統計情報を報告しません。

もし "L" がリストで発生した場合、ZSHOWは、現在アクティブなMロックとそれらに対応するLEVELが表示されます。アクティブなMロックでは、LOCK + はLEVELを1つ増やし、LOCK - はLEVELから1つ減らします。GT.Mは、すべてのLOCKに成功したLOCK取得アクションごとに1つMLG (M Locks Granted) を増やします。 GT.Mは、単一のロックアクションとして括弧内でそれらを指定することで単一アクションにグループされるLOCKを扱います。たとえば、LOCK (^SUCCESS1,^SUCCESS2) は、MLG を1つ増やします。

GT.Mは、リソースをLOCKするためにすべての失敗(タイムアウト)の試行ごとに1つ MLT (M Locks Timeout) を増やします。

すべてのユーザレベルのロックは、 ZSHOW "G" の適切な出力のLKSおよび/またはLKF統計情報を増やす(タイムアウトに依存し同じロックのコマンドで指定されたロック名の数に応じて)データベースのロックコードを1回以上呼び出す変換を順番に要求します。

$PRINCIPALの入力と出力が異なるデバイスである場合、ZSHOW "D" はそれらを入力の場合0、出力の場合0と識別される別個の項目として示します。ZSHOW "D" には、暗号化されたソケットの出力の2行目に「TLS」が含まれています。ZSHOW "D" は、TCPソケットのローカル側とリモート側の両方で利用可能な情報を報告します。

UTF-8モードで、ZSHOWのコマンドは、次のようにバイト指向とディスプレイ指向の挙動を示します。

  • デバイス( ZSHOW "*" )をターゲットとするZSHOWは、WIDTHのデバイスパラメータで指定された表示列の数に応じて出力を整列します。

  • ローカル (ZSHOW "*":lcl) を対象とするZSHOWは、2048キロバイト制限内に完全に収まる最後の文字で2048キロバイトを超えるデータを切り捨てます。

  • グローバル (ZSHOW "*":^CC) を対象とするZSHOWは、そのレコードのサイズに完全に収まる最後の文字でターゲットグローバルの最大レコードサイズを超えるデータを切り捨てます。

  • ZSHOW "L" は、プロセスが保持するLOCKを表示する直前に、次のMロック統計を1行に表示します。

ZSHowの例

例:

GTM>ZSHOW "db"

このコマンドは、対応するアクションを持つ現在のZBREAKの場所に続いて、それらの現在の特性を反映するデバイスパラメータで、すべてのデバイスが表示されます。

例:

GTM>ZSHOW "dbd"

このコマンドは、以前の例と同じ出力が表示されます。

例:

GTM>ZSHOW "ax"

このコマンドは、実行時エラーを生成します。

例:

LAB1  DO LAB2
      Quit
LAB2  Do LAB3
      Quit
LAB3  ZSHow
      Quit

実行結果:

LAB3^RTN
LAB2^RTN
LAB1^RTN

例:

GTM>ZSHOW "G"

2つのデータベース・ファイルにアクセスできるプロセスの場合、次のような結果が得られます:

GLD:*,REG:*,SET:205,KIL:0,GET:1,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,CTN:0,DRD:9,DWT:15,
NTW:203,NTR:4,NBW:212,NBR:414,NR0:0,NR1:0,NR2:0,NR3:0,TTW:1,TTR:0,TRB:0,TBW:2,TBR:6,
TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0
GLD:/home/gtmuser1/.fis-gtm/V5.4-002B_x86/g/mumps.gld,REG:DEFAULT,SET:205,KIL:0,GET:1,
DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,CTN:411,DRD:9,DWT:15,NTW:2
03,NTR:4,NBW:212,NBR:414,NR0:0,NR1:0,NR2:0,NR3:0,TTW:1,TTR:0,TRB:0,TBW:2,TBR:6,TR0:0,
TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0
GLD:/tmp/tst/test.gld,REG:DEFAULT,SET:205,KIL:0,GET:1,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,
CTN:411,DRD:9,DWT:15,NTW:203,NTR:4,NBW:212,NBR:414,NR0:0,NR1:0,NR2:0,NR3:0,TTW:1,TTR:0,TRB:0,
TBW:2,TBR:6,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0

例:

GTM>ZSHOW "G"

GT.Mプロセスが、" /tmp/x1.gld " グローバルディレクトリを使用し、2つのデータベースファイルに対応する2つの領域 REG1とREG2 を開くと仮定すると、上記のコマンドは次のような結果を生成します:

GLD:*,REG:*,SET:0,KIL:0,GET:0,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,CTN:0,DRD:0,DWT:0,NTW:0,
NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,NR3:0,TTW:0,TTR:0,TRB:0,
TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0
GLD:/tmp/x1.gld,REG:REG1,SET:0,KIL:0,GET:0,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,CTN:0,DRD:0,
DWT:0,NTW:0,NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,NR3:0,TTW:0,
TTR:0,TRB:0,TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0
GLD:/tmp/x1.gld,REG:REG2,SET:0,KIL:0,GET:0,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,LKF:0,CTN:0,DRD:0,
DWT:0,NTW:0,NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,NR3:0,TTW:0,
TTR:0,TRB:0,TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0

例:

GTM>ZSHOW "G":zgbl

この例では、ローカル変数 zgbl に ZSHOW "G" の出力をリダイレクトします。

zgbl("G",0)="GLD:*,REG:*,SET:0,KIL:0,GET:0,DTA:0,ORD:0,
ZPR:0,QRY:0,LKS:0,LKF:0,CTN:0,DRD:0,DWT:0,NTW:0,NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,NR3:0,TTW:0,
TTR:0,TRB:0,TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0"
zgbl("G",1)="GLD:/tmp/x1.gld,REG:REG1,SET:0,KIL:0,GET:0,DTA:0,ORD:0,ZPR:0,QRY:0,
LKS:0,LKF:0,CTN:0,DRD:0,DWT:0,NTW:0,NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,
NR3:0,TTW:0,TTR:0,TRB:0,TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0"
zgbl("G",2)="GLD:/tmp/x1.gld,REG:REG2,SET:0,KIL:0,GET:0,DTA:0,ORD:0,ZPR:0,QRY:0,LKS:0,
LKF:0,CTN:0,DRD:0,DWT:0,NTW:0,NTR:0,NBW:0,NBR:0,NR0:0,NR1:0,NR2:0,
NR3:0,TTW:0,TTR:0,TRB:0,TBW:0,TBR:0,TR0:0,TR1:0,TR2:0,TR3:0,TR4:0,TC0:0,TC1:0,TC2:0,TC3:0,TC4:0"

例:

GTM>LOCK ^FAIL:10
GTM>lock (^SUCCESS1,^SUCCESS2)
GTM>zshow "L"
MLG:1,MLT:1
LOCK ^SUCCESS1 LEVEL=1
LOCK ^SUCCESS2 LEVEL=1

この出力は、プロセスが ^SUCCESS1 と^SUCCESS2 をロックされていることを示し、タイムアウトが原因で失敗した ^FAIL で他のロックを示します。

2つのロックリソース ^SUCCESS1と ^SUCCESS2 が、成功したLOCKコマンドで指定されていたにもかかわらず、それらは同じLOCKコマンドの一部であるので、GT.MはMLGカウンタを1つだけ増やします。と同じプロセスでZSHOW "L":var は(ローカルまたはグローバル変数にZSHOWの出力をリダイレクト)、以下の内容を保持する<var> を生じさせます。

var("L",0)="MLG:1,MLT:1"
var("L",1)="LOCK ^SUCCESS1 LEVEL=1"
var("L",2)="LOCK ^SUCCESS2 LEVEL=1"

例:

GTM>ZSHOW "L":var
GTM>ZWRITE var
var("L",0)="MLG:1,MLT:1"
var("L",1)="LOCK ^SUCCESS1 LEVEL=1"
var("L",2)="LOCK ^SUCCESS2 LEVEL=1"

この例では、ZSHOW "L" は、ローカル変数 var にそれを出力をリダイレクトする方法を示しています。

例:

プロセスが成功する LOCK(^SUCCESS1,^SUCCESS2) を実行し、そして、そのロックを保持している別のプロセスが原因でタイムアウトになる LOCK +^FAIL:1 を実行すると仮定します。この時点で ZSHOW "L" は、次の出力が表示されます。

ZSHOW ディスティネーション変数

ZSHOWは、ZSHOWがその出力を格納する添字なしまたは添字ありのグローバルまたはローカル変数名(glvn)を指定することがあります。もし引数がグローバルまたはローカル変数名が含まれていない場合、ZSHOWはカレントデバイスに出力を指示します。

ZSHOW は、変数にその出力を指示する時、その変数に下位ノードの2つのレベルを追加します。最初のレベルの添字は、情報の種類を識別する大文字のZSHOWアクションコードのセットから1文字の文字列を含んでいます。ZSHOWは、暗黙的に最初のレベルのノードの下位ノードすべてをKILLします。ZSHOWは、1から始まる昇順の整数を使用して2番目のレベルで情報の要素を保存します。

ZSHOW "V" は、ローカル変数(lvn)に出力を指示する時、結果は、"V" ノードの結果の下位ノードのコピーを含みません。

例:

GTM>Kill  Set b(1,"two")="test" ZSHow "v":a ZWRite
a("V",1)="b(1,""two"")=""test"""
b(1,"two")="test"
GTM>

このZSHowは、ローカル変数 a にすべてのローカル変数を格納します。 ZSHOWが a("V") と a("V",1) を複製しないことに注意してください。

例:

GTM>KILL  SET a(1,"D",3,5)="stuff",a(1,"X",2)="",a(1)=1
GTM>ZSHow "d":a(1)
GTM>ZWRite
a(1)=1
a(1,"D",1)="/dev/pts/1 OPEN TERMINAL NOPAST NOESCA NOREADS TYPE WIDTH=80 LENG=24
                 EDIT "
a(1,"X",2)="" 
GTM>

このZSHOWは a(1) の下に現在OPENしているデバイスの情報を格納します。ZSHOW が a(1,"D",3,5) の前の値をオーバーレイする方法に注目してください。

例:

GTM>KILL ^ZSHOW
                
GTM>ZB -*,lab^rout ZSH "B":^ZSHOW
GTM>ZWRite ^ZSHOW
^ZSHOW("B",1)="LAB^ROUT"
GTM>

このZSHOWは、グローバル変数 ^ZSHOW の下に現在のZBREAK情報を格納します。

ZSHOWの使用

ZSHOWを使用

  • 環境に関する情報を表示するデバッグツール

  • 出力での予期しないエラーがシーケンシャルファイルまたはグローバルへ指示した後に、コンテキスト情報を取得するエラー処理ツール

  • 複数のコンテキストを管理する必要があるサーバプログラムのコンテキストスイッチングのメカニズムの一部

  • 現在のプロセスから利用できる外部コールテーブルエントリを決定する開発ツール

紛らわしいデータの相互作用を最小化するには、ZSHOWに指示する限界インスタンスは情報の他の種類を保持する変数に出力し、そして、ZSHOW "V" の指示はローカル変数に出力します。ZSHOW "V" とZWRITEの比較については、 “ZWRite” を参照してください。

inserted by FC2 system