SOFTIRQSLOWER(8) Linux Performance Analysis SOFTIRQSLOWER(8)

# [NAME](#NAME)

softirqslower - Trace softirq handlers with latency exceeding a threshold

# [SYNOPSIS](#SYNOPSIS)

**softirqslower.py** \[min\_us]  
**softirqslower.py** \[**-c** *CPU*] \[min\_us]

# [DESCRIPTION](#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](#OPTIONS)

[**min\_us**](#min_us)

Minimum latency threshold to trace (in microseconds). Default: 10,000 μs (10 ms)

[**-c**, **--cpu** ***CPU***](#c)

Trace only events on the specified CPU core

# [OUTPUT FORMAT](#OUTPUT_FORMAT)

The tool outputs events in the following table format:

TIME STAGE SOFTIRQ LAT(us) CPU COMM

With fields defined as:

[**TIME**](#TIME)

Event timestamp (HH:MM:SS format)

[**STAGE**](#STAGE)

Latency measurement type:

[**irq(hard) to softirq**](#irq%28hard%29)

Time from hardware interrupt completion to softirq dispatch

[**softirq runtime**](#softirq)

SoftIRQ handler execution duration

[**SOFTIRQ**](#SOFTIRQ)

SoftIRQ category (case-sensitive). Common values:

[**NET\_RX**](#NET_RX)

Network reception processing

[**NET\_TX**](#NET_TX)

Network transmission processing

[**TIMER**](#TIMER)

Timer callbacks

[**SCHED**](#SCHED)

Scheduler operations

[**RCU**](#RCU)

Read-Copy-Update synchronization

[**TASKLET**](#TASKLET)

Deferred task execution

[**HRTIMER**](#HRTIMER)

High-resolution timers

[**BLOCK**](#BLOCK)

Block device operations

[**LAT(us)**](#LAT%28us%29)

Measured latency in microseconds

[**CPU**](#CPU)

CPU core where softirq was handled (0-based numbering)

[**COMM**](#COMM)

Process context handling the softirq:

[**swapper/N**](#swapper/N)

Idle thread for CPU N

[**ksoftirqd/N**](#ksoftirqd/N)

Softirq daemon for CPU N

**&lt;process&gt;**

User-space process

# [EXAMPLES](#EXAMPLES)

[Trace softirqs exceeding 10μs latency:](#Trace)

**softirqslower 10**

[Monitor only CPU core 1:](#Monitor)

**softirqslower -c 1**

[Trace network-related softirq delays (&gt;50μs):](#Trace~2)

**softirqslower 50 | grep -E 'net\_rx|net\_tx'**

[Capture RCU delays longer than 100μs to file:](#Capture)

**softirqslower 100 | grep rcu &gt; rcu\_latency.log**

# [SIGNALS](#SIGNALS)

**Ctrl+C** Stop tracing and exit gracefully

# [AUTHOR](#AUTHOR)

Chenyue Zhou

# [SEE ALSO](#SEE_ALSO)

[**runqslower**(8)](/man/enterprise-packages/bcc/runqslower.8), [**hardirqs**(8)](/man/enterprise-packages/bcc/hardirqs.8), [**softirqs**(8)](/man/enterprise-packages/bcc/softirqs.8), [**trace**(8)](/man/enterprise-packages/bcc/trace.8), [**funclatency**(8)](/man/enterprise-packages/bcc/funclatency.8),

# [REPORTING BUGS](#REPORTING_BUGS)

BCC Tools Issue Tracker: https://github.com/iovisor/bcc/issues

2025-07-08 BCC Tools

---

Document: softirqslower(8) from bcc 0.37.0-r2 (Chainguard OS)
Source: https://github.com/iovisor/bcc
