# US 9,436,513 B2 · Method of SOA performance tuning

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

- Number: US 9,436,513 B2
- Document ID: US9436513B2
- Status: Granted
- Kind: B2
- Application number: 14/749,422
- Filed: 2015-06-24
- Published: 2015-10-15
- Granted: 2016-09-06
- Earliest claimed: 2012-09-25
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Bo Stern; Dmitry Kocherginsky
- Web page: https://patentgrep.com/patent/US9436513B2

## CPC

- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- 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/3409: {for performance assessment}
- G06F 11/3442: {for planning or managing the needed capacity}
- G06F 2201/875: Monitoring of systems including the internet
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods of SOA performance tuning are provided. In accordance with an embodiment, one such method can comprise monitoring a plurality of processing stages, calculating a processing speed for each of the processing stages, and tuning a slowest processing stage of the plurality of processing stages.

## Claims

### Claim 1

A method of performance tuning processing stages in a computer system, the method comprising:
monitoring a plurality of processing stages;
calculating a processing speed for each of the processing stages; and
tuning a slowest processing stage of the plurality of processing stages, wherein tuning the slowest processing stage of the plurality of processing stages comprises:
calculating a new number of threads to be allocated to the slowest processing stage by dividing the processing speed for a fastest processing stage by a thread rate for the slowest processing stage; and
allocating the new number of threads to the slowest processing stage,
wherein monitoring the plurality of processing stages comprises:
determining a thread rate for each processing stage, wherein the thread rate for each processing stage is a number of messages which can be processed by a thread in a specified time period; and
determining a number of threads enabled for each processing stage, and
wherein the processing speed is a function of the determined thread rate.

### Claim 2 (depends on 1)

The method of claim 1 wherein calculating a processing speed for each of the processing stages comprises:
multiplying the thread rate by the number of threads enabled for each processing stage to determine the processing speed for each processing stage.

### Claim 3 (depends on 1)

The method of claim 1 further comprising:
monitoring a plurality of queues, wherein each queue is associated with a different processing stage and includes messages to be processed; and
if a particular queue includes a number of messages greater than a threshold, then
reducing a number of threads allocated to a first processing stage in the plurality of processing stages, and
increasing a number of threads allocated to a particular processing stage associated with the particular queue.

### Claim 4 (depends on 1)

The method of claim 1 further comprising:
analyzing a service oriented architecture (SOA) process to identify the plurality of processing stages.

### Claim 5 (depends on 1)

The method of claim 1, wherein each processing stage is associated with a thread pool.

### Claim 6 (depends on 5)

The method of claim 5, wherein each thread pool is associated with a maximum number of threads, and wherein a number of threads allocated from each thread pool is less than or equal to the maximum number of threads enabled for that thread pool's associated processing stage.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
generating an audit report including the processing speed calculated for each processing stage of the plurality of processing stages.

### Claim 8 (depends on 7)

The method of claim 7, wherein monitoring a plurality of processing stages to determine a thread rate for each processing stage further comprises determining the thread rate based on the audit report.

### Claim 9

A system for performance tuning processing stages, comprising:
a computer, including a computer readable medium and processor;
a process, executing on the computer, wherein the process comprises a plurality of processing stages;
an automatic tuning module, wherein the automatic tuning module is operable to monitor the plurality of processing stages;
calculate a processing speed for each of the processing stages; and
automatically tune a slowest processing stage of the plurality of processing stages by:
calculating a new number of threads to be allocated to the slowest processing stage by dividing the processing speed for a fastest processing stage by a thread rate for the slowest processing stage; and
allocating the new number of threads to the slowest processing stage,
wherein to monitor the plurality of processing stages, the automatic tuning module is further operable to:
determine a thread rate for each processing stage, wherein the thread rate for each processing stage is a number of messages which can be processed by a thread in a specified time period; and
determine a number of threads enabled for each processing stage, and
wherein the processing speed is a function of the determined thread rate.

### Claim 10 (depends on 9)

The system of claim 9 wherein to calculate a processing speed for each of the processing stages, the automatic tuning module is further operable to:
multiply the thread rate by the number of threads enabled for each processing stage to determine the processing speed for each processing stage.

### Claim 11 (depends on 9)

The system of claim 9 wherein the automatic tuning module is further operable to:
monitor a plurality of queues, wherein each queue is associated with a different processing stage and includes messages to be processed; and
if a particular queue includes a number of messages greater than a threshold, then
reduce a number of threads allocated to a first processing stage in the plurality of processing stages, and
increase a number of threads allocated to a particular processing stage associated with the particular queue.

### Claim 12 (depends on 9)

The system of claim 9 wherein the automatic tuning module is further operable to:
analyze a service oriented architecture (SOA) process to identify the plurality of processing stages.

### Claim 13

A non-transitory computer readable storage medium including instructions stored thereon which, when executed by a processor, cause the processor to perform the steps of:
monitoring a plurality of processing stages;
calculating a processing speed for each of the processing stages; and
tuning a slowest processing stage of the plurality of processing stages by
calculating a new number of threads to be allocated to the slowest processing stage by dividing the processing speed for a fastest processing stage by the thread rate for the slowest processing stage; and
allocating the new number of threads to the slowest processing stage,
wherein monitoring the plurality of processing stages comprises:
determining a thread rate for each processing stage, wherein the thread rate for each processing stage is a number of messages which can be processed by a thread in a specified time period; and
determining a number of threads enabled for each processing stage, and
wherein the processing speed is a function of the determined thread rate.

### Claim 14 (depends on 13)

The non-transitory computer readable storage medium of claim 13 wherein the step of calculating a processing speed for each of the processing stages further comprises:
multiplying the thread rate by the number of threads enabled for each processing stage to determine the processing speed for each processing stage.

### Claim 15 (depends on 13)

The non-transitory computer readable storage medium of claim 13 further comprising:
monitoring a plurality of queues, wherein each queue is associated with a different processing stage and includes messages to be processed; and
if a particular queue includes a number of messages greater than a threshold, then
reducing a number of threads allocated to a first processing stage in the plurality of processing stages, and
increasing a number of threads allocated to a particular processing stage associated with the particular queue.
