# US 7,610,186 B2 · Load simulation tool for server resource capacity planning

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

- Number: US 7,610,186 B2
- Document ID: US7610186B2
- Status: Granted
- Kind: B2
- Application number: 10/999,551
- Filed: 2004-11-30
- Published: 2005-05-12
- Granted: 2009-10-27
- Earliest claimed: 2000-05-23
- Assignees: Microsoft Corporation
- Inventors: Matthew C. Odhner; Giedrius Zizys; Kent Schliiter
- Web page: https://patentgrep.com/patent/US7610186B2

## CPC

- G06F 11/3414: {Workload generation, e.g. scripts, playback}
- 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/3442: {for planning or managing the needed capacity}
- G06F 11/3457: {Performance evaluation by simulation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A methods and systems for capacity planning of server resources are described wherein a load simulation tool is used to use actual data gathered from a server cluster during operation to simulate server cluster operation in which the load (requests per second) can be increased, and the effects on the utilization of resources can be observed. Plans containing recommendations are then presented to a system user so the user can make decisions necessary regarding whether to change configuration hardware to meet expected load increases in the future.

## Claims

### Claim 1

One or more computer-readable media having computer-readable instructions thereon which, when executed by one or more computers, cause the computers to implement acts of:
recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
using a load simulation tool that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
specifying a load to be handled by the server cluster; and
deriving server resource utilization estimates corresponding to the specified load, wherein the using a load simulation tool comprises:
creating a test script from the recorded values;
running the test script on a master client to simulate load and server resource utilization conditions that existed on a server when the recorded values were recorded; and
increasing the load on the server, when the test script is running, until a maximum load that can be handled by the server is obtained, wherein:
the server cluster contains a set of identical servers;
running the test script run on the master client simulates server cluster operation on only one of the servers of the server cluster; and
the method further comprises extrapolating results obtained on the one server using the number of servers in the set of identical servers to obtain the maximum load that can be handled by the server cluster.

### Claim 2 (depends on 1)

The computer readable media as recited in claim 1, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
displaying the server resource utilization estimates; and
recommending a plan to optimize processing of the specified load.

### Claim 3 (depends on 1)

The computer readable media as recited in claim 1, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
displaying the server resource utilization estimates; and
recommending a plan to optimize processing of the specified load, wherein the plan recommends a change in the hardware configuration of the server cluster.

### Claim 4 (depends on 1)

The computer readable medium as recited in claim 1, wherein the computer-readable instructions cause the one or more computers to employ values for maximum load, the recorded values, the specified load, and the server resource utilization estimates that are stored in non-volatile memory.

### Claim 5 (depends on 1)

The computer readable media as recited in claim 1, further comprising computer readable instructions configured to cause the one or more computers to perform acts of using a load simulation tool comprise instructions configured to cause the one or more processors to perform acts of:
creating a test script from the recorded values;
running the test script on a master client to simulate load and server resource utilization conditions that existed on a server when the recorded values were recorded; and
increasing the load on the server, when the test script is running, until a maximum load that can be handled by the server is obtained.

### Claim 6 (depends on 5)

The computer readable media as recited in claim 5, wherein the computer readable instructions configured to cause the one or more computers to perform acts including increasing the load on the server further comprise instructions to cause the one or more processors to perform acts including multiplying the number of users utilizing the server cluster when the recorded values were recorded, thereby multiplying the resources utilized by the users.

### Claim 7 (depends on 5)

The computer readable media as recited in claim 5, wherein the computer readable instructions configured to cause the one or more computers to perform acts including increasing the load on the server further comprise instructions to cause the one or more processors to perform acts including decreasing the amount of time between user requests, thereby increasing the resources utilized by the users.

### Claim 8 (depends on 5)

The computer readable media as recited in claim 5, wherein the computer readable instructions configured to cause the one or more computers to perform acts including increasing the load on the server further comprise instructions to cause the one or more processors to perform acts including increasing the load on the server until a maximum load that can be handled by the server is obtained, and further comprising instructions to cause the one or more processors to perform acts including:
observing a service rate exhibited by the server on which the simulation is being performed; and
recognizing that the maximum load has been obtained when an increase in the load does not increase the service rate.

### Claim 9 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization is general server utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
dividing the specified load by the maximum load to derive the general server utilization estimate.

### Claim 10 (depends on 1)

The computer readable media as recited in claim 1, wherein the instructions for causing the one or more computers to perform acts including recording server cluster data during operation of the server cluster comprise instructions to cause the one or more computers to perform acts including recording data directly from the server cluster and recording data that is input by a server cluster user.

### Claim 11 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization estimates comprise estimates for one or more of the following: processor utilization, memory utilization, communication bandwidth utilization, and general server utilization.

### Claim 12 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises general server utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving general server utilization by solving:
U
=
L
X
wherein U is the general server utilization; X is the maximum load that can be handled by the server cluster; and L is the specified load.

### Claim 13 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises processor utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving processor utilization by solving:
U
CPU
=
a
ⅇ
b
·
L
wherein UCPU is processor utilization; L is the specified load; a is processor regression constant a; and b is processor regression constant b.

### Claim 14 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises communication bandwidth utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving communication bandwidth utilization by solving:
U
B
=
F
TCP
B
·
(
c
+
d
·
L
)
wherein UB is communication bandwidth utilization; L is the specified load; c is processor regression constant c; d is processor regression constant d; FTCP is a transmission overhead factor; and B is the total communication bandwidth available.

### Claim 15 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises memory utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving memory utilization by solving:
U
M
=
N
·
(
M
TCP
+
M
IISStruct
)
+
M
OS
+
M
IIS
M
wherein N is a total number of concurrent connections derived by solving:
N
=
L
(
X
-
L
)
+
S
⁢
⁢
1
·
L
wherein: UM is memory utilization; MTCP is a an amount of memory necessary to support the connections for communications; MIISStruct is the amount of memory necessary to support data structures associated with each connection; MOS is the amount of memory required by a server operating system; MIIS is the amount of memory required by a server communication program; M is the total amount of memory available; L is the specified load; X is the maximum load that can be handled by the server cluster; and S1 is a connection memory factor that is the adjusted average of the incoming connections at different speeds.

### Claim 16 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises general server utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving general server utilization by solving:
U
=
L
X
wherein U is the general server utilization; X is the maximum load that can be handled by the server cluster; and L is the specified load.

### Claim 17 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises processor utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving processor utilization by solving:
U
CPU
=
a
ⅇ
b
·
L
wherein UCPU is processor utilization; L is the specified load; a is processor regression constant a; and b is processor regression constant b.

### Claim 18 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises communication bandwidth utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving communication bandwidth utilization by solving:
U
B
=
F
TCP
B
·
(
c
+
d
·
L
)
wherein UB is communication bandwidth utilization; L is the specified load; c is processor regression constant c; d is processor regression constant d; FTCP is a transmission overhead factor; and B is the total communication bandwidth available.

### Claim 19 (depends on 1)

The computer readable media as recited in claim 1, wherein the server resource utilization comprises memory utilization, further comprising computer readable instructions configured to cause the one or more computers to perform acts of:
deriving memory utilization by solving:
U
M
=
N
·
(
M
TCP
+
M
IISStruct
)
+
M
OS
+
M
IIS
M
wherein N is a total number of concurrent connections derived by solving:
N
=
L
(
X
-
L
)
+
S
⁢
⁢
1
·
L
wherein: UM is memory utilization; MTCP is a an amount of memory necessary to support the connections for communications; MIISStruct is the amount of memory necessary to support data structures associated with each connection; MOS is the amount of memory required by a server operating system; MIIS is the amount of memory required by a server communication program; M is the total amount of memory available; L is the specified load; X is the maximum load that can be handled by the server cluster; and S1 is a connection memory factor that is the adjusted average of the incoming connections at different speeds.

### Claim 20

An apparatus for deriving server resource utilization estimates for a server cluster comprising:
one or more processors to perform calculations which derive the server resource utilization estimates for the server cluster;
one or more memory devices, accessible by the one or more processors;
means for recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
means for using a load simulation tool that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
means for specifying a load to be handled by the server cluster;
means for deriving server resource utilization estimates corresponding to the specified load;
means for displaying the server resource utilization estimates; and
means for recommending a plan to optimize processing of the specified load, wherein the plan recommends a change in the hardware configuration of the server cluster, wherein the server resource utilization is processor utilization, the apparatus being further configured for:
finding a functional dependency approximation between processor utilization and load;
transforming functional dependency into linear form by using logarithmic transformation;
deriving first and second processor regression constants using linear regression methodology;
dividing the first processor regression constant by e to the power of the product of the second processor regression constant and the specified load to obtain the processor utilization estimate.

### Claim 21

An apparatus for deriving server resource utilization estimates for a server cluster comprising:
one or more processors to perform calculations which derive the server resource utilization estimates for the server cluster;
one or more memory devices, accessible by the one or more processors;
means for recording server cluster data during operation of the means for recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
means for load simulating that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
means for specifying a load to be handled by the server cluster;
means for deriving server resource utilization estimates corresponding to the specified load;
means for displaying the server resource utilization estimates; and
means for recommending a plan to optimize processing of the specified load, wherein the plan recommends a change in the hardware configuration of the server cluster, wherein the server resource utilization is communication bandwidth utilization, the apparatus being further configured for:
finding a functional dependency approximation between communication bandwidth utilization;
transforming functional dependency into linear form by using logarithmic transformation;
deriving first and second bandwidth regression constants using linear regression methodology;
deriving a transmission overhead factor that, when applied to a certain size web page, results in the actual capacity necessary to transmit the web page;
deriving a weighted communication overhead factor by dividing the transmission overhead factor by the available communication bandwidth;
deriving an adjusted communication load by adding the first bandwidth regression constant to the product of the specified load and the second bandwidth regression constant; and
determining the communication bandwidth utilization estimate by multiplying the weighted communication overhead factor by the adjusted communication load.

### Claim 22

An apparatus for deriving server resource utilization estimates for a server cluster comprising:
one or more processors to perform calculations which derive the server resource utilization estimates for the server cluster;
one or more memory devices, accessible by the one or more processors;
means for recording server cluster data during operation of the means for recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
means for load simulating that, using the recorded data, determines a maximum load that can be handled by the server cluster;
means for specifying a load to be handled by the server cluster;
means for deriving server resource utilization estimates corresponding to the specified load;
means for displaying the server resource utilization estimates; and
means for recommending a plan to optimize processing of the specified load, wherein the plan recommends a change in the hardware configuration of the server cluster, wherein the server resource utilization is memory utilization, the apparatus further including means for:
deriving a connection memory factor that is the adjusted average of the incoming connections at different speeds;
deriving a weighted connection memory factor by multiplying the connection memory factor by the specified load;
deriving a page load ratio by dividing the specified load by the difference of the maximum load value and the specified load;
deriving a total number of concurrent connections by adding the weighted connection memory factor and the page load ratio; and
deriving a gross memory utilization by multiplying the total number of concurrent connections by the sum of the amount of memory necessary to support each connection for communications and the amount of memory necessary to support data structures associated with each connection, and adding the amount of memory required by a server operating system and the amount of memory required by the server communication program; and
deriving a memory utilization estimate by dividing the gross memory utilization by total memory available.

### Claim 23

An apparatus for deriving server resource utilization estimates for a server cluster comprising:
one or more processors to perform calculations which derive the server resource utilization estimates for the server cluster;
one or more memory devices, accessible by the one or more processors;
means for recording server cluster data during operation of the means for recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
means for load simulating that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
means for specifying a load to be handled by the server cluster; and
means for deriving server resource utilization estimates corresponding to the specified load, wherein the load simulating means is configured to perform acts including:
creating a test script from the recorded values;
running the test script on a master client to simulate load and server resource utilization conditions that existed on a server when the recorded values were recorded; and
increasing the load on the server, when the test script is running, until a maximum load that can be handled by the server is obtained, wherein:
the server cluster contains a set of non-identical servers;
running the test script run on the master client further comprises running the test script on each of the non-identical servers in the server cluster; and
the method further comprises summing the results obtained from each non-identical server in the cluster to obtain the maximum load that can be handled by the server cluster.

### Claim 24

A system, comprising:
a server cluster having one or more servers, one of which is a primary server that controls the operation of the server cluster;
means for controlling the cluster resident in memory on the primary server of the server cluster, the cluster controller means controlling communications between the primary server and secondary servers, if any, and between clients and the server cluster;
an operating system resident in the memory of the primary server;
a communications program within the cluster controller to provide communications capability for the system;
means for filtering configured to collect server data indicating certain operating parameters for the server cluster;
a monitor on each server in the server cluster to collect server data indicating certain operating parameters for the server cluster;
a user interface to collect data input by a user;
a capacity planner within the cluster controller configured to utilize the collected server data to derive one or more server resource utilization estimates for server resources to determine how handling a specified load will affect the utilization of the server resources, and to produce a plan recommending changes to be made to the server cluster to adequately accommodate the specified load; and
a load simulation tool configured to use the collected data to create a simulation script that, when run on a master client, simulates the operation of the server cluster system to allow the user to find the maximum load that the server cluster can handle; and
wherein the maximum load obtained through the use of the load simulation tool is utilized in the derivation of the one or more server resource utilization estimates, wherein the filtering means is an ISAPI filter.

### Claim 25 (depends on 24)

The system as recited in claim 24, wherein the collected server data and the plans are stored in the memory.

### Claim 26 (depends on 25)

The system as recited in claim 25, wherein the simulation script is run from a master client connected to the server cluster, and wherein the simulation is performed on only one server of the server cluster.

### Claim 27 (depends on 26)

The system as recited in claim 26, wherein the load simulation tool is further configured to extrapolate results from the simulation on one server in the server cluster to derive results for the total number of servers in the server cluster.

### Claim 28 (depends on 24)

The system as recited in claim 24, wherein:
the load simulation tool is further configured to run a simulation script from a master client connected to the server cluster;
the simulation is performed on each server in the server cluster; and
results from each server are summed to derive results of the total number of servers in the server cluster.

### Claim 29 (depends on 24)

The simulation tool as recited in claim 24, wherein the load simulation tool being configured to create the test script is further configured to allow the user to create the test script to increase the load on the server on which the simulation is running and observe the effect of such an increase in load on the server resource utilization displays.

### Claim 30

A system, comprising:
a server cluster having one or more servers, one of which is a primary server that controls the operation of the server cluster;
cluster controller means resident in memory on the primary server of the server cluster, the cluster controller means for controlling communications between the primary server and secondary servers, if any, and between clients and the server cluster;
an operating system resident in the memory of the primary server;
a communications program within the cluster controller to provide communications capability for the system;
filtering means configured to collect server data indicating certain operating parameters for the server cluster;
a monitor on each server in the server cluster to collect server data indicating certain operating parameters for the server cluster;
a user interface to collect data input by a user;
a capacity planner within the cluster controller configured to utilize the collected data to derive one or more server resource utilization estimates for server resources to determine how handling a specified load will affect the utilization of the server resources, and to produce a plan recommending changes to be made to the server cluster to adequately accommodate the specified load; and
a load simulation tool configured to use the collected server data to create a simulation script that, when run on a master client, simulates the operation of the server cluster system to allow the user to find the maximum load that the server cluster can handle; and
wherein the maximum load obtained through the use of the load simulation tool is utilized in the derivation of the one or more server resource utilization estimates, wherein the server resource utilization derived by the capacity planner comprises general server utilization, and the capacity planner is further configured to derive general server utilization by solving:
U
=
L
X
wherein U is the general server utilization; X is the maximum load that can be handled by the server cluster which is determined by the load simulation tool; and L is the specified load.

### Claim 31

A system, comprising:
a server cluster having one or more servers, one of which is a primary server that controls the operation of the server cluster;
cluster controller means resident in memory on the primary server of the server cluster, the cluster controller means for controlling communications between the primary server and secondary servers, if any, and between clients and the server cluster;
an operating system resident in the memory of the primary server;
a communications program within the cluster controller to provide communications capability for the system;
filtering means configured to collect server data indicating certain operating parameters for the server cluster;
a monitor on each server in the server cluster to collect server data indicating certain operating parameters for the server cluster;
a user interface to collect data input by a user;
a capacity planner within the cluster controller configured to utilize the collected server data and the data collected by user input to derive one or more server resource utilization estimates for server resources to determine how handling a specified load will affect the utilization of the server resources, and to produce a plan recommending changes to be made to the server cluster to adequately accommodate the specified load; and
a load simulation tool configured to use the collected data to create a simulation script that, when run on a master client, simulates the operation of the server cluster system to allow the user to find the maximum load that the server cluster can handle; and
wherein the maximum load obtained through the use of the load simulation tool is utilized in the derivation of the one or more server resource utilization estimates, wherein the server resource utilization derived by the capacity planner comprises general server utilization, and the capacity planner is further configured to derive general server utilization by solving:
U
CPU
=
a
ⅇ
b
·
L
wherein UCPU is processor utilization; L is the specified load; a is processor regression constant a; and b is processor regression constant b.

### Claim 32

A system, comprising:
a server cluster having one or more servers, one of which is a primary server that controls the operation of the server cluster;
cluster controller means resident in memory on the primary server of the server cluster, the cluster controller means for controlling communications between the primary server and secondary servers, if any, and between clients and the server cluster;
an operating system resident in the memory of the primary server;
a communications program within the cluster controller to provide communications capability for the system;
filtering means configured to collect server data indicating certain operating parameters for the server cluster;
a monitor on each server in the server cluster to collect server data indicating certain operating parameters for the server cluster;
a user interface to collect data input by a user;
a capacity planner within the cluster controller configured to utilize the collected server data and the data collected by user input to derive one or more server resource utilization estimates for server resources to determine how handling a specified load will affect the utilization of the server resources, and to produce a plan recommending changes to be made to the server cluster to adequately accommodate the specified load; and
a load simulation tool configured to use the collected data to create a simulation script that, when run on a master client, simulates the operation of the server cluster system to allow the user to find the maximum load that the server cluster can handle; and
wherein the maximum load obtained through the use of the load simulation tool is utilized in the derivation of the one or more server resource utilization estimates, wherein the server resource utilization derived by the capacity planner comprises communication bandwidth utilization, and the capacity planner is further configured to derive communication bandwidth utilization by solving:
U
B
=
F
TCP
B
·
(
c
+
d
·
L
)
wherein UB is communication bandwidth utilization; L is the specified load; c is processor regression constant c; d is processor regression constant d; FTCP is a transmission overhead factor; and B is the total communication bandwidth available.

### Claim 33

A system, comprising:
a server cluster having one or more servers, one of which is a primary server that controls the operation of the server cluster;
cluster controller means resident in memory on the primary server of the server cluster, the cluster controller means for controlling communications between the primary server and secondary servers, if any, and between clients and the server cluster;
an operating system resident in the memory of the primary server;
a communications program within the cluster controller to provide communications capability for the system;
filtering means configured to collect server data indicating certain operating parameters for the server cluster;
a monitor on each server in the server cluster to collect server data indicating certain operating parameters for the server cluster;
a user interface to collect data input by a user;
a capacity planner within the cluster controller configured to utilize the collected server data and the data collected by user input to derive one or more server resource utilization estimates for server resources to determine how handling a specified load will affect the utilization of the server resources, and to produce a plan recommending changes to be made to the server cluster to adequately accommodate the specified load; and
a load simulation tool configured to use the collected data to create a simulation script that, when run on a master client, simulates the operation of the server cluster system to allow the user to find the maximum load that the server cluster can handle; and
wherein the maximum load obtained through the use of the load simulation tool is utilized in the derivation of the one or more server resource utilization estimates, wherein the server resource utilization derived by the capacity planner comprises communication bandwidth utilization, and the capacity planner is further configured to derive communication bandwidth utilization by solving:
U
M
=
N
·
(
M
TCP
+
M
IISStruct
)
+
M
OS
+
M
IIS
M
wherein N is a total number of concurrent connections derived by solving:
N
=
L
(
X
-
L
)
+
S
⁢
⁢
1
·
L
wherein: UM is memory utilization; MTCP is a an amount of memory necessary to support the connections for communications; MIISStruct is the amount of memory necessary to support data structures associated with each connection; MOS is the amount of memory required by a server operating system; MIIS is the amount of memory required by a server communication program; M is the total amount of memory available; L is the specified load; X is the maximum load that can be handled by the server cluster; and S1 is a connection memory factor that is the adjusted average of the incoming connections at different speeds.

### Claim 34

A method for causing one or more computers to derive server resource utilization estimates for a server cluster having at least one primary server and at least one secondary server coupled to the primary server, the method comprising:
recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
invoking a load simulation tool that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
specifying a load to be handled by the server cluster;
deriving server resource utilization estimates corresponding to the specified load; and
recommending a plan to optimize processing of the specified load, further comprising causing the computers to display the server resource utilization estimates.

### Claim 35

A computer-implemented method comprising:
recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
using a load simulation tool that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
specifying a load to be handled by the server cluster;
deriving server resource utilization estimates corresponding to the specified load; and
recommending a plan to optimize processing of the specified load, further comprising recommending a change in the hardware configuration of the server cluster to optimize processing of the specified load.

### Claim 36

A computer-implemented method for deriving server resource utilization estimates for a server cluster having at least one primary server and at least one secondary server coupled to the primary server, the method including:
recording server cluster data during operation of the server cluster, at least some of the server cluster data indicating server resource parameter values;
using a load simulation tool that, using the recorded server cluster data, determines a maximum load that can be handled by the server cluster;
specifying a load to be handled by the server cluster;
deriving server resource utilization estimates corresponding to the specified load; and
recommending a plan to optimize processing of the specified load, further comprising causing the computer to store data comprising the maximum load, the recorded values, the specified load, and the server resource utilization estimates in non-volatile memory.
