1IFPPS(8) netsniff-ng toolkit IFPPS(8)
2
3
4
6 ifpps - top-like networking and system statistics
7
9 ifpps { [options] | [device] }
10
12 ifpps is a small utility which periodically provides top-like network‐
13 ing and system statistics from the kernel. ifpps gathers its data
14 directly from procfs files and does not make use of any user space mon‐
15 itoring libraries which would falsify statistics under high load.
16
17 For instance, consider the following scenario: two directly connected
18 Linux machines with Intel Core 2 Quad Q6600 2.40GHz CPUs, 4 GB RAM, and
19 an Intel 82566DC-2 Gigabit Ethernet NIC are used for performance evalu‐
20 ation. One machine generates 64 byte network packets by using the ker‐
21 nel space packet generator pktgen with a maximum possible packet rate.
22 The other machine displays statistics about incoming network packets by
23 using i) iptraf(8) and ii) ifpps.
24
25 iptraf which incorporates pcap(3) shows an average packet rate of
26 246,000 pps while on the other hand ifpps shows an average packet rate
27 of 1,378,000 pps. Hence, due to packet copies and deferring statistics
28 creation into user space, a measurement error of approximately 460 per‐
29 cent occurs. Tools like iptraf might display much more information such
30 as TCP per flow statistics (hence the use of the pcap library). This
31 is not possible with ifpps, because overall networking statistics are
32 its focus; statistics, which are also fairly reliable under high packet
33 load.
34
35 ifpps also periodically displays CPU load, interrupt, software inter‐
36 rupt data per sample interval as well as total interrupts, all per CPU.
37 In case the number of CPUs exceeds 5 or the number specified by the
38 user with the -n command line option, ifpps will only display this num‐
39 ber top heavy hitters. The topmost heavy hitter CPU will be marked with
40 “+”. The least heavy hitter will always be displayed and is marked
41 with “-”. In addition, the average for all the above per-CPU data is
42 shown. Optionally the median values can be displayed using the -m com‐
43 mand line option.
44
45 ifpps also supports directly the gnuplot(1) data sample format. This
46 facilitates creation of gnuplot figures from ifpps time series.
47
49 -d <netdev>, --dev <netdev>
50 Networking device to fetch statistics from, for example eth0,
51 wlan0.
52
53 -n, --num-cpus
54 Set maximum number of top hitter CPUs (in terms of time spent in
55 system/user mode) to display in ncurses mode, default is 10.
56
57 -t <time>, --interval <time>
58 Statistics refresh interval in milliseconds, default is 1000ms.
59
60 -c, --csv
61 Output (once) the ncurses data to the terminal as gnu‐
62 plot(1)-ready data.
63
64 -l, --loop
65 Continuously output the terminal data after a refresh interval.
66 This option is only available if option -c is given. For -l it
67 is usually recommended to redirect the output into a file that
68 is to be processed later with gnuplot(1).
69
70 -m, --median
71 Show median values across all CPUs for CPU load, interrupts (per
72 interval and absolute) and software interrupts.
73
74 -o, --omit-header
75 Omit printing the CSV header. This option is only available if
76 -c is given.
77
78 -p, --promisc
79 Turn on promiscuous mode for the given networking device.
80
81 -P, --percentage
82 Show percentage of current throughput in relation to theoretical
83 line rate.
84
85 -W, --no-warn
86 Suppress possible warnings in the ncurses output, e.g. about a
87 too low sampling interval that could cause performance regres‐
88 sion.
89
90 -v, --version
91 Show version information.
92
93 -h, --help
94 Show user help.
95
97 ifpps eth0
98 Default ncurses output for the eth0 device.
99
100 ifpps -pd eth0
101 Ncurses output for the eth0 device in promiscuous mode.
102
103 ifpps -lpcd wlan0 > plot.dat
104 Continuous terminal output for the wlan0 device in promiscuous
105 mode.
106
108 On 10Gbit/s cards or higher, receive and transmit statistics are usu‐
109 ally accumulated at a higher duration interval than 1 second. Thus, it
110 might be advisable to alter the timing to a higher accumulation inter‐
111 val for such cards.
112
114 ifpps is licensed under the GNU GPL version 2.0.
115
117 ifpps was originally written for the netsniff-ng toolkit by Daniel
118 Borkmann. It is currently maintained by Tobias Klauser <tklauser@dis‐
119 tanz.ch> and Daniel Borkmann <dborkma@tik.ee.ethz.ch>.
120
122 netsniff-ng(8), trafgen(8), mausezahn(8), bpfc(8), flowtop(8),
123 astraceroute(8), curvetun(8)
124
126 Manpage was written by Daniel Borkmann.
127
129 This page is part of the Linux netsniff-ng toolkit project. A descrip‐
130 tion of the project, and information about reporting bugs, can be found
131 at http://netsniff-ng.org/.
132
133
134
135Linux 03 March 2013 IFPPS(8)