Dynamic Thread Allocation Using Historical Data

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for providing threads to applications performing multi-tasking often result in suboptimal thread allocation, leading to increased response times or unnecessary overhead due to either insufficient or excessive thread creation and termination.

Innovation Solution

A method that utilizes historical data to determine the optimal number of threads required by an application at any given time, adjusting thread allocation dynamically based on past usage patterns and current demand to ensure efficient resource utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If more threads are initiated to handle future task requirements, then response time to service requests is minimized, but overhead in creation and termination of threads increases along with memory overhead

Engineering Contradiction:
Improveresponse timeVSAvoidoverhead
Core Design Contradiction:
Loss of timeVSLoss of energy

Solution Approach 1:

The patent applies dynamics by transitioning from a static thread configuration to a dynamic one. The system continuously monitors historical thread usage data and adjusts the number of threads allocated to applications in real-time based on actual demand patterns, allowing the thread pool size to adapt flexibly rather than remaining fixed

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements feedback mechanisms by collecting and analyzing historical data about thread usage patterns, application performance, and task completion rates. This feedback information is used to optimize future thread allocation decisions, creating a closed-loop system that learns from past performance to make smarter resource allocation

Inventive Principle:
Principle #23Feedback

2Loss of energy

If fewer threads are provided to applications, then overhead in creation and termination is reduced, but response times degrade due to thread initiation delays or waiting for thread freedom

Engineering Contradiction:
ImproveoverheadVSAvoidresponse time
Core Design Contradiction:
Loss of energyVSLoss of time

Solution Approach 1:

The patent applies preliminary action by proactively analyzing historical usage patterns to predict future thread demands before they occur. The system pre-allocates threads based on predicted needs rather than reacting to actual demand after it arises, ensuring threads are ready when needed without excessive over-provisioning

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system dynamically adjusts thread allocation based on real-time conditions and historical patterns, allowing the number of threads to increase or decrease flexibly rather than maintaining a fixed number, thus avoiding both shortages and excesses

Inventive Principle:
Principle #15Dynamics

3Device complexity

If a static configuration is used to determine thread number, then device complexity is reduced, but adaptability to different time requirements is lost

Engineering Contradiction:
Improveconfiguration complexityVSAvoidadaptability to time requirements
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent transforms static configuration into dynamic adaptation by continuously monitoring application performance and usage patterns. The thread allocation parameters are automatically adjusted based on historical data without requiring manual reconfiguration, enabling the system to adapt to changing workload characteristics over time

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system performs self-optimization by automatically analyzing its own operational data and adjusting thread allocation without external intervention. The monitoring and optimization mechanisms are self-contained, allowing the system to learn from its own performance history and make autonomous decisions about resource allocation

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7681196B2Providing optimal number of threads to applications performing multi-tasking using threads
Publication Date: 2010.03.16 ORACLE INT CORP
  • US7681196B2 patent drawing
  • US7681196B2 patent drawing
  • US7681196B2 patent drawing

AI summary

In an environment in which applications perform multi-tasking by using threads, the optimum number of threads to be provided to an application is determined based on historical data. Due to the use of the historical data, optimum number of threads can be accurately determined, leading to better response times for service requests, without creating unneeded overhead on system processing the service requests. In one embodiment, various status information (of potentially several prior weeks) such as number of tasks received and pending, system resources status (e.g. idle processor time and aggregate memory usage in the system), is maintained. In addition, a table may be maintained to indicate the optimum number of threads for a given combination of status information values. Thus, based on the expected status scenario, the optimum number of threads can be determined and provided at various points of time.