summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.samples/iotask.stp
blob: 13d273a33895e524c339765ae52116a3ed1b1ba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# iotask.stp
# A reimplementation of user script: iotask.stp given at OLS 2005
# in the current language.
#
# Will Cohen
# 9/22/2005

global names, opens
global reads, read_bytes
global writes, write_bytes

probe kernel.function("sys_open") {
   ++names[execname()]; ++opens[execname()];
}

probe kernel.function("sys_read") {
  ++names[execname()]; ++reads[execname()];
  read_bytes[execname()] += $count;
}

probe kernel.function("sys_write") {
  ++names[execname()]; ++writes[execname()];
  write_bytes[execname()] += $count;
}

probe begin { log( "starting probe" ); }

probe end {
  foreach( name in names){
    log ("process: " . name);
    if (opens[name]) 
      log( "opens n=" . sprint(opens[name]));
    if ( reads[name]){
      count = reads[name]; total=read_bytes[name];
      log("reads n, sum, avg=". sprint(count)
        . "," . sprint(total) . "," . sprint(total/count));
    }
    if (writes[name]){
      count = writes[name]; total=write_bytes[name];
      log("writes n, sum, avg=". sprint(count)
        . "," . sprint(total) . "," . sprint(total/count));
    }
    log("");
  }
}