IP Library Granted Patent US 11,409,554
Granted Patent B2
US 11,409,554 · App. 16/696,020 · Granted Aug 9, 2022

Time dilation based on an amount of resources allocated to a software execution environment

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 11,409,554
App. No.
16/696,020
Granted
Aug 9, 2022
Kind
B2
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 (30)

1. A non-transitory machine-readable storage medium comprising instructions that when executed cause a processor to:

maintain in a computer system, a set of physical time sources, of a host operating system of the computer system, which measure logical time for the computer system and do not measure wall-clock time;

compute a set of virtual time sources based on the set of physical time sources, wherein the set of virtual time sources operate independently of the set of physical time sources, and wherein the set of virtual time sources are dynamically adjusted, by a virtualization management environment managing a software execution environment, to dynamically adjust timing values of the set of virtual time sources, relative to corresponding timing values of the physical time sources, at a faster or slower rate matching an amount of physical resource provided to the software by the host operating system; and

present, by the virtualization management environment, the set of virtual time sources to the software execution environment as the set of physical time sources.

2. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute a set of virtual time sources include instructions to advance the set of virtual time sources at a slower rate than the set of physical time sources.

3. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute a set of virtual time sources include instructions to advance the set of virtual time sources at a faster rate than the set of physical time sources.

4. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute a set of virtual time sources include instructions to advance the set of virtual time sources responsive to the software execution environment allocating CPU resources and I/O resources for executing the operation.

5. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute a set of virtual time sources include instructions to dynamically adjust a rate at which the set of virtual time sources advance.

6. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute the set of virtual time sources includes instructions to:

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

7. The non-transitory machine-readable storage medium of claim 1 , further including instructions that when executed cause the processor to create a virtual machine template by the software execution environment.

8. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute the set of virtual time sources include instructions to:

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

9. The non-transitory machine-readable storage medium of claim 1 , further including instructions that when executed cause the processor to adjust the set of virtual time sources using a hypervisor.

10. The non-transitory machine-readable storage medium of claim 1 , wherein the software execution environment is a virtual machine.

11. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute the set of virtual time sources include instructions to:

dynamically advance the set of virtual time sources or increase a rate at which the set of virtual time sources advance in response to a determination that the software execution environment is idle.

12. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions to compute the set of virtual time sources include instructions to dynamically adjust a rate at which the set of virtual time sources advance at periodic intervals of absolute time.

13. The non-transitory machine-readable storage medium of claim 1 , wherein the set of virtual time sources are a first set of virtual time sources, and further including instructions that when executed cause the processor to:

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

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

maintaining a set of physical time sources, of a host operating system of a computer system, which measure logical time for the computer system and do not measure wall-clock time;

computing a set of virtual time sources based on the set of physical time sources, wherein the set of virtual time sources operate independently of the set of physical time sources, wherein the set of virtual time sources measure logical time for the computer system and do not measure wall-clock time, and wherein the set of virtual time sources are dynamically adjusted, by a virtualization management environment managing the software execution environment, to dynamically adjust timing values of the set of virtual time sources, relative to corresponding timing values of the physical time sources, at a faster or slower rate matching an amount of physical resource provided to the software by the host operating system; and

presenting, by the virtualization management environment, the set of virtual time sources to the software execution environment as the set of physical time sources.

15. A computing apparatus, comprising:

a processor; and

a non-transitory, computer-readable storage medium comprising instructions that when executed cause the processor to:

maintain a set of physical time sources, of a host operating system of the computer apparatus, which measure logical time for the computing apparatus and do not measure wall-clock time;

compute a set of virtual time sources based on the set of physical time sources, wherein the set of virtual time sources operate independently of the set of physical time sources the set of virtual time sources measure logical time for the computing apparatus and do not measure wall-clock time, and wherein the set of virtual time sources are dynamically adjusted, by a virtualization management environment managing a software execution environment, to dynamically adjust timing values of the set of virtual time sources, relative to corresponding timing values of the physical time sources, at a faster or slower rate matching an amount of physical resource provided to the software by the host operating system; and

present, by the virtualization management environment, the set of virtual time sources to a software execution environment as the set of physical time sources.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2020
From: BROMIUM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 051966/0808 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2020
From: SOUTHGATE, ANDREW; TAYLOR, ADRIAN; PRATT, IAN
To: BROMIUM, INC.
Reel/Frame 052052/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2020
From: BROMIUM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 051919/0770 →
Continuity (3)
Division 15268191 · Sep 16, 2016
Provisional Application 62385820 · Sep 9, 2016
Related Publication 20200097317A1 · Mar 26, 2020