# US 10,768,982 B2 · Engine for reactive execution of massively concurrent heterogeneous accelerated scripted streaming analyses

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

- Number: US 10,768,982 B2
- Document ID: US10768982B2
- Status: Granted
- Kind: B2
- Application number: 16/135,802
- Filed: 2018-09-19
- Published: 2020-03-19
- Granted: 2020-09-08
- Earliest claimed: 2018-09-19
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Andrew Brownsword; Tayler Hetherington; Pavan Chandrashekar; Akhilesh Singhania; Stuart Wray; Pravin Shinde; Felix Schmidt; Craig Schelp; Onur Kocberber; Juan Fernandez Peinador; Rod Reddekopp; Manel Fernandez Gomez; Nipun Agarwal
- Web page: https://patentgrep.com/patent/US10768982B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/3877: {using a secondary processor, e.g. coprocessor (peripheral processor G06F13/12)}
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 11/1438: {Restarting or rejuvenating}
- G06F 11/1484: {involving virtual machines}
- G06F 11/301: {where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077)}
- G06F 11/3037: {where the computing system component is a memory, e.g. virtual memory, cache (accessing, addressing or allocating within memory systems or architectures G06F12/00; checking stores for correct operation G11C29/00)}
- G06F 11/3409: {for performance assessment}
- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 16/1805: {Append-only file systems, e.g. using logs or journals to store data}
- G06F 16/24568: {Data stream processing; Continuous queries}
- G06N 3/0499: Feedforward networks
- G06N 20/00: Machine learning
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06N 3/08: Learning methods
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Herein are techniques for analysis of data streams. In an embodiment, a computer associates each software actor with data streams. Each software actor has its own backlog queue of data to analyze. In response to receiving some stream content and based on the received stream content, data is distributed to some software actors. In response to determining that the data satisfies completeness criteria of a particular software actor, an indication of the data is appended onto the backlog queue of the particular software actor. The particular software actor is reset to an initial state by loading an execution snapshot of a previous initial execution of an embedded virtual machine. Based on the particular software actor, execution of the execution snapshot of the previous initial execution is resumed to dequeue and process the indication of the data from the backlog queue of the particular software actor to generate a result.

## Claims

### Claim 1

A method comprising:
associating a particular software actor with one or more data streams, wherein said particular software actor comprises a backlog queue;
responsive to receiving content in a subset of said one or more data streams, distributing data based on said content to the particular software actor;
in response to determining that said data satisfies completeness criteria of the particular software actor, appending an indication of said data onto said backlog queue of said particular software actor;
resetting, to an initial state, said particular software actor by loading, into computer memory, an execution snapshot of a previous initial execution of an embedded virtual machine;
resuming, based on said particular software actor, execution of said execution snapshot of said previous initial execution to dequeue and process said indication of said data from said backlog queue of the particular software actor to generate a result.

### Claim 2 (depends on 1)

The method of claim 1 wherein:
said particular software actor is composed in a particular programming language;
said execution snapshot comprises application data that populates a data aggregation structure that is predefined by said particular programming language.

### Claim 3 (depends on 2)

The method of claim 2 wherein said data aggregation structure comprises an associative array.

### Claim 4 (depends on 2)

The method of claim 2 wherein said indication of said data comprises one or more references to one or more instances of said data aggregation structure.

### Claim 5 (depends on 4)

The method of claim 4 wherein said generate said result comprises generate a modified copy of a particular instance of said one or more instances of said data aggregation structure.

### Claim 6 (depends on 4)

The method of claim 4 further comprising appending a second indication of a second data onto a backlog queue of a second software actor, wherein said second indication comprises second one or more references to said one or more instances of said data aggregation structure.

### Claim 7 (depends on 1)

The method of claim 1 further comprising said particular software actor appending a second indication of said result onto a backlog queue of a second software actor.

### Claim 8 (depends on 7)

The method of claim 7 wherein:
said result resides in memory after said generate said result;
said second indication comprises a reference to said result.

### Claim 9 (depends on 8)

The method of claim 8 wherein said result resides in memory comprises said result resides in non-volatile storage.

### Claim 10 (depends on 1)

The method of claim 1 wherein said loading said execution snapshot takes less time than a combined time to: a) load, from a codebase, said particular software actor, and b) initialize said particular software actor.

### Claim 11 (depends on 1)

The method of claim 1 further comprising:
tracking memory allocated during said previous initial execution of said particular software actor;
creating said execution snapshot based on said memory allocated.

### Claim 12 (depends on 11)

The method of claim 11 wherein:
said resuming said execution is caused by a computer program that is composed in a first programming language that comprises a first memory manager;
said particular software actor is composed in a second programming language that comprises said embedded virtual machine and a second memory manager;
said tracking memory allocated comprises:
tracking, by said second memory manager, memory that is allocated by said particular software actor; and
tracking, by said first memory manager, memory that is allocated by said embedded virtual machine.

### Claim 13 (depends on 1)

The method of claim 1 wherein a size of said execution snapshot of said particular software actor is less than two megabytes.

### Claim 14 (depends on 1)

The method of claim 1 wherein:
said loading said execution snapshot of said previous initial execution comprises loading multiple copies of said execution snapshot of said previous initial execution;
said resuming execution of said execution snapshot of said previous initial execution comprises selecting a copy from said multiple copies of said execution snapshot of said previous initial execution.

### Claim 15 (depends on 14)

The method of claim 14 wherein a count of said multiple copies of said execution snapshot of said previous initial execution depends on a count of available processing units.

### Claim 16 (depends on 1)

The method of claim 1 wherein said particular software actor comprises a machine learning algorithm.

### Claim 17 (depends on 1)

The method of claim 1 wherein a particular data stream of said one or more data streams originates from at least one network element of: a bridge, a switch, a router, a modem, or a firewall.

### Claim 18 (depends on 1)

The method of claim 1 wherein a particular data stream of said one or more data streams is based on a console log.

### Claim 19 (depends on 1)

The method of claim 1 wherein said particular software actor resides on a graphical processing unit (GPU).

### Claim 20 (depends on 1)

The method of claim 1 wherein:
said particular software actor is composed in a particular programming language that comprises garbage collection;
said generate said result occurs before said garbage collection is actually needed.

### Claim 21 (depends on 1)

The method of claim 1 wherein said particular software actor is composed in a particular programming language of: Lua, Forth, or Python.

### Claim 22 (depends on 1)

The method of claim 1 wherein said resuming execution of said execution snapshot comprises dequeuing and processing multiple indications from said backlog queue of the particular software actor.

### Claim 23 (depends on 1)

The method of claim 1 wherein said appending said indication of said data onto said backlog queue of said particular software actor comprises setting a bit that corresponds to said particular software actor in a dispatch bitmap.

### Claim 24 (depends on 23)

The method of claim 23 wherein said setting said bit comprises executing an atomic machine instruction.

### Claim 25 (depends on 1)

The method of claim 1 further comprising:
associating each software actor of a plurality of software actors that includes the particular software actor with the one or more data streams, wherein said each software actor comprises a respective backlog queue;
responsive to receiving content in said subset of said one or more data streams, distributing data based on said content to a subset of software actors of the plurality of software actors that are associated with said subset of said one or more data streams.

### Claim 26 (depends on 25)

The method of claim 25 wherein:
said resuming said execution is caused by a computer program that is composed in a first programming language;
said computer program and said plurality of software actors share a same address space;
said particular software actor is composed in a second programming language.

### Claim 27 (depends on 26)

The method of claim 26 wherein said second programming language comprises just in time compilation.

### Claim 28 (depends on 25)

The method of claim 25 wherein said resuming execution comprises scheduling said execution based on weighted fairness to said plurality of software actors.

### Claim 29 (depends on 25)

The method of claim 25 wherein said distributing data based on said content to said subset of software actors comprises storing said data in memory that is shared by said plurality of software actors.

### Claim 30 (depends on 29)

The method of claim 29 wherein:
storing said data in memory comprises storing a first portion of said data temporally before storing a second portion of said data;
the method further comprises discarding said second portion temporally before discarding said first portion.

### Claim 31 (depends on 25)

The method of claim 25 wherein:
said subset of software actors of the plurality of software actors comprises a second software actor;
said distributing data based on said content to said subset of software actors comprises:
distributing first data to said particular software actor, and distributing second data that is different than said first data to said second software actor.

### Claim 32 (depends on 25)

The method of claim 25 wherein:
said appending said indication of said data onto said backlog queue of said particular software actor comprises setting a bit that corresponds to said particular software actor in a dispatch bitmap;
said dispatch bitmap comprises a plurality of segments;
each segment of said plurality of segments comprises one or more bits that correspond to software actors of said plurality of software actors that share a same category of a plurality of categories.

### Claim 33 (depends on 32)

The method of claim 32 wherein said same category comprises one of: priority, type of software actor, or processor type.

### Claim 34 (depends on 32)

The method of claim 32 wherein said each segment resides in memory that is shared by a plurality of computational threads.

### Claim 35

One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:
associating a particular software actor with one or more data streams, wherein said particular software actor comprises a backlog queue;
responsive to receiving content in a subset of said one or more data streams, distributing data based on said content to the particular software actor;
in response to determining that said data satisfies completeness criteria of the particular software actor, appending an indication of said data onto said backlog queue of said particular software actor;
resetting, to an initial state, said particular software actor by loading, into computer memory, an execution snapshot of a previous initial execution of an embedded virtual machine;
resuming, based on said particular software actor, execution of said execution snapshot of said previous initial execution to dequeue and process said indication of said data from said backlog queue of the particular software actor to generate a result.

### Claim 36 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein:
said particular software actor is composed in a particular programming language;
said execution snapshot comprises application data in a data aggregation structure that is predefined in said particular programming language.

### Claim 37 (depends on 36)

The one or more non-transitory computer-readable media of claim 36 wherein said data aggregation structure comprises an associative array.

### Claim 38 (depends on 36)

The one or more non-transitory computer-readable media of claim 36 wherein said indication of said data comprises one or more references to one or more instances of said data aggregation structure.

### Claim 39 (depends on 38)

The one or more non-transitory computer-readable media of claim 38 wherein said generate said result comprises generate a modified copy of a particular instance of said one or more instances of said data aggregation structure.

### Claim 40 (depends on 38)

The one or more non-transitory computer-readable media of claim 38 wherein the instructions further cause appending a second indication of a second data onto a backlog queue of a second software actor, wherein said second indication comprises second one or more references to said one or more instances of said data aggregation structure.

### Claim 41 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein the instructions further cause said particular software actor appending a second indication of said result onto a backlog queue of a second software actor.

### Claim 42 (depends on 41)

The one or more non-transitory computer-readable media of claim 41 wherein:
said result resides in memory after said generate said result;
said second indication comprises a reference to said result.

### Claim 43 (depends on 42)

The one or more non-transitory computer-readable media of claim 42 wherein said result resides in memory comprises said result resides in non-volatile storage.

### Claim 44 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said loading said execution snapshot takes less time than a combined time to: a) load, from a codebase, said particular software actor, and b) initialize said particular software actor.

### Claim 45 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein the instructions further cause:
tracking memory allocated during said previous initial execution of said particular software actor;
creating said execution snapshot based on said memory allocated.

### Claim 46 (depends on 45)

The one or more non-transitory computer-readable media of claim 45 wherein:
said resuming said execution is caused by a computer program that is composed in a first programming language that comprises a first memory manager;
said particular software actor is composed in a second programming language that comprises said embedded virtual machine and a second memory manager;
said tracking memory allocated comprises:
tracking, by said second memory manager, memory that is allocated by said particular software actor; and
tracking, by said first memory manager, memory that is allocated by said embedded virtual machine.

### Claim 47 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein a size of said execution snapshot of said particular software actor is less than two megabytes.

### Claim 48 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein:
said loading said execution snapshot of said previous initial execution comprises loading multiple copies of said execution snapshot of said previous initial execution;
said resuming execution of said execution snapshot of said previous initial execution comprises selecting a copy from said multiple copies of said execution snapshot of said previous initial execution.

### Claim 49 (depends on 48)

The one or more non-transitory computer-readable media of claim 48 wherein a count of said multiple copies of said execution snapshot of said previous initial execution depends on a count of available processing units.

### Claim 50 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said particular software actor comprises a machine learning algorithm.

### Claim 51 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein a particular data stream of said one or more data streams originates from at least one network element of: a bridge, a switch, a router, a modem, or a firewall.

### Claim 52 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein a particular data stream of said one or more data streams is based on a console log.

### Claim 53 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said particular software actor resides on a graphical processing unit (GPU).

### Claim 54 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein:
said particular software actor is composed in a particular programming language that comprises garbage collection;
said generate said result occurs before said garbage collection is actually needed.

### Claim 55 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said particular software actor is composed in a particular programming language of:
Lua, Forth, or Python.

### Claim 56 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said resuming execution of said execution snapshot comprises dequeuing and processing multiple indications from said backlog queue of the particular software actor.

### Claim 57 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein said appending said indication of said data onto said backlog queue of said particular software actor comprises setting a bit that corresponds to said particular software actor in a dispatch bitmap.

### Claim 58 (depends on 57)

The one or more non-transitory computer-readable media of claim 57 wherein said setting said bit comprises executing an atomic machine instruction.

### Claim 59 (depends on 35)

The one or more non-transitory computer-readable media of claim 35 wherein the instructions further cause:
associating each software actor of a plurality of software actors that includes the particular software actor with the one or more data streams, wherein said each software actor comprises a respective backlog queue;
responsive to receiving content in said subset of said one or more data streams, distributing data based on said content to a subset of software actors of the plurality of software actors that are associated with said subset of said one or more data streams.

### Claim 60 (depends on 59)

The one or more non-transitory computer-readable media of claim 59 wherein:
said subset of software actors of the plurality of software actors comprises a second software actor;
said distributing data based on said content to said subset of software actors comprises:
distributing first data to said particular software actor, and distributing second data that is different than said first data to said second software actor.

### Claim 61 (depends on 59)

The one or more non-transitory computer-readable media of claim 59 wherein said distributing data based on said content to said subset of software actors comprises storing said data in memory that is shared by said plurality of software actors.

### Claim 62 (depends on 61)

The one or more non-transitory computer-readable media of claim 61 wherein:
storing said data in memory comprises storing a first portion of said data temporally before storing a second portion of said data;
the instructions further cause discarding said second portion temporally before discarding said first portion.

### Claim 63 (depends on 58)

The one or more non-transitory computer-readable media of claim 58 wherein said resuming execution comprises scheduling said execution based on weighted fairness to said plurality of software actors.

### Claim 64 (depends on 59)

The one or more non-transitory computer-readable media of claim 59 wherein:
said appending said indication of said data onto said backlog queue of said particular software actor comprises setting a bit that corresponds to said particular software actor in a dispatch bitmap;
said dispatch bitmap comprises a plurality of segments;
each segment of said plurality of segments comprises one or more bits that correspond to software actors of said plurality of software actors that share a same category of a plurality of categories.

### Claim 65 (depends on 64)

The one or more non-transitory computer-readable media of claim 64 wherein said same category comprises one of: priority, type of software actor, or processor type.

### Claim 66 (depends on 64)

The one or more non-transitory computer-readable media of claim 64 wherein said each segment resides in memory that is shared by a plurality of computational threads.

### Claim 67 (depends on 59)

The one or more non-transitory computer-readable media of claim 59 wherein:
said resuming said execution is caused by a computer program that is composed in a first programming language;
said computer program and said plurality of software actors share a same address space;
said particular software actor is composed in a second programming language.

### Claim 68 (depends on 67)

The one or more non-transitory computer-readable media of claim 67 wherein said second programming language comprises just in time compilation.
