Dynamic Load Balancing for Parallel Software Verification
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
3Productivity
If multiple worker nodes are assigned to verify code portions, then verification speed increases, but resource management complexity increases
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.
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.
Data Source
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.


