Virtual Machine CPU Time Management via Isolate Suspension

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Safe language platforms, such as Java, lack control over resource management, particularly in virtual machine environments, leading to inefficiencies in CPU time allocation and potential denial of service attacks, as they rely on kernel thread schedulers for multithreading and thread priorities.

Innovation Solution

A method to manage CPU time consumption by tracking per-polling period CPU usage, computing usage rates, and suspending isolates if they exceed specified rates, allowing for smoother CPU distribution and preventing overuse.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If the operating system manages resources at the kernel level, then resource management functionality is provided, but the virtual machine loses control over resource allocation

Engineering Contradiction:
Improveresource management functionalityVSAvoidvirtual machine control over resources
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The virtual machine introduces an intermediary layer between the operating system kernel and the applications. This intermediary manages CPU time allocation at the virtual machine level by tracking isolate CPU usage across polling periods and enforcing CPU time limits, thereby maintaining virtual machine control while utilizing operating system resources

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system segments CPU time management by creating isolates with distinct CPU time quotas. Each isolate is allocated a specific portion of CPU time (e.g., 20% for the first isolate, 80% for the second), and the virtual machine tracks and enforces these segments independently, preventing any single isolate from consuming all resources

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If kernel thread schedulers are used for multithreading, then thread management is simplified, but CPU time cannot be partitioned among isolates

Engineering Contradiction:
Improvethread managementVSAvoidCPU time partitioning capability
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The system dynamically adjusts CPU time allocation by monitoring isolate performance across multiple polling periods. The virtual machine computes usage rates based on historical data and can suspend isolates that exceed their allocated CPU time, enabling adaptive resource distribution that responds to actual usage patterns while maintaining the simplified kernel thread scheduling interface

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If applications execute without CPU time limits, then application flexibility is maintained, but denial of service attacks become possible

Engineering Contradiction:
Improveapplication execution flexibilityVSAvoiddenial of service attacks
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The virtual machine performs preliminary action by pre-allocating CPU time quotas to each isolate before execution begins. The system continuously monitors CPU usage against these pre-established limits and suspends isolates that exceed their allocations, preventing denial of service attacks while allowing applications to execute freely within their assigned resource boundaries

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7698705B1Method and system for managing CPU time consumption
Publication Date: 2010.04.13 ORACLE AMERICAN INC
  • US7698705B1 patent drawing
  • US7698705B1 patent drawing
  • US7698705B1 patent drawing

AI summary

A method for managing CPU time consumption, involving obtaining a per-polling period CPU consumption time associated with an isolate executing on a virtual machine for each of a plurality of polling periods, computing a usage rate for the isolate over a usage period using the per-polling period CPU consumption time associated with each of the plurality of polling periods within the usage period, comparing the usage rate to a specified rate associated with the isolate, and suspending the isolate in the virtual machine if the usage rate exceeds the specified rate.