summaryrefslogtreecommitdiff
path: root/ifpps.c
AgeCommit message (Collapse)AuthorFilesLines
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>
2013-06-04sig: add signal handling functionsDaniel Borkmann1-0/+1
Add an extra file for signal handling functions. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04link: add link management functionsDaniel Borkmann1-0/+1
Same here as usual, break out link functions from xutils. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04xutils: move device management functions out of xutilsDaniel Borkmann1-0/+1
Move those functions out so that they can be more easily maintained in its separate file. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04xutils: break out promisc mode functionsDaniel Borkmann1-0/+1
Put them separately for the sake of maintanence. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04xio: rename xio to ioops and reduce its includesDaniel Borkmann1-1/+1
Rename xio to ioops (io-ops) and boil its include files down to a minimum. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04xio: add ioexact operationsDaniel Borkmann1-5/+1
Break this out so that we only need to have sigint non-static where it is really needed. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04cpus: break out cpu related functions from xutilsDaniel Borkmann1-0/+1
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-02ifpps: Rename variable containing top number of CPUsTobias Klauser1-8/+8
To make it more clear whether we're using the total number of CPUs or the top number (default 10 or specified by user), rename the variable, where the top number is used. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-05-30ifpps: Allow to select number of top hitter CPUs by command line optionTobias Klauser1-15/+24
Instead of hard-coding the maximum number of top hitter CPUs, allow the user to set it manually using a command line option. The default value (if no command line parameter is specified) remains at 10. Also update the manpage accordingly. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-05-30ifpps: Allocate cpu dependent stats in one placeTobias Klauser1-15/+9
Avoid code duplication by allocating the stats arrays dependent on the number of CPUs in main() rather than screen_main() and term_main(). Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-05-29ifpps: fix segfault in terminal modeDaniel Borkmann1-0/+7
Introduced by commit 0e47d1d5011f ("ifpps: Don't assume a maximum of 32 CPUs"). Also update term_main with initial allocation of CPU data. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-29ifpps: Properly zero out allocated statsTobias Klauser1-1/+1
The dynamically allocated members of struct ifstat have an entry for each CPU. Properly consider this when resetting the stats in the STATS_ZERO1 macro. Reported-by: Daniel Borkmann <borkmann@iogearbox.net> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>