# US 11,307,867 B2 · Optimizing the startup speed of a modular system using machine learning

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

- Number: US 11,307,867 B2
- Document ID: US11307867B2
- Status: Granted
- Kind: B2
- Application number: 16/537,809
- Filed: 2019-08-12
- Published: 2021-02-18
- Granted: 2022-04-19
- Earliest claimed: 2019-08-12
- Assignees: Adobe Inc.
- Applicants: Adobe Inc.
- Inventors: Nitika Agarwal; Carsten Ziegeler; Allaert Joachim David Bosschaert
- Web page: https://patentgrep.com/patent/US11307867B2

## CPC

- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06N 3/126: Evolutionary algorithms, e.g. genetic algorithms or genetic programming
- G06N 5/01: Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
- G06N 20/00: Machine learning
- G06F 9/4406: {Loading of operating system}
- 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

Systems and methods use machine learning to find an efficient startup sequence for the components of an application. An example method includes receiving the plurality of components of the modular system and a mechanism for launching the modular system and invoking a machine-learning ordering tool to generate at least one startup sequence. The at least one startup sequence may be returned with corresponding launch metrics. The method may also include determining, based on launch metrics for the at least one startup sequence, whether an efficient sequence has been identified. Responsive to the efficient sequence being identified, the operations can include returning the efficient startup sequence, wherein the modular system is launched using the efficient startup sequence. Responsive to failing to identify the efficient sequence, the operations can include repeating the invoking and determining.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, from a requesting process, information identifying a plurality of components of a modular system and information identifying a mechanism for launching the modular system;
generating a current population of startup sequences from the plurality of components, each startup sequence in the current population representing a different sequence of the plurality of components;
generating a respective launch metric for each startup sequence in the current population based on a launch of the modular system via the mechanism;
building a new population, the new population including a subset of the startup sequences in the current population and startup sequences generated from pairs of startup sequences in the current population;
determining a respective launch metric for each startup sequence in the new population;
determining whether the new population includes a particular startup sequence with a launch metric that satisfies an optimization criterion; and
responsive to determining the new population includes a launch metric satisfying the optimization criterion, returning the particular startup sequence to the requesting process.

### Claim 2 (depends on 1)

The method of claim 1, wherein the new population includes mutations of at least some of the subset of the startup sequences from the current population or mutations of at least some of the startup sequences generated from pairs of startup sequences in the current population.

### Claim 3 (depends on 1)

The method of claim 1, wherein the subset of the startup sequences make up a predetermined percentage of the new population and the startup sequences generated from pairs in the current population make up a remaining percentage of the new population, the predetermined percentage being smaller than the remaining percentage.

### Claim 4 (depends on 1)

The method of claim 1, wherein the startup sequences generated from pairs in the current population are generated by crossover between the pairs, each generated startup sequence being validated before being added to the new population.

### Claim 5 (depends on 4)

The method of claim 4, wherein a startup sequence is valid when it includes one reference to each component of the plurality of components.

### Claim 6 (depends on 1)

The method of claim 1, wherein the number of members in the current population is based on the number of components in the plurality of components.

### Claim 7 (depends on 1)

The method of claim 1, wherein the launch metric for a startup sequence includes information from which to determine a startup time for the startup sequence.

### Claim 8 (depends on 7)

The method of claim 7, wherein the launch metric further includes information from which to determine a ready time for each component, the ready time for a component representing a time at which the component is ready to process requests.

### Claim 9 (depends on 8)

The method of claim 8, wherein the startup sequences generated from pairs in the current population are generated by crossover between the pairs and each startup sequence generated from a pair is validated using the ready time before being added to the new population, wherein validation includes ensuring that a component with an earlier ready time appears ahead of a component with a later ready time in the startup sequence.

### Claim 10 (depends on 9)

The method of claim 9, wherein the method includes building a partial dependency graph based on the ready times and the startup sequences generated from pairs in the current population are validated using the partial dependency graph.

### Claim 11 (depends on 1)

The method of claim 1, wherein determining whether the new population includes the particular startup sequence includes determining whether a startup time for a most fit startup sequence in the current population is within a threshold of a startup time for the most fit startup sequence in the new population.

### Claim 12 (depends on 1)

The method of claim 1, wherein determining whether the new population includes the particular startup sequence includes determining whether a startup time for the most fit startup sequence in the new population satisfies a predetermined threshold.

### Claim 13

A computer program product for generating an efficient startup sequence for a plurality of components of modular system, the computer program product being tangibly embodied on a non-transitory computer-readable storage medium and comprising instructions that, when executed by at least one computing device, are configured to cause the at least one computing device to:
receive, from a requesting process, an indication of the plurality of components of the modular system and an indication of a mechanism for launching the modular system;
invoke a machine-learning ordering tool to generate at least one startup sequence, the at least one startup sequence being returned with corresponding launch metrics;
determine, based on launch metrics for the at least one startup sequence, whether an efficient startup sequence with a respective launch metric that satisfies an optimization criterion has been identified;
responsive to the efficient sequence being identified, return the efficient startup sequence, wherein the modular system is launched using the efficient startup sequence; and
responsive to failing to identify the efficient sequence, repeat the invoking and determining.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the launch metric includes a startup time for the modular system and, for each component, a ready time indicating when the component completed loading.

### Claim 15 (depends on 13)

The computer program product of claim 13, wherein the instructions are further configured to cause the at least one computing device to select the machine-learning ordering tool from a library of machine-learning ordering tools.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the library includes a genetic algorithm based ordering tool, a tree search based ordering tool or a neural network based ordering tool.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein the selection is based on a domain of the modular system.

### Claim 18

A method comprising:
receiving a plurality of components of a modular system, an initial startup sequence, and a mechanism for launching the modular system;
launching the modular system using the initial startup sequence to generate launch metrics;
generating a search tree based on domain knowledge, the initial startup sequence, and the launch metrics, each leaf of the search tree representing an individual startup sequence;
performing a heuristic search of the search tree to obtain a potential startup sequence;
determining whether the launch metric for the initial sequence is within a threshold of the launch metric for the potential startup sequence;
responsive to the launch metric being within the threshold, returning the potential startup sequence; and
responsive to the launch metric being outside the threshold, repeating the generating, performing, and determining using the potential startup sequence as the initial startup sequence.

### Claim 19 (depends on 18)

The method of claim 18, wherein the launch metric includes information from which a startup time for the modular system can be determined.

### Claim 20 (depends on 18)

The method of claim 18, wherein the launch metric includes a startup time for the modular system and, for each component, a ready time indicating when the component completed loading.
