* add -J to the man page
* add note about default output
* be compatible with another util-linux tools and use -J
Signed-off-by: Karel Zak <kzak@redhat.com>
* don't care about term size and attrs when runs only once
* explicitly define signals
* resize immediately after SIGWINCH (to keep it nice for users)
Signed-off-by: Karel Zak <kzak@redhat.com>
Allocating and freeing all the time is a little bit heavier, but it is also
more robust. It is impossible to know if field lenghts stay fixed.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit add total and delta as separate columns rather than a toggle,
making output generally more informative. When using command I found that
sort order key bindings should match with first letter of column headers so
that they are as easy as possible to remember, and therefore enhancing user
experience.
Requested-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This matches with sort order n for name, and allows later usage of d for
delta without needing to go around d for description.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Change total to display delta or count depending on run mode. Add space in
between header and irqtop body. Print only number of active CPU in header.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Visible cursor is distraction. Secondly with visible cursor key commands
can be visible adding unwanted characters to end of output.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The rirst output is total count followed by number of interupts since
previous screen update. This is how the irqtop worked before libsmartcols
was added to the command.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This makes output to be automatically be nicely adjusted to optimal width.
In this commit also removes excess spaces from description strings.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Having a when and from where information is useful in situations when output
is examined later and possibly elsewhere. Typical example would be a
screenshot or output copy-paste of a terminal to a ticketing system.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The event loop takes care of the standard screen updates, signals, and user
inputs. Two nice things using even loop like this are; 1) no need for any
global variables and 2) effect of user commands is immediate.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
With very short delay one can see irqfile file descriptors pile up rather
quickly causing program to stop with too many open files error. This commit
fixes that, and removes couple other memory leaks. With these the command
should hopefully run fine for days if not even months.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
currently, there are usually 40/48/64/96 CPUs on a single server,
and a lot of interrupts are enabled by multi-queues of a NIC.
"/proc/interrupts" is not human readable any more.
'watch -d -n 1 "cat /proc/interrupts"' also can not work well.
so implement irqtop to show the interrupts information, we can
sort the interrupts by count(default), name and /proc/interrupts.
irqtop - IRQ : 49, TOTAL : 2361705032, CPU : 8, ACTIVE CPU : 8
IRQ COUNT DESC
CAL 21196 Function call interrupts
LOC 13733 Local timer interrupts
154 1430 IR-PCI-MSI 32768-edge i915
127 1322 IR-PCI-MSI 327680-edge xhci_hcd
RES 1224 Rescheduling interrupts
146 336 IR-PCI-MSI 520192-edge enp0s31f6
IWI 135 IRQ work interrupts
147 48 IR-PCI-MSI 31981569-edge nvme0q2
151 42 IR-PCI-MSI 31981573-edge nvme0q6
TLB 8 TLB shootdowns
150 7 IR-PCI-MSI 31981572-edge nvme0q5
152 5 IR-PCI-MSI 31981574-edge nvme0q7
156 4 IR-PCI-MSI 1572864-edge iwlwifi
148 3 IR-PCI-MSI 31981570-edge nvme0q3
153 2 IR-PCI-MSI 31981575-edge nvme0q8
NMI 2 Non-maskable interrupts
PMI 2 Performance monitoring interrupts
0 0 IR-IO-APIC 2-edge timer
1 0 IR-IO-APIC 1-edge i8042
8 0 IR-IO-APIC 8-edge rtc0
9 0 IR-IO-APIC 9-fasteoi acpi
12 0 IR-IO-APIC 12-edge i8042
test on 4.14 & 4.19, work fine. test on bare metal & kvm virtual
machine, work fine. hot-plug/hot-unplug virtual NIC during running
irqtop, work fine.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
The logger and rtwake time function changes continue the same fixes as
previous commit - use thread safe functions. The libsmartcols condition
removal is possible because width must be greater than tb->termwidth that is
size_t and cannot be smaller than zero. And remove couple FIXME's that are
old and unlikely ever to get fixed.
Reference: 3160589d86
Signed-off-by: Sami Kerola <kerolasa@iki.fi>