# US 10,318,888 B2 · Pre-backing virtual storage using historical learned data

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

- Number: US 10,318,888 B2
- Document ID: US10318888B2
- Status: Granted
- Kind: B2
- Application number: 15/450,297
- Filed: 2017-03-06
- Published: 2018-09-06
- Granted: 2019-06-11
- Earliest claimed: 2017-03-06
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Joseph W. Gentile; Nicholas C. Matsakis; Elpida Tzortzatos
- Web page: https://patentgrep.com/patent/US10318888B2

## CPC

- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 9/46: Multiprogramming arrangements
- G06F 9/5016: {the resource being the memory}
- G06N 20/00: Machine learning
- H04L 63/0272: {Virtual private networks}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/1027: using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A computer system includes memory and a processor configured to manage memory allocation. Aspects include receiving a request to execute a computer program and obtaining a learned data file for the computer program, the learned data file including a history of memory allocation requests and memory access requests by the computer program. Aspects also include receiving a memory allocation request from the computer program and allocating one or more pages of a virtual memory to the computer program, wherein a size of the one or more pages is based on the learned data file. Aspects further include backing at least one of the one or more pages of the virtual memory in the real memory prior to receiving an access request for the at least one of the one or more pages based on the learned data file.

## Claims

### Claim 1

A computer-implemented method for pre-backing virtual memory with real memory based on learned data, the method comprising:
receiving, by a processor, a request to execute a computer program, wherein the computer program is configured to make memory access requests from the real memory;
obtaining, by the processor, a learned data file for the computer program, the learned data file including a history of memory allocation requests and memory access requests by the computer program, wherein the history of memory access requests includes a time between a start of execution of the computer program and each memory access request by the computer program;
receiving, by the processor, a memory allocation request from the computer program;
allocating one or more pages of a virtual memory to the computer program, wherein a size of the one or more pages is based on the learned data file; and
backing at least one of the one or more pages of the virtual memory in the real memory prior to receiving an access request for the at least one of the one or more pages based on the learned data file.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising updating the learned data file based on the memory allocation requests and memory access requests received from the computer program.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the history of memory access requests includes a number of pages included in each request by the computer program.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein the history of memory access requests includes a size of each of the pages requested by the computer program.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the history of memory allocation requests includes a memory reference pattern for each allocation request by the computer program, wherein the memory reference pattern consists of one of a sparse request or a sequential request.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the history of memory allocation requests includes a size of each memory allocation request and a time between a start of execution of the computer program and each memory allocation request by the computer program.

### Claim 7

A computer program product for pre-backing virtual memory with real memory based on learned data, the computer program product comprising:
a non-transitory computer readable storage medium having computer readable instructions stored thereon that, when executed by a processing unit implements a method, comprising:
receiving, by a processor, a request to execute a computer program, wherein the computer program is configured to make memory access requests from the real memory;
obtaining, by the processor, a learned data file for the computer program, the learned data file including a history of memory allocation requests and memory access requests by the computer program, wherein the history of memory access requests includes a time between a start of execution of the computer program and each memory access request by the computer program;
receiving, by the processor, a memory allocation request from the computer program;
allocating one or more pages of a virtual memory to the computer program, wherein a size of the one or more pages is based on the learned data file; and
backing at least one of the one or more pages of the virtual memory in the real memory prior to receiving an access request for the at least one of the one or more pages based on the learned data file.

### Claim 8 (depends on 7)

The computer program product of claim 7, further comprising updating the learned data file based on the memory allocation requests and memory access requests received from the computer program.

### Claim 9 (depends on 7)

The computer program product of claim 7, wherein the history of memory access requests includes a number of pages included in each request by the computer program.

### Claim 10 (depends on 9)

The computer program product of claim 9, wherein the history of memory access requests includes a size of each of the pages requested by the computer program.

### Claim 11 (depends on 7)

The computer program product of claim 7, wherein the history of memory allocation requests includes a memory reference pattern for each allocation request by the computer program, wherein the memory reference pattern consists of one of a sparse request or a sequential request.

### Claim 12 (depends on 7)

The computer program product of claim 7, wherein the history of memory allocation requests includes a size of each memory allocation request and a time between a start of execution of the computer program and each memory allocation request by the computer program.

### Claim 13

A computer system, comprising:
a real memory; and
a processor configured to:
receive a request to execute a computer program, wherein the computer program is configured to make memory access requests from the real memory;
obtain a learned data file for the computer program, the learned data file including a history of memory allocation requests and memory access requests by the computer program, wherein the history of memory access requests includes a time between a start of execution of the computer program and each memory access request by the computer program;
receive a memory allocation request from the computer program;
allocate one or more pages of a virtual memory to the computer program, wherein a size of the one or more pages is based on the learned data file; and
back at least one of the one or more pages of the virtual memory in the real memory prior to receiving an access request for the at least one of the one or more pages based on the learned data file.

### Claim 14 (depends on 13)

The computer system of claim 13, wherein the history of memory access requests includes a number of pages included in each request by the computer program.

### Claim 15 (depends on 14)

The computer system of claim 14, wherein the history of memory access requests includes a size of each of the pages requested by the computer program.

### Claim 16 (depends on 13)

The computer system of claim 13, wherein the history of memory allocation requests includes a memory reference pattern for each allocation request by the computer program, wherein the memory reference pattern consists of one of a sparse request or a sequential request.

### Claim 17 (depends on 13)

The computer system of claim 13, wherein the history of memory allocation requests includes a size of each memory allocation request and a time between a start of execution of the computer program and each memory allocation request by the computer program.
