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
|
#! /usr/bin/env stap
global execnames, page_faults, node_faults, nodes
probe vm.pagefault {
p = pid(); n=addr_to_node(address)
execnames[p] = execname()
page_faults[p, write_access ? 1 : 0] <<< 1
node_faults[p, n] <<< 1
nodes[n] <<< 1
}
function print_pf () {
printf ("\n")
printf ("%-16s %-6s %10s %10s %-20s\n",
"Execname", "PID", "RD Faults", "WR Faults", "Node:Faults")
print ("======================= ========== ========== =============\n")
foreach (pid in execnames) {
printf ("%-16s %6d %10d %10d ", execnames[pid], pid,
@count(page_faults[pid,0]), @count(page_faults[pid,1]))
foreach ([node+] in nodes) {
if ([pid, node] in node_faults)
printf ("%d:%d ", node, @count(node_faults[pid, node]))
}
printf ("\n")
}
printf("\n")
}
probe begin {
printf("Starting pagefault counters \n")
}
probe end {
printf("Printing counters: \n")
print_pf ()
printf("Done\n")
}
|