Distributed Software Verification Scheduler with Dynamic Load Balancing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional software testing methods lack the ability to uncover hard, corner-case bugs, and existing formal verification techniques require inefficient load balancing to achieve linear speeds in parallelization across multiple computer entities.
Innovation Solution
A distributed computing system with a scheduler node and worker nodes that utilize intelligent and dynamic load balancing by accessing job and resource queues to assign tasks based on job characteristics, minimizing communication and optimizing resource utilization through job availability, resource availability, and scheduling policies.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If conventional software testing methods are used, then the testing process is simple and fast, but the ability to uncover hard, corner-case bugs is insufficient
Solution Approach 1:
The patent divides the software verification task into multiple independent jobs that can be distributed across multiple worker nodes. Each job represents a portion of code to be verified, allowing the system to handle complex verification tasks by segmenting them into manageable units that can be processed in parallel across distributed computing entities.
Solution Approach 2:
The patent introduces a distributed computing dimension to software verification by implementing a scheduler node that coordinates worker nodes across multiple computing entities. This adds a temporal and spatial dimension to the verification process, enabling parallel execution of verification jobs across different computing resources while maintaining coordination through job queues and resource allocation mechanisms.
2Reliability
If formal verification techniques are applied, then the ability to uncover hard, corner-case bugs improves, but the parallelization speed efficiency deteriorates without intelligent load balancing
Solution Approach 1:
The patent implements dynamic load balancing by continuously monitoring job queues and resource availability across worker nodes. The scheduler dynamically assigns jobs to resources based on real-time conditions, adjusting the distribution of computational tasks to optimize parallelization efficiency. This dynamic approach ensures that verification work is distributed optimally across available computing resources, achieving near-linear speedups.
Solution Approach 2:
The patent employs feedback mechanisms where worker nodes report their status and job completion information back to the scheduler node. This feedback loop enables the scheduler to make informed decisions about job assignment, resource allocation, and load balancing strategies, optimizing the parallel verification process based on actual execution conditions and performance metrics.
3Productivity
If distributed computing is used for software verification, then parallelization capability improves, but system complexity increases due to job queues and resource coordination
Solution Approach 1:
The patent designs a universal scheduler node that handles multiple functions including job management, resource allocation, load balancing, and coordination across worker nodes. This multi-functional scheduler consolidates complex coordination logic into a single centralized component, simplifying the overall system architecture while enabling efficient distributed verification across multiple computing entities.
Solution Approach 2:
The patent introduces job queues and resource queues as intermediary structures between the scheduler node and worker nodes. These queues act as buffers and mediators that decouple the scheduling decisions from actual job execution, simplifying the interaction between components. The job queue manages task distribution while the resource queue tracks available computing entities, streamlining the coordination process and reducing direct system complexity.
Data Source
AI summary
A method for verifying software includes accessing a job queue, accessing a resource queue, and assigning a job from the job queue to a resource from the resource queue if an addition is made to the a job queue or to a resource queue. The job queue includes an indication of one or more jobs to be executed by a worker node, each job indicating a portion of a code to be verified. The resource queue includes an indication of a one or more worker nodes available to verify a portion of software. The resource is selected by determining the best match for the characteristics of the selected job among the resources in the resource queue.


