ifpps is a small utility which periodically provides top-like
networking and system statistics from the kernel. ifpps gathers its
data directly from procfs files and does not make use of any user
space monitoring libraries which would falsify statistics under high
For instance, consider the following scenario: two directly connected
Linux machines with Intel Core 2 Quad Q6600 2.40GHz CPUs, 4 GB RAM,
and an Intel 82566DC-2 Gigabit Ethernet NIC are used for performance
evaluation. One machine generates 64 byte network packets by using
the kernel space packet generator pktgen with a maximum possible
packet rate. The other machine displays statistics about incoming
network packets by using i) iptraf(8) and ii) ifpps.
iptraf which incorporates pcap(3) shows an average packet rate of
246,000 pps while on the other hand ifpps shows an average packet
rate of 1,378,000 pps. Hence, due to packet copies and deferring
statistics creation into user space, a measurement error of
approximately 460 percent occurs. Tools like iptraf might display
much more information such as TCP per flow statistics (hence the use
of the pcap library). This is not possible with ifpps, because
overall networking statistics are its focus; statistics, which are
also fairly reliable under high packet load.
ifpps also periodically displays CPU load, interrupt, software
interrupt data per sample interval as well as total interrupts, all
per CPU. In case the number of CPUs exceeds 5 or the number specified
by the user with the “-n” command line option, ifpps will only
display this number top heavy hitters. The topmost heavy hitter CPU
will be marked with “+”. The least heavy hitter will always be
displayed and is marked with “-”. In addition, the average for all
the above per-CPU data is shown. Optionally the median values can be
displayed using the “-m” command line option.
ifpps also supports directly the gnuplot(1) data sample format. This
facilitates creation of gnuplot figures from ifpps time series.
-d <netdev>, --dev <netdev>
Networking device to fetch statistics from, for example eth0, wlan0.
Set maximum number of top hitter CPUs (in terms of time spent in
system/user mode) to display in ncurses mode, default is 10.
-t <time>, --interval <time>
Statistics refresh interval in milliseconds, default is 1000ms.
Output (once) the ncurses data to the terminal as gnuplot(1)-ready
Continuously output the terminal data after a refresh interval. This
option is only available if option “-c” is given. For “-l” it is
usually recommended to redirect the output into a file that is to be
processed later with gnuplot(1).
Show median values across all CPUs for CPU load, interrupts (per
interval and absolute) and software interrupts.
Omit printing the CSV header. This option is only available if “-c”
Turn on promiscuous mode for the given networking device.
Show percentage of current throughput in relation to theoretical line
Suppress possible warnings in the ncurses output, e.g. about a too
low sampling interval that could cause performance regression.
Show version information.
Show user help.
Default ncurses output for the eth0 device.
ifpps -pd eth0
Ncurses output for the eth0 device in promiscuous mode.
ifpps -lpcd wlan0 > plot.dat
Continuous terminal output for the wlan0 device in promiscuous mode.
On 10Gbit/s cards or higher, receive and transmit statistics are
usually accumulated at a higher duration interval than 1 second.
Thus, it might be advisable to alter the timing to a higher
accumulation interval for such cards.
This page is part of the netsniff-ng (a free Linux networking
toolkit) project. Information about the project can be found at
⟨http://netsniff-ng.org/⟩. If you have a bug report for this manual
page, send it to firstname.lastname@example.org. This page was
obtained from the project's upstream Git repository
⟨git://github.com/netsniff-ng/netsniff-ng.git⟩ on 2017-03-13. If you
discover any rendering problems in this HTML version of the page, or
you believe there is a better or more up-to-date source for the page,
or you have corrections or improvements to the information in this
COLOPHON (which is not part of the original manual page), send a mail
Linux 03 March 2013 IFPPS(8)