summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.examples/nettop.stp
blob: 96db413a647720b848a12b21ffbc478c6e3ee5a6 (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
#! /usr/bin/env stap

global ifxmit, ifrecv

probe netdev.transmit
{
        ifxmit[pid(), dev_name, execname(), uid()] <<< length
}

probe netdev.receive
{
        ifrecv[pid(), dev_name, execname(), uid()] <<< length
}


function print_activity()
{
        printf("%5s %5s %-7s %7s %7s %7s %7s %-15s\n",
                "PID", "UID", "DEV", "XMIT_PK", "RECV_PK",
                "XMIT_KB", "RECV_KB", "COMMAND")

        foreach ([pid, dev, exec, uid] in ifrecv-) {
                n_xmit = @count(ifxmit[pid, dev, exec, uid])
                n_recv = @count(ifrecv[pid, dev, exec, uid])
                printf("%5d %5d %-7s %7d %7d %7d %7d %-15s\n",
                        pid, uid, dev, n_xmit, n_recv,
                        n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0,
                        n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0,
                        exec)
        }

        print("\n")

        delete ifxmit
        delete ifrecv
}

probe timer.ms(5000), end, error
{
        print_activity()
}