bcc-softirqslower(8)
| SOFTIRQSLOWER(8) | Linux Performance Analysis | SOFTIRQSLOWER(8) |
NAME
softirqslower - Trace softirq handlers with latency exceeding a threshold
SYNOPSIS
softirqslower.py [min_us]
softirqslower.py [-c CPU] [min_us]
DESCRIPTION
The softirqslower tool traces softirq events that exceed a specified latency threshold. This tool helps diagnose interrupt handling bottlenecks by measuring two critical latency dimensions:
- irq(hard) to softirq: Time delay between hardware interrupt completion and softirq execution start
- softirq runtime: Actual execution duration of softirq handlers
Developed as part of the BCC (BPF Compiler Collection) tools, it's particularly useful for network stack optimization, scheduler tuning, and real-time systems analysis.
OPTIONS
- min_us
- Minimum latency threshold to trace (in microseconds). Default: 10,000 μs (10 ms)
- -c, --cpu CPU
- Trace only events on the specified CPU core
OUTPUT FORMAT
The tool outputs events in the following table format:
TIME STAGE SOFTIRQ LAT(us) CPU COMM
With fields defined as:
- TIME
- Event timestamp (HH:MM:SS format)
- STAGE
- Latency measurement type:
- irq(hard) to softirq
- Time from hardware interrupt completion to softirq dispatch
- softirq runtime
- SoftIRQ handler execution duration
- SOFTIRQ
- SoftIRQ category (case-sensitive). Common values:
- NET_RX
- Network reception processing
- NET_TX
- Network transmission processing
- TIMER
- Timer callbacks
- SCHED
- Scheduler operations
- RCU
- Read-Copy-Update synchronization
- TASKLET
- Deferred task execution
- HRTIMER
- High-resolution timers
- BLOCK
- Block device operations
- LAT(us)
- Measured latency in microseconds
- CPU
- CPU core where softirq was handled (0-based numbering)
- COMM
- Process context handling the softirq:
- swapper/N
- Idle thread for CPU N
- ksoftirqd/N
- Softirq daemon for CPU N
- <process>
- User-space process
EXAMPLES
- Trace softirqs exceeding 10μs latency:
- softirqslower 10
- Monitor only CPU core 1:
- softirqslower -c 1
- Trace network-related softirq delays (>50μs):
- softirqslower 50 | grep -E 'net_rx|net_tx'
- Capture RCU delays longer than 100μs to file:
- softirqslower 100 | grep rcu > rcu_latency.log
SIGNALS
Ctrl+C Stop tracing and exit gracefully
AUTHOR
Chenyue Zhou
SEE ALSO
runqslower(8), hardirqs(8), softirqs(8), trace(8), funclatency(8),
REPORTING BUGS
BCC Tools Issue Tracker: https://github.com/iovisor/bcc/issues
| 2025-07-08 | BCC Tools |
