# US 2017/0286178 A1 · Workload balancing for storlet infrastructure

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

- Number: US 2017/0286178 A1
- Document ID: US20170286178A1
- Status: Published application
- Kind: A1
- Application number: 15/087,533
- Filed: 2016-03-31
- Published: 2017-10-05
- Earliest claimed: 2016-03-31
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Brijesh Chougule; Sasikanth Eda; Deepak R. Ghuge; Sandeep R. Patil; Sanjay K. Sudam
- Web page: https://patentgrep.com/patent/US20170286178A1

## CPC

- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/48: Program initiating; Program switching, e.g. by interrupt
- G06F 9/4806: {Task transfer initiation or dispatching}
- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/4856: {resumption being on a different machine, e.g. task migration, virtual machine migration (G06F9/5088 takes precedence)}
- G06F 9/4875: {with migration policy, e.g. auction, contract negotiation}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5005: {to service a request}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5055: {considering software capabilities, i.e. software resources associated or available to the machine}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 9/5088: {involving task migration}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2209/501: Performance criteria
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A first storlet engine is monitored for a first computational algorithm. The storlet engine includes a lookup table including a first characteristic of one or more nodes, a parser unit, and a resource availability monitor. The first computational algorithm is parsed into an abstract syntax tree using a parser unit. A first category of the first computational algorithm is determined by analyzing the abstract syntax tree. A first node of the lookup table with the first characteristic matching the first category for processing the first computational algorithm is identified based on the first category of the computational algorithm. The first computational algorithm is sent to the first node for processing.

## Claims

### Claim 1

A method comprising:
monitoring a first storlet engine for a first computational algorithm, wherein the storlet engine includes:
a lookup table including characteristics of one or more nodes,
a parser unit configured to break down computational algorithms, and
a resource availability monitor configured to monitor a workload of the one or more nodes;
parsing, using the parser unit, the first computational algorithm into an abstract syntax tree;
determining, by analyzing the abstract syntax tree, a first category of the first computational algorithm;
identifying, based on the first category of the computational algorithm, a first node of the lookup table with a first characteristic matching the first category for processing the first computational algorithm; and
sending the first computational algorithm to the first node for processing.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining an availability of the first node for processing the first computational algorithm; and
sending, in response to the first node not being available, the first computational algorithm to a second node of the one or more nodes.

### Claim 3 (depends on 2)

The method of claim 2, wherein sending the first computational algorithm to the second node of the one or more nodes further comprises:
determining that the workload of the first node is not available for processing the first computational algorithm;
pausing the processing of the first computational algorithm as a wait time;
setting a time threshold for the wait time of the first computational algorithm; and
sending, in response the first computational algorithm reaching the time threshold, the first computational algorithm to the second node of the one or more nodes.

### Claim 4 (depends on 3)

The method of claim 3, wherein the second node is selected based on a determination of a maximum data required for fulfilling the first computational algorithm.

### Claim 5 (depends on 3)

The method of claim 3, wherein the second node is selected based on a determination that the second node contains available hardware resources.

### Claim 6 (depends on 3)

The method of claim 3, further comprising:
determining that the wait time of the first computational algorithm has not reached the wait time threshold;
determining that the first node is available for processing the first computational algorithm; and
sending, in response the first node being available, the first computational algorithm to the first node.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving an indication from a user defining an indicated category of the first computational algorithm; and
replacing the first category of the computational algorithm with the indicated category of the first computational algorithm.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first node is a proxy node in communication with one or more storage nodes.

### Claim 9 (depends on 8)

The method of claim 8, wherein the proxy node accesses one or more storage nodes for processing the computational algorithm.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
storing the characteristics of the one or more nodes on a lookup table, the lookup table including a computation operation, a category, a node architecture, and performance evaluation reports of the node.

### Claim 11

A system, comprising:
a memory;
a processor device communicatively coupled to the memory;
a parser unit configured to:
parse a first computational algorithm into an abstract syntax tree;
a proxy node communicatively coupled to the processor device and the memory wherein the proxy node includes a first storlet engine, and the proxy node is configured to:
monitor the first storlet engine for the first computational algorithm, where the storlet engine includes:
a lookup table including characteristics of one or more nodes,
a parser unit configured to break down computational algorithms, and
a resource availability monitor configured to monitor a workload of the one or more nodes;
determine, by analyzing the abstract syntax tree, a first category of the first computational algorithm;
identify, based on the first category of the computational algorithm, a first node of the lookup table with a first characteristic matching the first category for processing the first computational algorithm; and
send the first computational algorithm to the first node.

### Claim 12 (depends on 11)

The system of claim 11, wherein the storlet engine of the proxy node is further configured to:
determine an availability of the first node for processing the first computational algorithm; and
send, in response to the first node not being available, the first computational algorithm to a second node of the one or more node.

### Claim 13 (depends on 12)

The system of claim 12, wherein the storlet engine of the proxy node is further configured to:
determine that the workload of the first node is not available for processing the first computational algorithm;
pause the processing of the first computational algorithm as a wait time;
set a time threshold for the wait time of the first computational algorithm; and
send, in response the first computational algorithm reaching the time threshold, the first computational algorithm to the second node of the one or more nodes.

### Claim 14 (depends on 13)

The system of claim 13, wherein the second node is selected based on a determination of a maximum data required for fulfilling the first computational algorithm.

### Claim 15 (depends on 13)

The system of claim 13, wherein the second node is selected based on a determination that the second node contains available hardware resources.

### Claim 16

A computer program product for selecting a first node for processing a computational algorithm within a storage environment, the storage environment comprising a computer readable storage medium having a computer readable application stored therein, wherein the computer readable application, when executed on a computing device, causes the computing device to:
monitor a first storlet engine for a first computational algorithm, where the storlet engine includes:
a lookup table including characteristics of one or more nodes,
a parser unit configured to break down computational algorithms, and
a resource availability monitor configured to monitor a workload of the one or more nodes;
parse, using the parser unit, the first computational algorithm into an abstract syntax tree;
determine, by analyzing the abstract syntax tree, a first category of the first computational algorithm;
identify, based on the first category of the computational algorithm, a first node of the lookup table with a first characteristic matching the first category for processing the first computational algorithm; and
send the first computational algorithm to the first node.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the computing device is further configured to:
determine an availability of the first node for processing the first computational algorithm; and
send, in response to the first node not being available, the first computational algorithm to a second node of the one or more node.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the computing device is further configured to:
determine that the workload of the first node is not available for processing the first computational algorithm;
pause the processing of the first computational algorithm as a wait time;
set a time threshold for the wait time of the first computational algorithm; and
send, in response the first computational algorithm reaching the time threshold, the first computational algorithm to the second node of the one or more nodes.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein the second node is selected based on a determination of a maximum data required for fulfilling the first computational algorithm.

### Claim 20 (depends on 18)

The computer program product of claim 18, wherein the second node is selected based on a determination that the second node contains available hardware resources.
