reads
, but how?foreach
statement. Consider the following example:Example 3.17. cumulative-vfsreads.stp
global reads probe vfs.read { reads[execname()] ++ } probe timer.s(3) { foreach (count in reads) printf("%s : %d \n", count, reads[count]) }
foreach
statement uses the variable count
to reference each iteration of a unique key in the array reads
. The reads[count]
array statement in the same probe retrieves the associated value of each unique key.foreach
statement in Example 3.17, “cumulative-vfsreads.stp” prints all iterations of process names in the array, and in no particular order. You can instruct the script to process the iterations in a particular order by using +
(ascending) or -
(descending). In addition, you can also limit the number of iterations the script needs to process with the limit value
option.probe timer.s(3) { foreach (count in reads- limit 10) printf("%s : %d \n", count, reads[count]) }
foreach
statement instructs the script to process the elements in the array reads
in descending order (of associated value). The limit 10
option instructs the foreach
to only process the first ten iterations (that is, print the first 10, starting with the highest value).