RCU Grace Period Advancement in Tickless Linux Kernels

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In Linux-based systems, read-copy update (RCU) grace periods cannot advance effectively in the presence of in-kernel infinite loops, leading to potential errors, and existing solutions rely on scheduling-clock interrupts, which may not be available in all configurations, especially in tickless modes.

Innovation Solution

A per-CPU indicator is set to report a quiescent state for CPUs running CPU-bound workloads, allowing RCU grace periods to advance without relying on scheduling-clock interrupts, by using a phased approach that sets a per-CPU variable to note quiescent states and avoid IPIs for well-behaved real-time workloads.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If RCU grace periods rely on scheduling-clock interrupts to detect quiescent states, then quiescent state detection is reliable, but the system cannot operate in tickless mode and scheduling-clock interrupts are required

Engineering Contradiction:
Improvetickless operation capabilityVSAvoidgrace period advancement
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

A new intermediary mechanism (per-CPU dyntick idle tracking and RCU grace period completion flags) is introduced to mediate between the absence of scheduling-clock interrupts and the need to detect quiescent states. This allows the system to determine when CPUs have entered quiescent states without relying on scheduling-clock interrupts, enabling tickless operation while maintaining grace period advancement reliability

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the mechanical dependency on scheduling-clock interrupts (hardware timer mechanism) with a software-based tracking mechanism that monitors CPU idle states and RCU grace period completion. This substitution eliminates the requirement for scheduling-clock interrupts, allowing the system to operate in tickless mode while still reliably detecting quiescent states

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Reliability

If IPIs are sent to CPUs running in-kernel infinite loops, then RCU grace periods can advance, but unnecessary IPIs are generated for well-behaved real-time workloads

Engineering Contradiction:
Improvegrace period completionVSAvoidunnecessary IPIs
Core Design Contradiction:
ReliabilityVSObject-generated harmful factors

Solution Approach 1:

The patent applies local quality by differentiating between different types of CPU states: well-behaved real-time workloads that periodically invoke cond_resched_rcu_qs() are treated differently from error conditions. By tracking per-CPU dyntick idle states and RCU grace period completion flags, the system can locally identify and handle each CPU's state appropriately, avoiding unnecessary IPIs to well-behaved workloads while still ensuring grace period completion for error conditions

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent implements feedback mechanisms where CPUs running well-behaved real-time workloads provide feedback by periodically invoking cond_resched_rcu_qs(), which sets per-CPU flags indicating they have passed through quiescent states. This feedback allows the RCU subsystem to determine that grace periods have advanced without needing to send IPIs, thereby avoiding unnecessary interruptions while maintaining reliable grace period detection

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10459761B2Enabling real-time CPU-bound in-kernel workloads to run infinite loops while keeping RCU grace periods finite
Publication Date: 2019.10.29 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10459761B2 patent drawing
  • US10459761B2 patent drawing
  • US10459761B2 patent drawing

AI summary

A technique for enabling a real-time CPU-bound in-kernel workload to run an infinite loop while keeping read-copy update (RCU) grace periods finite. In an embodiment, a per-CPU indicator may be set to indicate that a CPU running the CPU-bound in-kernel workload has not reported an RCU quiescent state within a first defined time. An RCU grace period operation may be invoked from within the workload that causes an RCU quiescent state to be reported on behalf of the CPU if the per-CPU indicator is set. If the RCU quiescent state is not reported within a second defined time that is longer than the first defined time and sufficiently long to indicate an error condition requiring CPU rescheduling, the CPU may be rescheduled.