# US 10,313,265 B1 · System and methods for sharing memory subsystem resources among datacenter applications

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

- Number: US 10,313,265 B1
- Document ID: US10313265B1
- Status: Granted
- Kind: B1
- Application number: 15/189,885
- Filed: 2016-06-22
- Granted: 2019-06-04
- Earliest claimed: 2012-06-04
- Assignees: Google Inc.
- Applicants: Google Inc.
- Inventors: Lingjia Tang; Jason Mars; Robert Hundt
- Web page: https://patentgrep.com/patent/US10313265B1

## CPC

- 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)}
- H04L 47/70: Admission control; Resource allocation
- H04L 47/803: {Application aware}
- 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 and methods for mapping applications onto system resource of a computing platform are discussed. The computing platform may receive, using control circuitry, a request to run a plurality of applications on a computing platform having a plurality of system resources. The computing platform may determine a plurality of mapping configurations for the plurality of applications onto the plurality of system resources. The computing platform may execute the plurality of applications with each of the plurality of mapping configurations. The computing platform may determine at least one performance metric based on the executed plurality of applications for each of the plurality of mapping configurations. The computing platform may select a selected mapping configuration among the plurality of mapping configurations based on at least one determined performance metric.

## Claims

### Claim 1

A method for mapping applications onto system resources of a computing platform, the method comprising:
receiving, using control circuitry, a request to run a plurality of applications on a computing platform having a plurality of system resources;
determining, using the control circuitry, a plurality of resource sharing metrics for each of the plurality of applications, the resource sharing metrics representative of a level of resource sharing between the plurality of applications, each resource sharing metric comprising at least one of data sharing, bus usage, or a cache footprint;
determining, using the control circuitry, a priority for each of the plurality of applications; comparing, using the control circuitry, the plurality of resource sharing metrics and the priority between each of the plurality of applications;
determining, using the control circuitry and based on the comparison, the level of resource sharing between the plurality of applications;
determining, using the control circuitry and based on the determined level of resource sharing and the priority of each application, a mapping of the plurality of applications onto the plurality of system resources of the computing platform; and
associating, using the control circuitry, the determined mapping with the computing platform.

### Claim 2 (depends on 1)

The method of claim 1, wherein the plurality of system resources comprise at least one of a processor, processor core, memory, cache, processor bus, processor interconnect, memory bus, memory interconnect, processor resource, or network bandwidth.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining the priority of each of the plurality of applications is based on determining a latency sensitivity of each application.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining the mapping of the plurality of applications comprises determining a mapping of application threads for each of the plurality of applications onto the plurality of system resources of the computing platform.

### Claim 5 (depends on 1)

The method of claim 1, wherein the resource sharing metrics further comprise a percentage of cache lines that are in a shared state between two or more applications.

### Claim 6

A system for mapping applications onto system resources of a computing platform, the system comprising:
control circuitry of the computing platform configured to execute instructions that cause the control circuitry to perform operations comprising:
receiving a request to run a plurality of applications on the computing platform having a plurality of system resources;
determining a plurality of resource sharing metrics for each of the plurality of applications, the resource sharing metrics representative of a level of resource sharing between the plurality of applications, each resource sharing metric comprising at least one of data sharing, bus usage, or cache footprint;
determining a priority for each of the plurality of applications;
comparing the plurality of resource sharing metrics and the priority between each of the plurality of applications;
determining, based on the comparison, the level of resource sharing between the plurality of applications; and
determining based on the determined level of resource sharing and the priority of each application comparison, a mapping of the plurality of applications onto the plurality of system resources of the computing platform; and
associating, the determined mapping with the computing platform.

### Claim 7 (depends on 6)

The system of claim 6, wherein the plurality of system resources comprises at least one of a processor, processor core, memory, cache, processor bus, processor interconnect, memory bus, memory interconnect, processor resource, or network bandwidth.

### Claim 8 (depends on 6)

The system of claim 6, wherein the priority of each of the plurality of applications is based on a latency sensitivity of each application.

### Claim 9 (depends on 6)

The system of claim 6, wherein determining the mapping of the plurality of applications comprises determining a mapping of application threads for each of the plurality of applications onto the plurality of system resources of the computing platform.

### Claim 10 (depends on 6)

The system of claim 6, wherein the resource sharing metrics further comprise a percentage of cache lines that are in a shared state between two or more applications.
