IP Library Granted Patent US 11,023,135
Granted Patent B2
US 11,023,135 · App. 16/019,348 · Granted Jun 1, 2021

Handling frequently accessed pages

Inventors: Isaac R. Nassi (Los Gatos, CA); Kleoni Ioannidou (Sunnyvale, CA); Michael Berman (Scotts Valley, CA); I-Chun Fang (San Jose, CA); Mark Hill (Los Altos, CA); Brian Moffet (Santa Cruz, CA); Jeffrey Paul Radick (Campbell, CA); David P. Reed (Needham, MA); Keith Reynolds (Issaquah, WA)
Assignee: TidalScale, Inc.
G06F3/0611G06F3/067G06F3/0647G06F3/0653G06F9/4856G06F9/4881G06F9/5033G06F9/5044G06F9/5077G06F12/08G06F2209/509
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,023,135
App. No.
16/019,348
Granted
Jun 1, 2021
Kind
B2
Abstract

Handling frequently accessed pages is disclosed. An indication is received of a stalling event caused by a requested portion of memory being inaccessible. It is determined that the requested portion of memory is a frequently updated portion of memory. The stalling event is handled based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory.

Claims (29)

1. A computer system, comprising:

a plurality of interconnected computing nodes, wherein an operating system is run collectively across the plurality of interconnected computing nodes;

wherein an indication is received of a stalling event caused by a requested portion of memory on a first computing node being inaccessible to a processor on a second computing node;

wherein it is determined that the requested portion of memory is a frequently updated portion of memory at least in part by determining that an identifier of the requested portion of memory is present in a table comprising a plurality of entries corresponding to a plurality of identifiers of portions of memory that have been designated as frequently updated portions of memory based at least in part on their inclusion in the table, wherein the requested portion of memory is determined to be a frequently updated portion of memory in response to a lookup of the table that is performed using the identifier of the requested portion of memory, and wherein the identifier of the portion of memory was included in the table at least in part by:

determining that an observed frequency of write stalls caused by page requests that occurred with respect to the portion of memory exceeded that of one or more entries in the table; and

replacing an existing entry in the table with the identifier of the portion of memory; and

wherein the stalling event is handled based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory.

2. The computer system of claim 1 , wherein the lookup is performed using an address of the requested portion of memory.

3. The computer system of claim 1 , wherein the stalling event comprises a write stall involving a virtual processor attempting to write into the requested portion of memory.

4. The computer system of claim 1 , wherein the processor comprises a virtual processor, wherein based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory, the stalling event is handled at least in part by migrating the virtual processor to the first computing node to update the requested portion of memory, and wherein the virtual processor is migrated back to the second computing node in response to completion of the update to the requested portion of memory.

5. The computer system of claim 4 , wherein copies of the updated portion of memory are broadcasted to at least some of the computing nodes in the plurality of interconnected computing nodes.

6. The computer system of claim 1 , wherein based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory, the stalling event is handled at least in part by migrating the requested portion of memory to the second computing node to be updated, and wherein the requested portion of memory is migrated back to the first computing node in response to completion of an update to the requested portion of memory.

7. A method, comprising:

receiving an indication of a stalling event caused by a requested portion of memory on a first computing node being inaccessible to a processor on a second computing node, wherein the first computing node and the second computing node are included in a plurality of interconnected computing nodes, and wherein an operating system is run collectively across the plurality of interconnected computing nodes;

determining that the requested portion of memory is a frequently updated portion of memory at least in part by determining that an identifier of the requested portion of memory is present in a table comprising a plurality of entries corresponding to a plurality of identifiers of portions of memory that have been designated as frequently updated portions of memory based at least in part on their inclusion in the table, wherein the requested portion of memory is determined to be a frequently updated portion of memory in response to a lookup of the table that is performed using the identifier of the requested portion of memory, and wherein the identifier of the portion of memory was included in the table at least in part by:

determining that an observed frequency of write stalls caused by page requests that occurred with respect to the portion of memory exceeded that of one or more entries in the table; and

replacing an existing entry in the table with the identifier of the portion of memory; and

handling the stalling event based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory.

8. The method of claim 7 , wherein the lookup is performed using an address of the requested portion of memory.

9. The method of claim 7 , wherein the stalling event comprises a write stall involving a virtual processor attempting to write into the requested portion of memory.

10. The method of claim 7 , wherein the processor comprises a virtual processor, wherein based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory, the stalling event is handled at least in part by migrating the virtual processor to the first computing node to update the requested portion of memory, and wherein the virtual processor is migrated back to the second computing node in response to completion of the update to the requested portion of memory.

11. The method of claim 10 , wherein copies of the updated portion of memory are broadcasted to at least some of the computing nodes in the plurality of interconnected computing nodes.

12. The method of claim 7 , wherein based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory, the stalling event is handled at least in part by migrating the requested portion of memory to the second computing node to be updated, and wherein the requested portion of memory is migrated back to the first computing node in response to completion of an update to the requested portion of memory.

13. A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving an indication of a stalling event caused by a requested portion of memory on a first computing node being inaccessible to a processor on a second computing node, wherein the first computing node and the second computing node are included in a plurality of interconnected computing nodes, and wherein an operating system is run collectively across the plurality of interconnected computing nodes;

determining that the requested portion of memory is a frequently updated portion of memory at least in part by determining that an identifier of the requested portion of memory is present in a table comprising a plurality of entries corresponding to a plurality of identifiers of portions of memory that have been designated as frequently updated portions of memory based at least in part on their inclusion in the table, wherein the requested portion of memory is determined to be a frequently updated portion of memory in response to a lookup of the table that is performed using the identifier of the requested portion of memory, and wherein the identifier of the portion of memory was included in the table at least in part by:

determining that an observed frequency of write stalls caused by page requests that occurred with respect to the portion of memory exceeded that of one or more entries in the table; and

replacing an existing entry in the table with the identifier of the portion of memory; and

handling the stalling event based at least in part on the determination that the requested portion of memory is a frequently updated portion of memory.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2023
From: TIDALSCALE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 062282/0452 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 060724/0458 Recorded Dec 30, 2022
From: COMERICA BANK
To: TIDALSCALE, INC.
Reel/Frame 062252/0199 →
RELEASE OF SECURITY INTEREST Recorded Dec 15, 2022
From: COMERICA BANK
To: TIDALSCALE, INC.
Reel/Frame 062108/0963 →
SECURITY INTEREST Recorded Aug 4, 2022
From: TIDALSCALE, INC.
To: COMERICA BANK
Reel/Frame 060724/0458 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2018
From: NASSI, ISAAC R.; IOANNIDOU, KLEONI; BERMAN, MICHAEL; FANG, I-CHUN; HILL, MARK; MOFFET, BRIAN; RADICK, JEFFREY PAUL; REED, DAVID P.; REYNOLDS, KEITH
To: TIDALSCALE, INC.
Reel/Frame 046840/0096 →
Continuity (3)
Provisional Application 62525552 · Jun 27, 2017
Provisional Application 62553005 · Aug 31, 2017
Related Publication 20180373441A1 · Dec 27, 2018