sysinfo プローブには、次の引数があります。
arg0 |
統計情報の増分値。この引数の値は、ほとんどのプローブでは 1 ですが、別の値をとるプローブもあります。 |
arg1 |
増分対象の統計情報の、現在値のポインタ。arg0 の値に従って増分される量を 64 ビット値で表します。このポインタを間接参照することにより、コンシューマ側で、プローブの統計情報の現在のカウントを特定できます。 |
arg2 |
統計情報の増分が行われる CPU の cpu_t 構造体のポインタ。この構造体は <sys/cpuvar.h> に定義されていますが、カーネル実装の一部であるため、「非公開」と見なします。 |
ほとんどの sysinfo プローブでは、arg0 の値は 1 です。ただし、readch プローブでは arg0 が読み取られたバイト数に、writech プローブでは書き込まれたバイト数になります。この機能を利用すると、実行可能ファイルの名前から読み取りのサイズを特定できます。次の例を参照してください。
# dtrace -n readch'{@[execname] = quantize(arg0)}' dtrace: description 'readch' matched 4 probes ^C xclock value ------------- Distribution ------------- count 16 | 0 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 64 | 0 acroread value ------------- Distribution ------------- count 16 | 0 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 64 | 0 FvwmAuto value ------------- Distribution ------------- count 2 | 0 4 |@@@@@@@@@@@@@ 13 8 |@@@@@@@@@@@@@@@@@@@@@ 21 16 |@@@@@ 5 32 | 0 xterm value ------------- Distribution ------------- count 16 | 0 32 |@@@@@@@@@@@@@@@@@@@@@@@@ 19 64 |@@@@@@@@@ 7 128 |@@@@@@ 5 256 | 0 fvwm2 value ------------- Distribution ------------- count -1 | 0 0 |@@@@@@@@@ 186 1 | 0 2 | 0 4 |@@ 51 8 | 17 16 | 0 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 503 64 | 9 128 | 0 Xsun value ------------- Distribution ------------- count -1 | 0 0 |@@@@@@@@@@@ 269 1 | 0 2 | 0 4 | 2 8 |@ 31 16 |@@@@@ 128 32 |@@@@@@@ 171 64 |@ 33 128 |@@@ 85 256 |@ 24 512 | 8 1024 | 21 2048 |@ 26 4096 | 21 8192 |@@@@ 94 16384 | 0 |
sysinfo プロバイダは、arg2 を、カーネル実装の内部構造体である cpu_t のポインタに設定します。sysinfo プローブは、統計情報の増分が行われる CPU 上で起動します。情報を得たい CPU を特定するには、cpu_t 構造体の cpu_id メンバーを使用します。