IP Library Granted Patent US 10,205,772
Granted Patent B2
US 10,205,772 · App. 15/429,638 · Granted Feb 12, 2019

Saving and resuming continuation on a physical processor after virtual processor stalls

Inventor: Isaac R. Nassi (Los Gatos, CA)
Assignee: TidalScale, Inc.
H04L67/10G06F9/455G06F9/5077G06F9/4856G06F9/5011G06F2009/45583
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 10,205,772
App. No.
15/429,638
Granted
Feb 12, 2019
Kind
B2
Abstract

Selective resource migration is disclosed. A computer system includes physical memory and a plurality of physical processors. Each of the processors has one or more cores and each core instantiates one or more virtual processors that executes program code. Each core is configured to invoke a hyper-kernel on its hosting physical processor when the core cannot access a portion of the physical memory needed by the core. The hyper-kernel selectively moves the needed memory closer to a location accessible by the physical processor or remaps the virtual processor to another core.

Claims (54)

1. A computer system, comprising:

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

wherein in response to a virtual processor stalling on an event caused by a requested resource being inaccessible, a continuation comprising a representation of a state of the stalled virtual processor is initialized, and wherein the initialized continuation includes a status with respect to the stalling event, wherein the status includes an indication that the initialized continuation is waiting for the stalling event to be satisfied;

wherein the initialized continuation is inserted into an event table; and

wherein a continuation that is ready to run is resumed at least in part by assigning the continuation that is ready to run to a physical processor previously executing the stalled virtual processor, and wherein the physical processor is associated with a physical node in the plurality of physical nodes.

2. The computer system of claim 1 wherein inserting the initialized continuation into the event table includes storing a mapping between the stalling event and the initialized continuation.

3. The computer system of claim 1 wherein, based at least in part on the stalling event being satisfied, the initialized continuation is moved from the event table to a queue of continuations that are ready to run.

4. The computer system of claim 1 wherein control of the continuation assigned to the physical processor is returned to the operating system.

5. The computer system of claim 1 wherein the initialized continuation includes a processor state including a set of saved registers.

6. The computer system of claim 1 wherein the initialized continuation includes a set of performance indicators usable to assign continuations to physical processors for execution.

7. The computer system of claim 1 wherein the initialized continuation includes an identifier associated with the stalled virtual processor.

8. The computer system of claim 1 wherein the initialized continuation includes an indication of the stalling event on which the initialized continuation is waiting.

9. The computer system of claim 1 wherein the event table is associated with a particular physical node in the plurality of physical nodes.

10. The computer system of claim 1 wherein the physical processor comprises a hyperthread.

11. A method, comprising:

in response to a virtual processor stalling on an event caused by a requested resource being inaccessible, initializing a continuation comprising a representation of a state of the stalled virtual processor, wherein the initialized continuation includes a status with respect to the stalling event, wherein the status includes an indication that the initialized continuation is waiting for the stalling event to be satisfied;

inserting the initialized continuation into an event table; and

resuming a continuation that is ready to run at least in part by assigning the continuation that is ready to run to a physical processor previously executing the stalled virtual processor, wherein the physical processor is associated with a physical node in a plurality of physical nodes, and wherein an operating system is run collectively across the plurality of physical nodes.

12. The method of claim 11 wherein inserting the initialized continuation into the event table includes storing a mapping between the stalling event and the initialized continuation.

13. The method of claim 11 wherein, based at least in part on the stalling event being satisfied, the initialized continuation is moved from the event table to a queue of continuations that are ready to run.

14. The method of claim 11 wherein control of the continuation assigned to the physical processor is returned to the operating system.

15. The method of claim 11 wherein the initialized continuation includes a processor state including a set of saved registers.

16. The method of claim 11 wherein the initialized continuation includes a set of performance indicators usable to assign continuations to physical processors for execution.

17. The method of claim 11 wherein the initialized continuation includes an identifier associated with the stalled virtual processor.

18. The method of claim 11 wherein the initialized continuation includes an indication of the stalling event on which the initialized continuation is waiting.

19. The method of claim 11 wherein the event table is associated with a particular physical node in the plurality of physical nodes.

20. The method of claim 11 wherein the physical processor comprises a hyperthread.

21. A computer system, comprising:

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

wherein in response to a virtual processor stalling on an event caused by a requested resource being inaccessible, a continuation comprising a representation of a state of the stalled virtual processor is initialized, and wherein the initialized continuation includes a set of performance indicators usable to assign continuations to physical processors for execution;

wherein the initialized continuation is inserted into an event table; and

wherein a continuation that is ready to run is resumed at least in part by assigning the continuation that is ready to run to a physical processor previously executing the stalled virtual processor, and wherein the physical processor is associated with a physical node in the plurality of physical nodes.

22. The computer system of claim 21 wherein inserting the initialized continuation into the event table includes storing a mapping between the stalling event and the initialized continuation.

23. The computer system of claim 21 wherein, based at least in part on the stalling event being satisfied, the initialized continuation is moved from the event table to a queue of continuations that are ready to run.

24. The computer system of claim 21 wherein control of the continuation assigned to the physical processor is returned to the operating system.

25. The computer system of claim 21 wherein the initialized continuation includes a status with respect to the stalling event, wherein the status includes an indication that the initialized continuation is waiting for the stalling event to be satisfied.

26. The computer system of claim 21 wherein the initialized continuation includes a processor state including a set of saved registers.

27. The computer system of claim 21 wherein the initialized continuation includes an identifier associated with the stalled virtual processor.

28. The computer system of claim 21 wherein the initialized continuation includes an indication of the stalling event on which the initialized continuation is waiting.

29. The computer system of claim 21 wherein the event table is associated with a particular physical node in the plurality of physical nodes.

30. The computer system of claim 21 wherein the physical processor comprises a hyperthread.

31. A method, comprising:

in response to a virtual processor stalling on an event caused by a requested resource being inaccessible, initializing a continuation comprising a representation of a state of the stalled virtual processor, wherein the initialized continuation includes a set of performance indicators usable to assign continuations to physical processors for execution;

inserting the initialized continuation into an event table; and

resuming a continuation that is ready to run at least in part by assigning the continuation that is ready to run to a physical processor previously executing the stalled virtual processor, wherein the physical processor is associated with a physical node in a plurality of physical nodes, and wherein an operating system is run collectively across the plurality of physical nodes.

32. The method of claim 31 wherein inserting the initialized continuation into the event table includes storing a mapping between the stalling event and the initialized continuation.

33. The method of claim 31 wherein, based at least in part on the stalling event being satisfied, the initialized continuation is moved from the event table to a queue of continuations that are ready to run.

34. The method of claim 31 wherein control of the continuation assigned to the physical processor is returned to the operating system.

35. The method of claim 31 wherein the initialized continuation includes a status with respect to the stalling event, wherein the status includes an indication that the initialized continuation is waiting for the stalling event to be satisfied.

36. The method of claim 31 wherein the initialized continuation includes a processor state including a set of saved registers.

37. The method of claim 31 wherein the initialized continuation includes an identifier associated with the stalled virtual processor.

38. The method of claim 31 wherein the initialized continuation includes an indication of the stalling event on which the initialized continuation is waiting.

39. The method of claim 31 wherein the event table is associated with a particular physical node in the plurality of physical nodes.

40. The method of claim 31 wherein the physical processor comprises a hyperthread.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2024
From: NASSI, ISAAC R.
To: TIDALSCALE, INC.
Reel/Frame 068067/0336 →
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 →
Continuity (4)
Continuation 14880132 · Oct 9, 2015
Continuation 13830094 · Mar 14, 2013
Provisional Application 61692648 · Aug 23, 2012
Related Publication 20170279872A1 · Sep 28, 2017