ifpps: Allow to select number of top hitter CPUs by command line option
[netsniff-ng.git] / ifpps.8
blob26827b2e176106bf64fe8009857bcf61dba486c2
1 .\" netsniff-ng - the packet sniffing beast
2 .\" Copyright 2013 Daniel Borkmann.
3 .\" Subject to the GPL, version 2.
4 .PP
5 .TH IFPPS 8 "03 March 2013" "Linux" "netsniff-ng toolkit"
6 .SH NAME
7 ifpps \- top-like networking and system statistics
8 .PP
9 .SH SYNOPSIS
10 .PP
11 \fB ifpps\fR { [\fIoptions\fR] | [\fIdevice\fR] }
12 .PP
13 .SH DESCRIPTION
14 .PP
15 ifpps is a small utility which periodically provides top-like networking
16 and system statistics from the kernel. ifpps gathers its data directly
17 from procfs files and does not apply any user space monitoring libraries
18 which would falsify statistics under high load.
19 .PP
20 For instance, consider the following scenario: two directly connected
21 Linux machines with Intel Core 2 Quad Q6600 2.40GHz CPUs, 4 GB RAM, and
22 an Intel 82566DC-2 Gigabit Ethernet NIC are used for performance evaluation.
23 One machine generates 64 byte network packets by using the kernel space
24 packet generator pktgen with a maximum possible packet rate. The other
25 machine displays statistics about incoming network packets by using i)
26 iptraf(8) and ii) ifpps.
27 .PP
28 iptraf which incorporates pcap(3) shows an average packet rate of
29 246,000 pps while on the other hand ifpps shows an average packet rate
30 of 1,378,000 pps. Hence, due to packet copies and deferring statistics
31 creation into user space, a measurement error of approximately 460 per cent
32 occurs. Tools like iptraf might display much more information such as
33 TCP per flow statistics (hence the use of the pcap library), that is not
34 possible with ifpps, because overall networking statistics are our focus;
35 statistics, which are also fairly reliable under high packet load.
36 .PP
37 ifpps also periodically displays CPU load, interrupt, software interrupt
38 data per sample interval as well as total interrupts, all per CPU. In case
39 the number of CPUs exceed 10, ifpps will then only display the top heavy
40 hitters.
41 .PP
42 .SH OPTIONS
43 .PP
44 .SS -d <netdev>, --dev <netdev>
45 Networking device to fetch statistics from, for example, eth0, wlan0.
46 .PP
47 .SS -t <time>, --interval <time>
48 Statistics refresh interval in milliseconds, default is 1000ms.
49 .PP
50 .SS -n, --num-cpus
51 Set maximum number of top hitter CPUs (in terms of time spent in system/user
52 mode) to display in ncurses mode, default is 10.
53 .PP
54 .SS -p, --promisc
55 Turn on promiscuous mode for the given networking device.
56 .PP
57 .SS -c, --csv
58 Output (once) the ncurses data to the terminal as gnuplot(1)-ready data.
59 .PP
60 .SS -l, --loop
61 Continuously output the terminal data after a refresh interval. This option
62 is only available, if option \[lq]\-c\[rq] is given. For \[lq]\-l\[rq] it is
63 usually recommended to redirect the output into a file that is to be be
64 processed later with gnuplot(1).
65 .PP
66 .SS -v, --version
67 Show version information.
68 .PP
69 .SS -h, --help
70 Show user help.
71 .PP
72 .SH USAGE EXAMPLE
73 .PP
74 .SS ifpps eth0
75 Default ncurses output for the eth0 device.
76 .PP
77 .SS ifpps -pd eth0
78 Ncurses output for the eth0 device in promiscuous mode.
79 .PP
80 .SS ifpps -lpcd wlan0 > plot.dat
81 Continuous terminal output for the wlan0 device in promiscuous mode.
82 .PP
83 .SH NOTE
84 On 10Gbit/s cards or higher, receive and transmit statistics are usually
85 accumulated at a higher duration interval than 1 second. Thus, it might
86 be advisable to alter the timing to a higher accumulation interval for such cards.
87 .PP
88 .SH BUGS
89 Systems with greater than 32 cores are currently not supported. This
90 should, however, not be a big task to fix. The only challenge would
91 be to display the presented information in a sane way, probably by
92 selectively hiding uninteresting statistics.
93 .PP
94 .SH LEGAL
95 ifpps is licensed under the GNU GPL version 2.0.
96 .PP
97 .SH HISTORY
98 .B ifpps
99 was originally written for the netsniff-ng toolkit by Daniel Borkmann. It
100 is currently maintained by Tobias Klauser <tklauser@distanz.ch> and Daniel
101 Borkmann <dborkma@tik.ee.ethz.ch>.
103 .SH SEE ALSO
104 .BR netsniff-ng (8),
105 .BR trafgen (8),
106 .BR mausezahn (8),
107 .BR bpfc (8),
108 .BR flowtop (8),
109 .BR astraceroute (8),
110 .BR curvetun (8)
112 .SH AUTHOR
113 Manpage was written by Daniel Borkmann.