# US 10,503,534 B1 · Adaptive clock scaling to optimize time-based operations within virtualized guest operating systems

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

- Number: US 10,503,534 B1
- Document ID: US10503534B1
- Status: Granted
- Kind: B1
- Application number: 15/268,191
- Filed: 2016-09-16
- Granted: 2019-12-10
- Earliest claimed: 2016-09-09
- Assignees: Hewlett-Packard Development Company, L.P.
- Applicants: Bromium, Inc.
- Inventors: Andrew Southgate; Adrian Taylor; Ian Pratt
- Web page: https://patentgrep.com/patent/US10503534B1

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/4887: {involving deadlines, e.g. rate based, periodic}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/5055: {considering software capabilities, i.e. software resources associated or available to the machine}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2209/501: Performance criteria
- G06F 2209/506: Constraint
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 1)

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.

### Claim 9 (depends on 1)

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.

### Claim 10 (depends on 1)

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.

### Claim 11 (depends on 1)

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

### Claim 12 (depends on 1)

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.

### Claim 13 (depends on 1)

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.

### Claim 14 (depends on 1)

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.

### Claim 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.

### Claim 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.

### Claim 17 (depends on 16)

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.

### Claim 18 (depends on 16)

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.

### Claim 19 (depends on 16)

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.

### Claim 20 (depends on 16)

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.

### Claim 21 (depends on 16)

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.

### Claim 22 (depends on 16)

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.

### Claim 23 (depends on 16)

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

### Claim 24 (depends on 16)

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.

### Claim 25 (depends on 16)

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

### Claim 26 (depends on 16)

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

### Claim 27 (depends on 16)

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.

### Claim 28 (depends on 16)

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.

### Claim 29 (depends on 16)

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.
