# US 10,768,917 B2 · Dynamic deployment placement of processing elements in a streaming data system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,768,917 B2
- Document ID: US10768917B2
- Status: Granted
- Kind: B2
- Application number: 16/222,665
- Filed: 2018-12-17
- Published: 2020-06-18
- Granted: 2020-09-08
- Earliest claimed: 2018-12-17
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: John M. Santosuosso; Eric L. Barsness; Daniel Beuch; Michael J. Branson
- Web page: https://patentgrep.com/patent/US10768917B2

## CPC

- G06F 8/451: {Code distribution (considering CPU load at run-time G06F9/505; load rebalancing G06F9/5083)}
- G06F 8/60: Software deployment
- G06F 9/5072: {Grid computing}
- G06F 11/3495: {for systems}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/52: specially adapted for the location of the user terminal
- G06F 11/3409: {for performance assessment}
- G06F 11/3419: {by assessing time}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems, methods, and articles of manufacture are disclosed for processing element (PE) deployment placement in a streaming data system. In particular, PEs of a stream computing application are grouped across compute nodes in a dynamic manner that improves over manually specified groupings of PEs on particular compute nodes. A stream manager deploys PEs according to rules in deployment instructions specifying whether to collocate PEs on a single compute node and/or ex-collocate PEs across compute nodes based on dynamically-determined information relating to the PEs themselves, compute nodes on which PEs are to run, and/or the streams runtime. For example, the stream manager may profile code and deploy PEs on compute nodes based on such profiling, deploy PEs together on compute nodes meeting predefined system characteristics or streams runtime conditions or metrics, and/or deploy PEs on a compute node within a predefined proximity of an external source.

## Claims

### Claim 1

A computer-implemented method for deploying a stream computing application including a plurality of processing elements, the computer-implemented method comprising:
profiling an execution of the plurality of processing elements of the stream computing application in a test environment to determine a class loaded for each of the plurality of processing elements, the stream computing application having an operator graph that specifies a flow of data tuples among the plurality of processing elements;
determining at least one of a runtime metric of each of the plurality of processing elements and a system characteristic of each of a plurality of compute nodes;
determining a network proximity of each of the plurality of compute nodes to a data source external to the stream computing application;
determining, by operation of one or more computer processors, a plurality of groupings of the plurality of processing elements on the plurality of compute nodes based on at least three criteria selected from the class loaded, the runtime metric, the system characteristic, and the network proximity; and
subsequent to deploying the plurality of processing elements to the plurality of compute nodes for execution based on the plurality of groupings, redeploying the at least one processing element to a different compute node upon determining that at least one criterion has changed.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the plurality of groupings minimize loading of at least one class on different compute nodes.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the profiling includes executing code associated with the plurality of processing elements in the test environment and determining the class during the executing of the code.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the plurality of groupings includes a grouping of processing elements associated with relatively high, or relatively low, cycles per instruction on one of the plurality of compute nodes.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the profiling includes executing code associated with the plurality of processing elements in the test environment and determining cycles per instruction associated with the plurality of processing elements during the executing of the code.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the plurality of groupings is determined based on one or more rules specified in instructions, wherein the instructions are generated based at least in part on one or more lines of a source code or a configuration file.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising:
determining that the at least one criterion that has changed no longer satisfies at least one condition in the one or more rules up to one or more associated thresholds of tolerance.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein each of the plurality of groupings is a collocation of multiple processing elements on one of the plurality of compute nodes or a fusing of multiple processing elements into a single processing element.

### Claim 9

A non-transitory computer-readable medium storing a program executable to perform operations for deploying a stream computing application including a plurality of processing elements, the operations comprising:
profiling an execution of the plurality of processing elements of the stream computing application in a test environment to determine a class loaded for each of the plurality of processing elements, the stream computing application having an operator graph that specifies a flow of data tuples among the plurality of processing elements;
determining at least one of a runtime metric of each of the plurality of processing elements and a system characteristic of each of a plurality of compute nodes;
determining a network proximity of each of the plurality of compute nodes to a data source external to the stream computing application;
determining, by one or more computer processors when executing the program, a plurality of groupings of the plurality of processing elements on the plurality of compute nodes based on at least three criteria selected from the class loaded, the runtime metric, the system characteristic, and the network proximity; and
subsequent to deploying the plurality of processing elements to the plurality of compute nodes for execution based on the plurality of groupings, redeploying the at least one processing element to a different compute node upon determining that at least one criterion has changed.

### Claim 10 (depends on 9)

The non-transitory computer-readable medium of claim 9, wherein the plurality of groupings minimize loading of at least one class on different compute nodes;
wherein the profiling includes executing code associated with the plurality of processing elements in the test environment and determining the class during the executing of the code.

### Claim 11 (depends on 9)

The non-transitory computer-readable medium of claim 9, wherein the plurality of groupings includes a grouping of processing elements associated with relatively high, or relatively low, cycles per instruction on one of the plurality of compute nodes;
wherein the profiling includes executing code associated with the plurality of processing elements in the test environment and determining cycles per instruction associated with the plurality of processing elements during the executing of the code.

### Claim 12 (depends on 9)

The non-transitory computer-readable medium of claim 9, wherein the plurality of groupings is determined based on one or more rules are specified in instructions, wherein the instructions are generated based at least in part on one or more lines of a source code or a configuration file.

### Claim 13 (depends on 9)

The non-transitory computer-readable medium of claim 9, the operations further comprising:
determining that the at least one criterion that has changed no longer satisfies at least one condition in the one or more rules up to one or more associated thresholds of tolerance.

### Claim 14 (depends on 9)

The non-transitory computer-readable medium of claim 9, wherein each of the plurality of groupings is a collocation of multiple processing elements on one of the plurality of compute nodes or a fusing of multiple processing elements into a single processing element.

### Claim 15

A computer-implemented method for deploying a stream computing application including a plurality of processing elements, the computer-implemented method comprising:
determining a class loaded for each of the plurality of compute nodes, the stream computing application having an operator graph that specifies a flow of data tuples among the plurality of processing elements;
determining at least one of a runtime metric of each of the plurality of processing elements and a system characteristic of each of a plurality of compute nodes;
determining a network proximity of each of the plurality of compute nodes to a data source external to the stream computing application;
determining, by operation of one or more computer processors, a plurality of groupings of the plurality of processing elements on the plurality of the compute nodes based on at least three criteria selected from the class loaded, the runtime metric, the system characteristic, and the network proximity; and
subsequent to deploying the plurality of processing elements to the plurality of compute nodes for execution based on the plurality of groupings, redeploying the at least one processing element to a different compute node upon determining that at least one criterion has changed.

### Claim 16 (depends on 15)

The computer-implemented method of claim 15, further comprising:
determining whether at least one of predefined hardware or software is installed on each of the plurality of compute nodes, wherein the at least one of predefined hardware or software includes at least one of a predefined number of processors, amount of memory, type of disk drives, number of disk arms, type of software, or version of software;
wherein the plurality of groupings includes a grouping of processing elements on one of the plurality of compute nodes on which the at least one of predefined hardware or software is installed.

### Claim 17 (depends on 16)

The computer-implemented method of claim 16, wherein the runtime metric comprises at least one of a predefined streams runtime condition and a predefined streams metric,
wherein the plurality of groupings of processing elements includes a grouping of processing elements on one of the plurality of compute nodes on which the runtime metric is satisfied.

### Claim 18 (depends on 17)

The computer-implemented method of claim 17, wherein the predefined streams runtime condition requires processors or a disk drive of a compute node to be less than a predefined percent busy, less than a predefined number of processing elements to be executing on a compute node, a compute node to run a predefined type of processing element, a compute node to utilize a predefined package, and a compute node to process less than a predefined number of tuples.

### Claim 19 (depends on 18)

The computer-implemented method of claim 18, wherein the predefined streams metric includes at least one of a tuple count or rate, a minimum memory usage by a tuple, a maximum memory usage by a tuple, a number of exceptions a tuple throws, a number of times a tuple is redeployed, a number of tuples that are filtered, and an amount of time used by a tuple.

### Claim 20 (depends on 19)

The computer-implemented method of claim 19, wherein
the plurality of groupings includes a grouping of processing elements on one of the plurality of compute nodes that is within the network proximity to the data source.
