Dynamic Load Balancing for Parallel Software Verification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional software testing methods lack the ability to uncover hard, corner-case bugs, and existing formal methods for software verification, such as symbolic execution, require efficient parallelization across multiple computer entities to achieve linear speeds, which is hindered by ineffective load balancing.

Innovation Solution

A distributed computing system with a scheduler node and worker nodes that dynamically and intelligently balance the execution of jobs by monitoring resource and job queues, applying scheduling policies to select the best worker node for each job, and managing job creation and termination to optimize parallel processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If symbolic execution is parallelized across multiple computer entities, then the speed of software verification is improved, but effective load balancing becomes difficult to achieve

Engineering Contradiction:
Improvespeed of software verificationVSAvoidload balancing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the software verification workload into discrete verification jobs that can be independently assigned to different worker nodes. Each job represents a segment of the verification task, allowing the system to parallelize across multiple computer entities while managing complexity through structured job management.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The scheduler dynamically adjusts load distribution by monitoring resource queues and job queues in real-time. The system adapts its scheduling decisions based on current system state, dynamically assigning jobs to worker nodes to maintain effective load balancing while achieving linear speeds through parallelization.

Inventive Principle:
Principle #15Dynamics

2Ease of operation

If conventional software testing methods are used, then the testing process is simple, but the ability to uncover hard, corner-case bugs is limited

Engineering Contradiction:
Improvesimplicity of testing processVSAvoidability to uncover bugs
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent replaces conventional mechanical testing approaches with formal methods including symbolic execution. This substitution enables the system to uncover hard, corner-case bugs that conventional testing misses, while the automated nature of the system maintains operational simplicity through script-based verification processes.

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

3Productivity

If multiple worker nodes are assigned to verify code portions, then verification speed increases, but resource management complexity increases

Engineering Contradiction:
Improveverification speedVSAvoidresource management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The worker nodes autonomously execute verification jobs and report status without requiring continuous manual intervention. The system manages resource allocation through automated scheduling policies, reducing the operational burden on users while maintaining high verification speed through parallel processing.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The scheduler continuously monitors resource queues and job queues to adjust assignments in real-time. This feedback mechanism enables the system to respond to changing workload conditions and maintain optimal resource utilization across worker nodes, managing complexity through automated adaptive control.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS8763001B2Technique for efficient parallelization of software analysis in a distributed computing environment through intelligent dynamic load balancing
Publication Date: 2014.06.24 FUJITSU LTD
  • US8763001B2 patent drawing
  • US8763001B2 patent drawing
  • US8763001B2 patent drawing

AI summary

A method for verifying software includes monitoring a resource queue and a job queue, determining whether the resource queue and the job queue contain entries, and if both the resource queue and the job queue contain entries, then applying a scheduling policy to select a job, selecting a worker node as a best match for the characteristics of the job among the resource queue entries, assigning the job to the worker node, assigning parameters to the worker node for a job creation policy for creating new jobs in the job queue while executing the job, and assigning parameters to the worker node for a termination policy for halting execution of the job. The resource queue indicates worker nodes available to verify a portion of code. The job queue indicates one or more jobs to be executed by a worker node. A job includes a portion of code to be verified.