3.5.5. アレイおよびアレイ要素の消去/削除


別のプローブに再使用するために、アレイ要素内の関連する値を消去したり、アレイ全体をリセットする必要がある場合もあります。「アレイ内での複数要素の処理」例3.15「cumulative-vfsreads.stp」 では、時間の経過とともにプロセスごとの VFS reads の増加が分かりますが、3 秒間で各プロセスが実行した VFS reads の数は表示されません。
これを実行するには、アレイが累積した値を消去する必要があります。delete 演算子を使用してアレイ内の要素またはアレイ全体を削除すると、これが実行できます。以下の例を見てみましょう。

例3.16 noncumulative-vfsreads.stp

global reads
probe vfs.read
{ 
  reads[execname()] ++
}
probe timer.s(3)
{
  foreach (count in reads)
    printf("%s : %d \n", count, reads[count])
  delete reads	
}
例3.16「noncumulative-vfsreads.stp」 では、2 つ目のプローブが 調査した 3 秒間のみで 各プロセスが実行した VFS reads 数をプリントします。delete reads ステートメントは、プローブ内の reads アレイを消去します。

注記

同一プローブ内には、複数のアレイ演算を設置することが可能です。「アレイ内での複数要素の処理」 および 「アレイおよびアレイ要素の消去/削除」 の例を使用すると、3 秒間でプロセスが実行した VFS reads の数を追跡し、かつ それらのプロセスでの累積 VFS reads 数を集計することができます。以下の例を見てみましょう。
global reads, totalreads

probe vfs.read
{
  reads[execname()] ++
  totalreads[execname()] ++
}

probe timer.s(3)
{
  printf("=======\n")
  foreach (count in reads-) 
    printf("%s : %d \n", count, reads[count])
  delete reads
}

probe end
{
  printf("TOTALS\n")
  foreach (total in totalreads-)
    printf("%s : %d \n", total, totalreads[total])
}
この例では、readstotalreads のアレイが同じ情報を追跡し、同様の方式でプリントします。唯一の違いは、reads は 3 秒ごとに消去されるのに対して、totalreads は増え続けるという点です。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.