Cooperative Preemption for Virtual Machine Thread Context Switching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Context switching between threads in virtual machines is computationally expensive and time-consuming, particularly when bringing threads to a safe point for operations like garbage collection, as existing methods often require random context switches that are not optimized for efficiency.

Innovation Solution

Implementing cooperative preemption and thread-safe points, where context switching occurs only within designated thread-safe points, allowing for controlled and efficient switching between threads, reducing the need for global safe points and minimizing computational overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional context switching is used to bring threads to a safe point, then threads can reach a safe point for garbage collection and other safe operations, but the process is computationally expensive and time-consuming

Engineering Contradiction:
Improvesafe point achievementVSAvoidcontext switching time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by having threads periodically update their safe point status and by pre-identifying safe points in the execution flow. This allows the garbage collector and other safe operations to determine whether threads are already at or near a safe point before initiating context switches, thereby reducing unnecessary preemption and saving time.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback mechanisms where threads report their current execution state and safe point status to the virtual machine monitor. This feedback allows the system to make informed decisions about whether context switching is necessary, and when it is, to target specific safe points rather than performing random preemptions, thus reducing the time required to bring threads to a safe state.

Inventive Principle:
Principle #23Feedback

2Productivity

If context switching occurs at random instructions, then threads can be preempted for scheduling, but the preemption may occur at non-safe points requiring additional context switches to reach safe points

Engineering Contradiction:
Improvethread scheduling efficiencyVSAvoidcontext switching complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system applies local quality by distinguishing between different types of instructions and identifying specific locations in the code that constitute safe points. Rather than treating all instructions uniformly, the system marks certain instructions as safe for preemption and uses these marked locations as targets for context switching, thereby simplifying the preemption process while maintaining scheduling flexibility.

Inventive Principle:
Principle #3Local quality

3Reliability

If all threads are brought to a global safe point for safe operations, then operations like garbage collection can be performed safely, but the time required to coordinate all threads increases

Engineering Contradiction:
Improvesafe operation guaranteeVSAvoidsafe operation duration
Core Design Contradiction:
ReliabilityVSDuration of action of moving object

Solution Approach 1:

The system applies partial action by bringing only the necessary threads to safe points rather than forcing all threads to synchronize at a global safe point. The garbage collector and other safe operations can proceed with the subset of threads that are at safe points, while other threads continue execution. This partial approach significantly reduces the coordination overhead and duration of safe operations while maintaining correctness for the threads that participate.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS9336005B2Cooperative preemption
Publication Date: 2016.05.10 AZUL SYSTEMS INC
  • US9336005B2 patent drawing
  • US9336005B2 patent drawing
  • US9336005B2 patent drawing

AI summary

Preempting the execution of a thread is disclosed. Preempting includes receiving an indication that a preemption of the thread is desired and context switching the thread out at a thread safe point in the event that a thread safe point is reached.