# US 10,120,773 B1 · Estimating processor usage

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

- Number: US 10,120,773 B1
- Document ID: US10120773B1
- Status: Granted
- Kind: B1
- Application number: 14/029,490
- Filed: 2013-09-17
- Granted: 2018-11-06
- Earliest claimed: 2007-09-24
- Assignees: United Services Automobile Association (USAA)
- Applicants: United Services Automobile Association (USAA)
- Inventors: Glen A. Becker
- Web page: https://patentgrep.com/patent/US10120773B1

## CPC

- G06F 11/3433: {for load management (allocation of a server based on load conditions G06F9/505; load rebalancing G06F9/5083; redistributing the load in a network by a load balancer H04L67/1029)}
- G06F 11/34: Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation {; Recording or statistical evaluation of user activity, e.g. usability assessment}
- G06F 11/3404: {for parallel or distributed programming}
- G06F 11/3409: {for performance assessment}
- G06F 11/3428: {Benchmarking}
- G06F 11/3442: {for planning or managing the needed capacity}
- G06F 2201/81: Threshold
- G06F 2201/86: Event-based monitoring
- G06F 2201/88: Monitoring involving counting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods and systems are disclosed for determining a CPU usage adjustment factor and for automatically applying the CPU usage adjustment factor to provide a CPU usage estimate for an SMT processor. In one implementation, the methods and systems obtain samples of CPU usage reported by the operating system at a predefined sampling rate over a predefined sampling interval. Thread states for the threads substantially corresponding to the reported CPU usage are so obtained at the predefined sampling rate and over the predefined sampling interval. This sampling may be performed for servers running different applications and having diverse processing loads. An estimate of the distribution of the number of threads running for the CPU usages reported may then be determined from the sampled data. A CPU usage adjustment factor may then be derived, based on the distribution, and used to provide a CPU usage estimate.

## Claims

### Claim 1

A computing device comprising:
a memory; and
a simultaneous multi-threading (SMT) processor coupled to the memory, wherein the SMT processor is configured to:
obtain samples comprising reported processor usage for the SMT processor;
determine an estimated number of threads corresponding to each of the samples;
calculate an adjustment factor based at least on the samples and the estimated number of threads;
determine an actual processor usage estimate for the SMT processor by adjusting the reported processor usage by the adjustment factor; and
execute a number of threads, wherein the number of threads is based on the determined actual processor usage estimate.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the SMT processor is configured to store the actual processor usage estimate for the SMT processor in the memory.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein the SMT processor is configured to determine the estimated number of threads from an operating system running on the computing device.

### Claim 4 (depends on 1)

The computing device of claim 1, wherein the adjustment factor is determined using a curve fitting module.

### Claim 5 (depends on 4)

The computing device of claim 4, wherein the adjustment factor comprises an equation.

### Claim 6 (depends on 4)

The computing device of claim 4, wherein the adjustment factor comprises data in a lookup table.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein the adjustment factor is based on a difference between the reported processor usage of the samples and a processor usage associated with the estimated number of threads.

### Claim 8

A method of operating a computing device having a simultaneous multi-threading (SMT) processor comprising:
obtaining samples comprising reported processor usage for the SMT processor;
determining an estimated number of threads corresponding to each of the samples;
calculating an adjustment factor based at least on the samples and the estimated number of threads;
determining an actual processor usage estimate for the SMT processor by adjusting the reported processor usage by the adjustment factor;
and
executing, by the SMT processor, a number of threads, wherein the number of threads is based on the determined actual processor usage estimate.

### Claim 9 (depends on 8)

The method of claim 8, wherein the method includes storing the actual processor usage estimate for the SMT processor in a memory.

### Claim 10 (depends on 8)

The method of claim 8, wherein determining the estimated number of threads is performed by an operating system running on the computing device.

### Claim 11 (depends on 10)

The method of claim 10, wherein the adjustment factor comprises an equation.

### Claim 12 (depends on 10)

The method of claim 10, wherein the adjustment factor comprises data in a lookup table.

### Claim 13 (depends on 8)

The method of claim 8, wherein the adjustment factor is determined using a curve fitting module.

### Claim 14 (depends on 8)

The method of claim 8, wherein the adjustment factor is based on a difference between the reported processor usage of the samples and a processor usage associated with the estimated number of threads.

### Claim 15

A computer-readable code stored on a non-transitory computer readable medium, which when executed causes a simultaneous multi-threading (SMT) processor to:
obtain samples comprising reported processor usage for the SMT processor;
determine an estimated number of threads corresponding to each of the samples;
calculate an adjustment factor based at least on the samples and the estimated number of threads;
determine an actual processor usage estimate for the SMT processor by adjusting the reported processor usage by the adjustment factor;
and
execute a number of threads, wherein the number of threads is based on the determined actual processor usage estimate.

### Claim 16 (depends on 15)

The computer-readable code of claim 15, wherein the computer-readable code, when executed, causes the SMT processor to store the actual processor usage estimate for the SMT processor in a memory.

### Claim 17 (depends on 15)

The computer-readable code of claim 15, wherein the adjustment factor is determined using a curve fitting module.

### Claim 18 (depends on 17)

The computer-readable code of claim 17, wherein the adjustment factor comprises an equation.

### Claim 19 (depends on 17)

The computer-readable code of claim 17, wherein the adjustment factor comprises data in a lookup table.

### Claim 20 (depends on 17)

The computer-readable code of claim 17, wherein the adjustment factor is based on a difference between the reported processor usage of the samples and a processor usage associated with the estimated number of threads.
