summaryrefslogtreecommitdiff
path: root/ifpps.c
AgeCommit message (Collapse)AuthorFilesLines
2014-04-25ifpps: fix matching wrong interface/deviceJesper Dangaard Brouer1-1/+7
There were a bug in ifpps, that would match the first occurance of a device/interface name in /proc/net/dev, because it located the device based on a substring. If the device name were starting with the same characters, e.g. having a device named eth4 and a VLAN device named eth4.100. If specifying --dev eth4, then depending on the order of /proc/net/dev the wrong device could be choosen for stats. (Note kernel does not guarantee the order of devices in proc file) Fix the bug, by matching with a colon ':' appended to the device name, as the kernel proc format prints a ':' behind the device name. Fixes #119 Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2014-02-26ifpps: Reorder buffer allocation and file opening in stats_proc_interruptsTobias Klauser1-4/+4
We don't need the file open to allocate the buffer so open it just before it's used for the first time. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2014-02-22ifpps: Exit gracefully for all possible termination signalsTobias Klauser1-0/+4
Handle all termination signals that we're allowed to handle (SIGKILL can't be handled) in order to exit gracefully in any regular termination case. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-10-02ifpps: Simplify logic wrt. omit_header in term_main()Tobias Klauser1-6/+3
We can reuse the omit_header variable to get rid of the existing variable 'first', which was used to make sure the header gets only printed once at the beginning. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-10-02ifpps: Mark omit_header parameter to screen_main() as unusedTobias Klauser1-1/+1
Otherwise we get a warning when compiling with "-W -Wall". Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-10-02ifpps: min: minor: Keep options sorted alphabeticallyTobias Klauser1-3/+3
Keep the options sorted alphabetically, argument options first. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-10-02ifpps: add option that omits CSV headerJon Schipp1-6/+16
Adds option -o|--omit-header which does not print the CSV header e.g. when the user does not need it. Signed-off-by: Jon Schipp <jonschipp@gmail.com> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-09-09ifpps: correct calculation of line rate percentageTobias Klauser1-2/+2
The line rate is given in Mbit rather than MiB (in which {rx,tx}_bytes were converted). Correct the calculation by converting {rx,tx}_bytes to Mbit: (n bytes * 8 bits per byte) / 1000^2 = (n bytes) / 125000 Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-09-05ifpps: make display of line rate percentage optionalTobias Klauser1-4/+11
In order to not to clutter the display too much, make the display of the percentage of the theoretical line rate dependent on a command line option. Suggested-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-09-04ifpps: show percentage of theoretical line-rateTobias Klauser1-0/+17
Also show the percentage of the (theoretical) line rate, not just the current rate. Suggested-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-09-04ifpps: Reuse device bitrate for screen_header()Tobias Klauser1-3/+2
Instead of issuing another call to device_bitrate(), reuse the the value acquired in screen_update() and pass it to screen_header(). Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-08-30ifpps: Skip reading IRQ number from /proc/interruptsTobias Klauser1-7/+5
We don't use the IRQ number we read from /proc/interrupts, so just skip it while reading. This also allows us to drop the irq_nr member from struct ifstat. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-08-29ifpps: Don't bug out if interface went downTobias Klauser1-2/+5
In case the interface ifpps is running on went down, ifpps bugged out because the stats didn't look plausible anymore, due to the IRQ count being reset: ifpps: ifpps.c:563: stats_diff: Assertion `!((new->irqs[i] - old->irqs[i]) > (new->irqs[i]))' failed Fix this by setting the difference to 0 in this case. ifpps will thus display a irqs/t value of 0 instead of bugging out. This fixes #74. Reported-by: Jon Schipp <jonschipp@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-08-29ifpps: Use unsigned int to store number of cpusTobias Klauser1-23/+24
The number of CPUs can never be negative and get_number_cpus() returns unsigned int too, so consistently conver all variables holding a CPU number or number of CPUs to type unsigned int. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-08-13ifpps: minor: Add parentheses to do {} while in padding_from_num()Tobias Klauser1-2/+3
Even though the loop contains only one statement, add parentheses around it to make it more readable. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-08-09dev: Integrate `promisc' module into `dev' moduleTobias Klauser1-3/+2
Since entering/leaving promiscuous mode also is a device specific function and all users of the `promisc' module also use `dev', integrate it there. Also rename the functions to have a `device_' prefix like the other functions in the module. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-13ifpps: Remove unused parameter to term_csv()Tobias Klauser1-3/+2
term_csv() doesn't use the ifname and ms_interval parameters, they're only used in term_csv_header(). Thus remove them from term_csv(). This fixes a warning when compiling with -W/-Wunused-parameter. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-13ifpps: Use unsigned int to store number of CPUsTobias Klauser1-3/+4
Since get_number_cpus() now returns unsigned int store it's return value and derived values in unsigned int variables as well. This fixes the some warnings when compiling with -W/-Wsign-compare: Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-13misc: fix multiple NULL pointer sparse warningsDaniel Borkmann1-1/+1
Those are fixes for the following warnings: pcap_mm.c:119:29: warning: Using plain integer as NULL pointer pcap_mm.c:141:29: warning: Using plain integer as NULL pointer ring.c:24:31: warning: Using plain integer as NULL pointer flowtop.c:1114:22: warning: Using plain integer as NULL pointer ifpps.c:1133:29: warning: Using plain integer as NULL pointer Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-13ifpps: help: reduce option description to one lineDaniel Borkmann1-2/+1
Make this conform to trafgen/netsniff-ng and reduce it to 1 line description. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-13ifpps: release stats on exitDaniel Borkmann1-0/+20
The stack trace of valgrind --leak-check=full --show-reachable=yes ifpps \ -lpcd wlan0 showed that at exit members from stats are still reachable. They have been alloced through stats_alloc, but not freed. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-13ifpps: warn when 1Gbit/s and interval < 1secDaniel Borkmann1-2/+6
It is possible to use a interval even of 0, although it would not really make sense. It's not a bug either, so throw a warning to the user in that case on 1Gbit/s. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-13ifpps: Correct calculation of median values for CPU loadTobias Klauser1-10/+11
ifpps always reported the same values for median as for average in the CPU load fields (usr, sys, idle, iowait). This is of course incorrect. The bug was due to 3 sub-problems: - Summing up long double values (m_cpu_*) in an uint64_t (all) - Not using %Lf (for long double) in mvwprintw() - Explicitely use floating point division in MEDIAN_EVEN Fix the bug by summing up in a separate accumulator of type long double, use the correct format string for long double and divide by 2.0 in MEDIAN_EVEN to force the result to be (long) double. Reported-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-12ifpps: Consistently list command line optionsTobias Klauser1-5/+5
Instead of (more or less) arbitrarily listing the command line options, sort them according to the following rule: - options with required argument, alphabetically by short option - options without argument, alphabetically by short option - common options -v/--version and -h/--help Do this in the short options string, the long options struct, the in-program usage and the man page. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-12ifpps: median: add whitespace padding in one occurenceDaniel Borkmann1-2/+2
Add whitespace padding in one occurence of 'med:' output. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-12ifpps: Update usage with respect to median valuesTobias Klauser1-0/+1
This was missing in commit 971b1d95 ("ifpps: Optionally display median values for CPU load and interrupts"). Update the usage to reflect the changes too. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-12ifpps: Optionally display median values for CPU load and interruptsTobias Klauser1-1/+91
Using the -m/--median command line option, median values across all CPUs are displayed for CPU load, interrupts per interval, sw interrupts per interval and absolute number of interrupts. Also update the manpage accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-11ifpps: align avg on systems with >8 CPUsDaniel Borkmann1-5/+8
When running ifpps on systems with 16, 32 or more CPUs, 'avg:...' field is not being padded with witespaces as the rest of the CPU lines. This patch does that. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: warn about increase -t when high speedDaniel Borkmann1-8/+28
Collecting device statistics on high speed every second can be very costly, so warn about this in ncurses mode. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: show machine type only if not in already release nameDaniel Borkmann1-3/+9
In Fedora or RHEL/CentOS releases the machine type is already part of the package name, so show it only, if it does not appear there. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: show kernel version and machine typeDaniel Borkmann1-2/+6
Lets make the headline output a bit more useful and show the current kernel version and well as the machine/hardware type. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: make '+' to '-' sort more clearDaniel Borkmann1-15/+14
If will now look like the following: cpu6 +: 237357 irqs cpu2 |: 117538 irqs cpu0 |: 8419 irqs cpu7 |: 4523 irqs cpu5 |: 4312 irqs cpu1 -: 1432 irqs avg: 47606.8 This makes it a bit more precise/intuitive that we sort from max to min. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: align avg numbers and remove unitDaniel Borkmann1-8/+8
In order to get a better overview, lets align the avg numbers to the other shown decimals. However, for this we would need to remove the avg units as we deal with floats here. But we know the units from the above numbers anyway. I think this makes it more clear to follow. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: align string to format stringDaniel Borkmann1-12/+12
Just a whitespace fix to align the strings to the fmt string. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-11ifpps: Remove unnecessary memset()Tobias Klauser1-1/+0
stats_avg will be reset to 0 on the first call to stats_top() before displaying any results, thus this memset() is not necessary. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-10ifpps: Remove unecessary whitespaces in mvwprintw() callsTobias Klauser1-8/+8
Remove trailing whitespace where they're not necessary for the background to extend beyond the text. Replace whitespaces needed for tabbing by setting the appropriate format string field width modifiers. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-10ifpps: Reduce default number of top hitter CPUs to 5Tobias Klauser1-2/+2
Since we now also display the average (and in the future possibly also the standard deviation), reduce the default number of CPUs displayed to 5, to keep terminal space usage low. Suggested-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-10ifpps: Calculate and show average values across all CPUsTobias Klauser1-9/+63
Calculate the average for CPU usage, IRQs/t and absolute IRQs across all CPUs (also the ones which are not displayed) and show them below the respective per-CPU values. Mention this fact the man page accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-09all: show git id in --version informationDaniel Borkmann1-3/+4
In order to be able to better track regressions or to give support, let us track the Git id as well in version information. This makes the ``--version'' switch actually useful. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-24ifpps, flowtop: Move ncurses init and end to common moduleTobias Klauser1-21/+2
ncurses (de-)initialization is duplicated across flowtop and ifpps, so move it to an own module and use it from both tools. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-10ifpps: Remove unused 'forks' member from struct ifstatTobias Klauser1-4/+1
We never use or report it anywhere, so remove it. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-09ifpps: minor: fix ncurses alignmentDaniel Borkmann1-3/+3
Since we've added '+'/'-' for max/min CPU values, we also need to shift once whitespace to the left to properly align ncurses display again. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-09ifpps: Rename cpu number parameter to stats_top()Tobias Klauser1-2/+2
This is not the top number of CPUs but the total number. Rename the variable to not confuse this. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-09ifpps: Report more detailed memory stats and number of total processesTobias Klauser1-10/+88
Instead of just giving the percentage of memory usage, report the total, used, active and inactive memory values. Also report total, free and cached for swap. Instead of reporting the memory in the 'sys' line add two new lines for these reports and use the free space to report the total number of processes. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-09ifpps: Don't calculate diff for stats values not used for relative valuesTobias Klauser1-4/+0
These stats values are not reported anywhere in relative terms, so it makes no sense to calculate the difference for them. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-09ifpps: Don't diff tx_bytes twiceTobias Klauser1-1/+0
It's sufficient to calculate the difference of tx_bytes only once. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-09ifpps: Don't re-initialize stats value index counter in CSV modeTobias Klauser1-1/+1
In case we add new stats values, j might be higher already when entering the loop. As j will have the proper number anyway, there is no point in re-initializing. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-06ifpps: Also display min hitter for IRQsTobias Klauser1-23/+50
Also display the least heavy hitter for the relative and absolute IRQ list. Also check that the number passed with -n is actually 1 or larger. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-06ifpps: Always display the least heavy hitter CPUTobias Klauser1-17/+40
Along with the topmost heavy hitters, we always display the least heavy hitter (unless there's only 1 CPU). This is not influenced by the -n command line parameter, so also display the according additional CPU in the header line. Also update the manpage accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-06-04xutils: eliminate xutils, move rest to epoll2Daniel Borkmann1-1/+0
Finally eliminate xutils.{c,h} and move the rest to epoll2. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>