# US 2023/0058090 A1 · Services thread scheduling based upon thread tracing

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

- Number: US 2023/0058090 A1
- Document ID: US20230058090A1
- Status: Published application
- Kind: A1
- Application number: 17/405,885
- Filed: 2021-08-18
- Published: 2023-02-23
- Earliest claimed: 2021-08-18
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Priyanka Prakash Naik; Kavya G; Chander Govindarajan; Sayandeep Sen; Palanivel Andiappan Kodeswaran
- Web page: https://patentgrep.com/patent/US20230058090A1

## CPC

- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5066: {Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451)}
- G06F 9/5072: {Grid computing}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 11/3409: {for performance assessment}
- G06N 5/01: Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
- G06N 5/04: Inference or reasoning models
- G06N 20/00: Machine learning
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F 2209/5018: Thread allocation
- G06F 2209/502: Proximity
- G06F 2209/5022: Workload threshold
- G06F 2209/505: Clust
- G06F 2209/508: Monitor
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

One embodiment provides a method, including: producing, for each of a plurality of containers, a resource profile for each thread in each of the plurality of containers; identifying, for each of the plurality of containers and from, at least in part, the resource profiles, container dependencies between threads on a single of the plurality of containers; determining service dependencies between threads across different of the plurality of containers; scheduling, based upon the container dependencies and the service dependencies, threads to cores, wherein the scheduling is based upon minimizing thread processing times; and publishing the container dependencies and the service dependencies on a registry of the node clusters.

## Claims

### Claim 1

A method, comprising:
producing, for each of a plurality of containers, a resource profile for each thread in each of the plurality of containers, wherein each thread is associated with an application hosted on a virtual environment, wherein subsets of the plurality of containers are associated with cores comprising resources for use by containers, wherein sets of containers are assigned to a node within a node cluster;
identifying, for each of the plurality of containers and from, at least in part, the resource profiles, container dependencies between threads on a single of the plurality of containers;
determining service dependencies between threads across different of the plurality of containers;
scheduling, based upon the container dependencies and the service dependencies, threads to cores, wherein the scheduling is based upon minimizing thread processing times; and
publishing the container dependencies and the service dependencies on a registry of the node clusters.

### Claim 2 (depends on 1)

The method of claim 1, comprising identifying, from the resource profiles, resources indicators for each of the threads;
wherein the resource indicators indicate a corresponding thread utilizes a resource represented by the resource indicator above a predetermined threshold; and
wherein the identifying container dependencies is based upon the resource indicators.

### Claim 3 (depends on 2)

The method of claim 2, wherein the resource indicators comprise at least one indirect resource indicator, wherein an indirect resource indicator comprises a resource indicator corresponding to a resource identified from metrics other than a direct metric of the resource.

### Claim 4 (depends on 2)

The method of claim 2, wherein a plurality of the resource indicators map to a resource; and
wherein the identifying resource indicators comprises generating, using heuristics, a final resource indicator from the plurality of resource indicators.

### Claim 5 (depends on 1)

The method of claim 1, wherein the identifying container dependencies comprises utilizing spatial and temporal local references.

### Claim 6 (depends on 1)

The method of claim 1, wherein the determining service dependencies comprises tracking, utilizing an application, communications between threads of different services and inferring service dependencies from the communications between threads of different services.

### Claim 7 (depends on 1)

The method of claim 1, wherein the determining service dependencies comprises identifying resources shared among different services by monitoring resource consumption occurring in response to communications between threads of different services.

### Claim 8 (depends on 1)

The method of claim 1, wherein the determining service dependencies comprises generating application topologies from each of a plurality of service dependency indicators and aggregating application topologies from the plurality of service dependency indicators.

### Claim 9 (depends on 1)

The method of claim 1, wherein the determining service dependencies comprises utilizing a machine learning technique trained using historical thread communication and resource indicator information.

### Claim 10 (depends on 1)

The method of claim 1, comprising training a function-to-resource affinity classifier using resource indicators.

### Claim 11

An apparatus, comprising:
at least one processor; and
a computer readable storage medium having computer readable program code embodied therewith and executable by the at least one processor;
wherein the computer readable program code is configured to produce, for each of a plurality of containers, a resource profile for each thread in each of the plurality of containers, wherein each thread is associated with an application hosted on a virtual environment, wherein subsets of the plurality of containers are associated with cores comprising resources for use by containers, wherein sets of containers are assigned to a node within a node cluster;
wherein the computer readable program code is configured to identify, for each of the plurality of containers and from, at least in part, the resource profiles, container dependencies between threads on a single of the plurality of containers;
wherein the computer readable program code is configured to determine service dependencies between threads across different of the plurality of containers;
wherein the computer readable program code is configured to schedule, based upon the container dependencies and the service dependencies, threads to cores, wherein the scheduling is based upon minimizing thread processing times; and
wherein the computer readable program code is configured to publish the container dependencies and the service dependencies on a registry of the node clusters.

### Claim 12

A computer program product, comprising:
a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code executable by a processor;
wherein the computer readable program code is configured to produce, for each of a plurality of containers, a resource profile for each thread in each of the plurality of containers, wherein each thread is associated with an application hosted on a virtual environment, wherein subsets of the plurality of containers are associated with cores comprising resources for use by containers, wherein sets of containers are assigned to a node within a node cluster;
wherein the computer readable program code is configured to identify, for each of the plurality of containers and from, at least in part, the resource profiles, container dependencies between threads on a single of the plurality of containers;
wherein the computer readable program code is configured to determine service dependencies between threads across different of the plurality of containers;
wherein the computer readable program code is configured to schedule, based upon the container dependencies and the service dependencies, threads to cores, wherein the scheduling is based upon minimizing thread processing times; and
wherein the computer readable program code is configured to publish the container dependencies and the service dependencies on a registry of the node clusters.

### Claim 13 (depends on 12)

The computer program product of claim 12, comprising identifying, from the resource profiles, resources indicators for each of the threads;
wherein the resource indicators indicate a corresponding thread utilizes a resource represented by the resource indicator above a predetermined threshold; and
wherein the identifying container dependencies is based upon the resource indicators.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the resource indicators comprise at least one indirect resource indicator, wherein an indirect resource indicator comprises a resource indicator corresponding to a resource identified from metrics other than a direct metric of the resource.

### Claim 15 (depends on 13)

The computer program product of claim 13, wherein a plurality of the resource indicators map to a resource; and
wherein the identifying resource indicators comprises generating, using heuristics, a final resource indicator from the plurality of resource indicators.

### Claim 16 (depends on 12)

The computer program product of claim 12, wherein the identifying container dependencies comprises utilizing spatial and temporal local references.

### Claim 17 (depends on 12)

The computer program product of claim 12, wherein the determining service dependencies comprises tracking, utilizing an application, communications between threads of different services and inferring service dependencies from the communications between threads of different services.

### Claim 18 (depends on 12)

The computer program product of claim 12, wherein the determining service dependencies comprises identifying resources shared among different services by monitoring resource consumption occurring in response to communications between threads of different services.

### Claim 19 (depends on 12)

The computer program product of claim 12, wherein the determining service dependencies comprises generating application topologies from each of a plurality of service dependency indicators and aggregating application topologies from the plurality of service dependency indicators.

### Claim 20 (depends on 12)

The computer program product of claim 12, wherein the determining service dependencies comprises utilizing a machine learning technique trained using historical thread communication and resource indicator information.
