Association-Aware Executor Service Thread Pool Saturation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed computing environments, conventional executor services inefficiently manage thread pools, leading to thread saturation and performance degradation due to unassociated tasks competing for shared resources, resulting in idle threads and backlog of work requests.

Innovation Solution

An association-aware executor service groups tasks associated with the same key or resource, ensuring only one thread is consumed by each group, with tasks waiting for the prior task to complete before being assigned, thereby preventing thread pool saturation and improving thread utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional executor services allow multiple threads to process tasks simultaneously from a shared pool, then task throughput is improved, but thread saturation and performance degradation occur due to unassociated tasks competing for shared resources

Engineering Contradiction:
Improvetask throughputVSAvoidsystem performance stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the thread pool into multiple key-specific sub-pools, where each sub-pool is dedicated to processing tasks associated with a particular key. This segmentation prevents unassociated tasks from competing for the same threads, eliminating thread saturation while maintaining high throughput through parallel processing across different key sub-pools.

Inventive Principle:
Principle #1Segmentation

2Speed

If tasks are queued on multiple threads in parallel, then processing speed is improved, but thread utilization deteriorates due to idle threads waiting for associated tasks

Engineering Contradiction:
Improveprocessing speedVSAvoidthread utilization
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

The patent merges tasks associated with the same key into a single queued structure, ensuring that only one thread from the key-specific sub-pool processes these tasks at a time. This merging eliminates idle threads waiting for associated tasks while maintaining fast processing through parallel execution across different key groups.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If an association-aware queueing mechanism is implemented to group tasks by key, then thread utilization is improved, but system complexity increases due to additional grouping and queue management logic

Engineering Contradiction:
Improvethread utilizationVSAvoidqueue management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary association-aware queueing mechanism that sits between task submission and thread execution. This intermediary automatically groups tasks by key and routes them to appropriate key-specific sub-pools, managing the complexity of association tracking while improving thread utilization through intelligent task distribution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10860378B2System and method for association aware executor service in a distributed computing environment
Publication Date: 2020.12.08 ORACLE INT CORP
  • US10860378B2 patent drawing
  • US10860378B2 patent drawing
  • US10860378B2 patent drawing

AI summary

A system and method for supporting an association-aware executor service in a distributed computing environment comprising. The system can provide an executor service associated with a thread pool, the thread pool containing a plurality of threads. The system can receive, at the executor service, a plurality of work requests, each work request being associated with a key of a plurality of keys. The system can define groups of work requests, each group of work requests comprising one or more work requests having a same key. The system can queue, on the plurality of threads in the thread pool, the groups of work requests, each group of work requests being queued on a different thread. All work requests in a particular group are executed on the same thread.