Distributed Execution Graph Runtime Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel processing technologies face challenges in efficiently dividing programs across multiple processors without interference, as developers often lack knowledge of the execution engine's topology and performance variables, leading to suboptimal graph creation.

Innovation Solution

A high-performance distributed execution engine that allows developers to define a directed acyclic graph, with a job manager automatically modifying the graph at runtime based on topology and runtime information to optimize vertex distribution across nodes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a developer manually creates a graph for parallel processing, then the program can be divided into multiple fragments for concurrent execution, but the graph may not make efficient use of the execution engine because the developer is unaware of the topology and performance variables

Engineering Contradiction:
Improveparallel processing speedVSAvoidgraph optimization complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs self-optimization by automatically analyzing the graph and runtime environment to generate optimized execution plans without requiring developer expertise in system topology. The execution engine itself identifies optimization opportunities and applies transformations based on observed performance characteristics.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system incorporates runtime feedback mechanisms that monitor actual execution performance and use this information to dynamically adjust the graph execution plan. Performance metrics from runtime execution are fed back into the optimization process to continuously improve scheduling decisions.

Inventive Principle:
Principle #23Feedback

2Productivity

If the graph is modified at runtime to improve efficiency, then resource utilization is maximized and network traffic is minimized, but the system requires automated modification capabilities based on runtime information

Engineering Contradiction:
Improvesystem efficiencyVSAvoidautomated graph modification
Core Design Contradiction:
ProductivityVSExtent of automation

Solution Approach 1:

The graph execution plan is made dynamic rather than static, allowing automatic modifications at runtime based on changing system conditions. The system can reassign vertices to different nodes, adjust scheduling priorities, and modify execution paths in response to runtime observations without requiring system shutdown or manual intervention.

Inventive Principle:
Principle #15Dynamics

3Productivity

If vertices are distributed across multiple nodes, then parallel execution is achieved, but network traffic increases and resource coordination becomes more complex

Engineering Contradiction:
Improveconcurrent execution capabilityVSAvoidnetwork traffic
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The system optimizes the distribution of vertices to nodes based on local resource characteristics and data locality considerations. Vertices that communicate frequently are preferentially placed on the same or nearby nodes to minimize network traffic, while still maintaining parallel execution capabilities across the distributed system.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS7844959B2Runtime optimization of distributed execution graph
Publication Date: 2010.11.30 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7844959B2 patent drawing
  • US7844959B2 patent drawing
  • US7844959B2 patent drawing

AI summary

A general purpose high-performance distributed execution engine for coarse-grained data-parallel applications is proposed that allows developers to easily create large-scale distributed applications without requiring them to master concurrency techniques beyond being able to draw a graph of the data-dependencies of their algorithms. Based on the graph, a job manager intelligently distributes the work load so that the resources of the execution engine are used efficiently. During runtime, the job manager (or other entity) can automatically modify the graph to improve efficiency. The modifications are based on runtime information, topology of the distributed execution engine, and/or the distributed application represented by the graph.