IP Library Granted Patent US 10,503,534
Granted Patent B1
US 10,503,534 · App. 15/268,191 · Granted Dec 10, 2019

Adaptive clock scaling to optimize time-based operations within virtualized guest operating systems

Inventors: Andrew Southgate (Cambridge, GB); Adrian Taylor (Cambridge, GB); Ian Pratt (Cambridge, GB)
Assignee: Hewlett-Packard Development Company, L.P.
G06F9/45558G06F9/4887G06F9/5038G06F9/5055G06F2009/4557G06F2209/501G06F2209/506
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,503,534
App. No.
15/268,191
Granted
Dec 10, 2019
Kind
B1
Abstract

Approaches for managing how the passage of time is observed by a software execution environment, such as a virtual machine or a sandbox environment. A computer system maintains a set of physical time sources. A set of virtual time sources are computed based on the set of physical time sources. The virtual time sources operate independently of the set of physical time sources. For example, the virtual time sources may observe time passing faster or slower than the set of physical time sources. The set of virtual time sources are presented to the software execution environment as the set of time sources. Many benefits may be obtained such as higher utilization of allocated resources and avoidance of timeouts.

Claims (60)

1. One or more non-transitory machine-readable storage mediums storing one or more sequences of instructions for managing how a passage of time is observed by a software execution environment, which when executed by one or more processors, causes:

one or more hardware components of a computer system maintaining a set of physical time sources which measure logical time for said computer system and do not measure wall-clock time;

a first hypervisor, executing on the computer system, instantiating a second hypervisor as a guest; and

after the first hypervisor presents a first set of virtual time sources to the second hypervisor, the second hypervisor computing a second set of virtual time sources based on said first set of virtual time sources, wherein said second set of virtual time sources are observed by processes executing in an operational environment in which said second hypervisor executes, wherein said second set of virtual time sources operate independently of both said first set of virtual time sources and said set of physical time sources, and wherein said second set of virtual time sources measure logical time for said computer system at a different rate than said set of physical time sources and said first set of virtual time sources.

2. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources at a slower rate than the set of physical time sources.

3. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources at a faster rate than said set of physical time sources.

4. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources only when the software execution environment has been allocated CPU resources and I/O resources.

5. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance to optimize performance of processes executing within the software execution environment.

6. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance to prevent time outs from occurring within the software execution environment.

7. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

adjusting, at a fixed rate, a rate at which said set of virtual time sources advance to prevent time outs from occurring within the software execution environment.

8. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein a virtual machine template is being creating by said software execution environment.

9. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance in proportion to an amount of resources allocated to the software execution environment.

10. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein a hypervisor performs said adjusting of said set of virtual time sources.

11. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said software execution environment is a virtual machine.

12. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

dynamically advancing said set of virtual time sources or increasing a rate at which said set of virtual time sources advance upon determining that said software execution environment is presently idle.

13. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance at periodic intervals of absolute time.

14. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein said set of virtual time sources are a first set of virtual time sources, and wherein execution of the one or more sequences of instructions further cause:

computing a second set of virtual time sources based on said set of physical time sources, wherein said second set of virtual time sources operate independently of said set of physical time sources and said first set of virtual time sources.

15. A method for managing how a passage of time is observed by a software execution environment, comprising:

one or more hardware components of a computer system maintaining a set of physical time sources which measure logical time for said computer system and do not measure wall-clock time;

a first hypervisor, executing on the computer system, instantiating a second hypervisor as a guest; and

after the first hypervisor presents a first set of virtual time sources to the second hypervisor, the second hypervisor computing a second set of virtual time sources based on said first set of virtual time sources, wherein said second set of virtual time sources are observed by processes executing in an operational environment in which said second hypervisor executes, wherein said second set of virtual time sources operate independently of both said first set of virtual time sources and said set of physical time sources, and wherein said set of virtual time sources measure logical time for said computer system at a different rate than said set of physical time sources.

16. An apparatus for managing how a passage of time is observed by a software execution environment, comprising:

one or more processors; and

one or more non-transitory, computer-readable storage mediums storing one or more sequences of instructions, which when executed, cause:

one or more hardware components of a computer system maintaining a set of physical time sources which measure logical time for said computer system and do not measure wall-clock time;

a first hypervisor, executing on the computer system, instantiating a second hypervisor as a guest; and

after the first hypervisor presents a first set of virtual time sources to the second hypervisor, the second hypervisor computing a second set of virtual time sources based on said first set of virtual time sources, wherein said second set of virtual time sources are observed by processes executing in an operational environment in which said second hypervisor executes, wherein said second set of virtual time sources operate independently of both said first set of virtual time sources and said set of physical time sources, and wherein said set of virtual time sources measure logical time for said computer system at a different rate than said set of physical time sources.

17. The apparatus of claim 16 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources at a slower rate than the set of physical time sources.

18. The apparatus of claim 16 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources at a faster rate than said set of physical time sources.

19. The apparatus of claim 16 , wherein computing a set of virtual time sources comprises:

advancing said set of virtual time sources only when the software execution environment has been allocated CPU resources and I/O resources.

20. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance to optimize performance of processes executing within the software execution environment.

21. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance to prevent time outs from occurring within the software execution environment.

22. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

adjusting, at a fixed rate, a rate at which said set of virtual time sources advance to prevent time outs from occurring within the software execution environment.

23. The apparatus of claim 16 , wherein a virtual machine template is being creating by said software execution environment.

24. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance in proportion to an amount of resources allocated to the software execution environment.

25. The apparatus of claim 16 , wherein a hypervisor performs said adjusting of said set of virtual time sources.

26. The apparatus of claim 16 , wherein said software execution environment is a virtual machine.

27. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

dynamically advancing said set of virtual time sources or increasing a rate at which said set of virtual time sources advance upon determining that said software execution environment is presently idle.

28. The apparatus of claim 16 , wherein said computing said set of virtual time sources comprises:

dynamically adjusting a rate at which said set of virtual time sources advance at periodic intervals of absolute time.

29. The apparatus of claim 16 , wherein said set of virtual time sources are a first set of virtual time sources, and wherein execution of the one or more sequences of instructions further cause:

computing a second set of virtual time sources based on said set of physical time sources, wherein said second set of virtual time sources operate independently of said set of physical time sources and said first set of virtual time sources.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2019
From: BROMIUM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 051305/0894 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2017
From: SOUTHGATE, ANDREW; TAYLOR, ADRIAN; PRATT, IAN
To: BROMIUM, INC.
Reel/Frame 043813/0476 →
Continuity (1)
Provisional Application 62385820 · Sep 9, 2016
Cited By (1)
US 12,625,959