#! /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()
}

And the output is:

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      39       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      38       0       2 swapper        
 3029     0 eth0          0       1       0       0 gnome-terminal

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      34       0       1 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      39       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      36       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      47       0       2 swapper        
 2539     0 eth0          0       3       0       0 Xorg           

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      40       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      37       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      38       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      37       0       1 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      35       0       2 swapper        
 3029     0 eth0          0       2       0       0 gnome-terminal

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      53       0       2 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      32       0       1 swapper        

  PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND        
    0     0 eth0          0      38       0       2 swapper        
 2539     0 eth0          0       1       0       0 Xorg           

Reply via email to