Statistical aggregate
主要用来统计一组数据。它使用“<<< value
”运算来把一个value
加到这个集合里。举个例子,假设目前是个空集合,执行“<<< 1
”以后,集合里有了一个元素:1
;再执行“<<< 2
”以后,集合里有了两个元素:1
和2
。还有一些针对statistical aggregate
的运算:count
,avg
等等。通过以下例子,可以很容易知道这些运算的意义:
# cat test.stp
#!/usr/bin/stap
global reads
probe vfs.read
{
reads[execname(),pid()] <<< $count
}
probe timer.s(3)
{
foreach([execname, pid] in reads)
{
if (execname == "stapio")
{
printf("count (%s %d) : %d \n", execname, pid, @count(reads[execname, pid]))
printf("sum (%s %d) : %d \n", execname, pid, @sum(reads[execname, pid]))
printf("min (%s %d) : %d \n", execname, pid, @min(reads[execname, pid]))
printf("max (%s %d) : %d \n", execname, pid, @max(reads[execname, pid]))
printf("avg (%s %d) : %d \n", execname, pid, @avg(reads[execname, pid]))
exit()
}
}
}
# ./test.stp
count (stapio 10762) : 17
sum (stapio 10762) : 1982472
min (stapio 10762) : 8196
max (stapio 10762) : 131072
avg (stapio 10762) : 116616