You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
.TH criticalstat 8 "2018-06-07" "USER COMMANDS"
|
|
.SH NAME
|
|
criticalstat \- A tracer to find and report long atomic critical sections in kernel
|
|
.SH SYNOPSIS
|
|
.B criticalstat [\-h] [\-p] [\-i] [\-d DURATION]
|
|
.SH DESCRIPTION
|
|
|
|
criticalstat traces and reports occurences of atomic critical sections in the
|
|
kernel with useful stacktraces showing the origin of them. Such critical
|
|
sections frequently occur due to use of spinlocks, or if interrupts or
|
|
preemption were explicity disabled by a driver. IRQ routines in Linux are also
|
|
executed with interrupts disabled. There are many reasons. Such critical
|
|
sections are a source of long latency/responsive issues for real-time systems.
|
|
|
|
This works by probing the preempt/irq and cpuidle tracepoints in the kernel.
|
|
Since this uses BPF, only the root user can use this tool. Further, the kernel
|
|
has to be built with certain CONFIG options enabled. See below.
|
|
|
|
.SH REQUIREMENTS
|
|
Enable CONFIG_PREEMPTIRQ_EVENTS and CONFIG_DEBUG_PREEMPT. Additionally, the
|
|
following options should be DISABLED on older kernels: CONFIG_PROVE_LOCKING,
|
|
CONFIG_LOCKDEP.
|
|
.SH OPTIONS
|
|
.TP
|
|
\-h
|
|
Print usage message.
|
|
.TP
|
|
\-p
|
|
Find long sections where preemption was disabled on local CPU.
|
|
.TP
|
|
\-i
|
|
Find long sections where interrupt was disabled on local CPU.
|
|
.TP
|
|
\-d DURATION
|
|
Only identify sections that are longer than DURATION in microseconds.
|
|
.SH EXAMPLES
|
|
.TP
|
|
Run with default options: irq disabled for more than 100 uS
|
|
#
|
|
.B criticalstat
|
|
.TP
|
|
Find sections with preemption disabled for more than 100 uS.
|
|
#
|
|
.B criticalstat -p
|
|
.TP
|
|
Find sections with IRQ disabled for more than 500 uS.
|
|
#
|
|
.B criticalstat -d 500
|
|
.TP
|
|
Find sections with preemption disabled for more than 500 uS.
|
|
#
|
|
.B criticalstat -p -d 500
|
|
.SH OVERHEAD
|
|
This tool can cause overhead if the application is spending a lot of time in
|
|
kernel mode. The overhead is variable but can be 2-4% of performance
|
|
degradation. If overhead is seen to be too much, please pass a higher DURATION
|
|
to the -d option to filter more aggressively.
|
|
|
|
.SH SOURCE
|
|
This is from bcc.
|
|
.IP
|
|
https://github.com/iovisor/bcc
|
|
.PP
|
|
Also look in the bcc distribution for a companion _examples.txt file containing
|
|
example usage, output, and commentary for this tool.
|
|
.SH OS
|
|
Linux
|
|
.SH STABILITY
|
|
Unstable - in development.
|
|
.SH AUTHOR
|
|
Joel Fernandes
|
|
.SH SEE ALSO
|
|
Linux kernel's preemptoff and irqoff tracers.
|
|
|