3.5.4. アレイ内での複数要素の処理
アレイで十分な情報を収集したら、それを有用なものにするためにアレイで全要素を取得して処理する必要があります。例3.14「vfsreads.stp」 を見てみましょう。このスクリプトは各プロセスが何回 VFS 読み込みを行ったかという情報を収集しますが、その情報をどうするかについては指定していません。例3.14「vfsreads.stp」 を有用にする簡単な方法は、
reads アレイでキーのペアを出力することです。
アレイ内のキーのペアすべてを処理する最善の方法 (反復として) は、
foreach ステートメントを使用することです。以下の例を見てみましょう。
例3.15 cumulative-vfsreads.stp
例3.15「cumulative-vfsreads.stp」 の 2 つ目のプローブでは、
foreach ステートメントが count 変数を使用して reads アレイ内の一意のキーの反復を参照しています。同じプローブ内の reads[count] アレイステートメントは、一意のキーの関連する値を取得します。
例3.15「cumulative-vfsreads.stp」 の最初のプローブでは、スクリプトは VFS-read の統計情報を 3 秒ごとに出力し、VFS-read を実行したプロセス名とその回数を表示します。
例3.15「cumulative-vfsreads.stp」 の
foreach ステートメントは、順不同でアレイ内のプロセス名の 全 反復を出力することに注意してください。+ (昇順) または - (降順) を使用すると、スクリプトに特定の順番で反復をプロセスするよう指示することができます。さらに、limit value オプションを使うと、スクリプトがプロセスする反復数を制限することもできます。
以下の代替プローブ例を見てみましょう。
この
foreach ステートメントは、スクリプトにアレイ reads 内の要素を (関連する値の) 降順で処理するよう指示します。limit 10 オプションは、foreach に最初の 10 の反復のみを処理するよう指示します (つまり、値の高い上位 10 位の反復のみを出力します)。