WO2005008493A1 - Improving transaction-processing performance by preferentially reusing frequently used processes - Google Patents
Improving transaction-processing performance by preferentially reusing frequently used processes Download PDFInfo
- Publication number
- WO2005008493A1 WO2005008493A1 PCT/US2002/017099 US0217099W WO2005008493A1 WO 2005008493 A1 WO2005008493 A1 WO 2005008493A1 US 0217099 W US0217099 W US 0217099W WO 2005008493 A1 WO2005008493 A1 WO 2005008493A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- transaction
- transaction request
- server
- recently
- means arranged
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Definitions
- the present invention relates to an apparatus and method for improving transaction processing performance in a transaction processing system, particularly but not exclusively, in a transaction processing computing system comprising a plurality of processors.
- a common way to handle a large number of simultaneous user requests on a single computing system is to divide the requests either by software or by hardware, into separate "tasks" or "transactions". In a software environment, this has become known as multi-tasking, a method whereby simultaneous user requests are placed in a queue, and executed in a sequential manner by a process.
- a transaction request will be understood to be a request generated by a software application, for some task to be performed by a computing system.
- a process will be understood to be a component (usually software) within an operating system which accepts a transaction request (hereinafter referred to as a "transaction") , queues the transaction, and then processes the transaction. Processing the transaction will be understood to mean carrying out a task or tasks requested by the transaction.
- the task and/or tasks may include any suitable instructions, such as searching a database, carrying out a mathematical calculation, writing to a file, accessing a hardware device, or any other activity which may be performed by a computing system.
- the ability to handle multiple simultaneous user requests has commonly been enhanced by using more than one central processing unit (processor) .
- a page fault will be understood to mean an error which occurs when a program requests data that is not currently loaded into memory. This requires an operating system to fetch the requested data from a storage device and load it into memory. Similarly, the same performance degradation may occur with any type of associated cache memory whether it be processor cache, main system memory, or virtual memory on a data storage device, such as a hard disk.
- processor cache main system memory
- virtual memory on a data storage device, such as a hard disk.
- a method of scheduling transactions within a computing system comprising the steps of receiving a transaction request from a client, determining the idle server process that most recently finished execution of a previous transaction, and forwarding the transaction request to the most recently idle process.
- the method is implemented as a sub-module within a gateway module, whereby the gateway module is responsible for receiving transaction requests from a client, and allocating the requests to server processes.
- the method further comprises the step of storing the most recent finish time and the status of a server process in a database.
- a system arranged to schedule transactions within a computing environment comprising a transaction request means arranged to receive a transaction request from a client, determination means, arranged to determine the idle server process that most recently finished execution of a previous transaction, and forwarding means arranged to forward the transaction request to the most recently idle process.
- the present invention provides a computer program arranged, when loaded onto a computer, to instruct the computer to operate in accordance with a system for scheduling transactions within a computing system, comprising a transaction request means arranged to receive a transaction request from a client, determination means arranged to determine the idle server process that most recently finished execution of a previous transaction, and forwarding means arranged to forward the transaction request to the most recently idle process.
- the present invention provides a computer readable medium having a computer readable program code embodied therein for causing a computer to operate in accordance with a system for scheduling transactions within a computing system, comprising a transaction request means arranged to receive a transaction request from a client, determination means arranged to determine the idle server process that most recently finished execution of a previous transaction, and forwarding means arranged to forward the transaction request to the most recently idle process.
- Figure 1 is a schematic block diagram illustrating a prior art system for scheduling transactions across several processors (e.g. several separate CPUs);
- Figure 2 is a flow diagram illustrating a request assignment algorithm in accordance with an embodiment of the present invention, and
- Figure 3 is a schematic block diagram illustrating a system in accordance with an embodiment of the present invention.
- the present invention broadly relates to a system and a corresponding method which preferably enables a more efficient use of multiple process or multi-tasking computing systems .
- an embodiment of the present invention applies to an Enterprise Application Environment as implemented on the WindowsTM and UnixTM platforms.
- the term Enterprise Application Environment will be understood to mean one type of computing system arranged to process many user requests at once. This could include, but is not limited to, a database application server, web server, or any other type of computing system arranged to process a large number of simultaneous user requests. It will also be understood that whilst the particular embodiment described relates to an Enterprise Application Environment, the present invention may be used in any computing system, whether the computing system consists of a single processor, or multiple processors.
- Figure 1 depicts a block diagram of a common prior art system for scheduling transactions across several processors .
- the block diagram in Figure 1 illustrates an enterprise application environment architecture, where each client 10a, 10b, ..., lOn runs in a separate process and where each process may be running on a separate machine or a separate processor within the same machine.
- the "server” denoted in figure 1 may also refer to a server process. That is, a server process is a "virtual" server that may be implemented in software alone (i.e. more than one server process may map onto a single processor or computing system) .
- lOn may be a user located at a remote terminal, making a request from their user terminal to the server, or the client may also take the form of a request from another software application residing on the computing system.
- Each server process 20a, 20b,..., 20n also runs in a separate process. It will be understood that in the context of the present invention, the term “server process” will refer to a particular process implemented within a computing system, and the term does not necessarily denote a physically separate computing system or a separate CPU within the same computing system. However, the term “server process” may encompass a separate physical computing system or a separate CPU within the same computing system.
- the clients 10a, 10b, ... , lOn connect to a gateway process 30.
- the gateway process functions as a conduit forwarding transaction requests to the server processes, and receiving server responses for forwarding to the appropriate client.
- the server processes 20a, 20b, ... , 20n remain idle until they receive a transaction request from the gateway process 30.
- the server performs the appropriate processing, and subsequently relays a response to the gateway process 30.
- the gateway process 30 then relays the server process response to a client lOn.
- the transaction requests are commonly randomly assigned, or assigned in a "round robin" fashion, by the gateway process 30 to an available server 20n. It will be understood that the gateway process is commonly implemented as a module within an operating system which resides on the computing system.
- FIG. 2 illustrates a system architecture implementing an embodiment of the present invention.
- a gateway module arranged to receive transaction requests and forward the transaction requests to server processes.
- a three step algorithm is used to determine the server process to which the gateway process should forward the next transaction request.
- the first step SI is for the gateway process to wait for the transaction request from the client.
- the second step S2 is to determine the idle server process that has most recently finished execution of a previous transaction.
- the third step S3 is to forward the transaction request to the server process which has most recently finished execution of the previous transaction.
- the second step S2 and third step S3 is achieved by the addition of a new software module that tracks the amount of time each server process has been idle and forwards the current transaction request to the process that has most recently become available on an available server.
- the addition of the new module is shown in the block diagram of Figure 3, which represents a system in accordance with an embodiment of the present invention.
- Clients 40a, 40b, ..., 40n interact with the new gateway process 51 which consists of two sub-modules. The first is the client interface 52 which is responsible for interacting with client requests.
- the new module 53 performs the function of determining the idle server process that most recently finished execution of the previous transaction, in addition to the task of forwarding transaction requests to the server processes 50a, 50b, ... , 50n.
- the new module 53 is arranged to hold a number of tables, each table containing a number of entries equal to the number of (server) processes available.
- the first table held by the new module 53 is a server process status table, which contains a flag that indicates the current status of each server process (i.e. whether the server process is busy or free) .
- the second table held by the new module 53 contains the server process finish time (i.e. the time the server process finished processing the last transaction request) .
- the new module 53 When a new transaction request arrives from the client, after passing through the gateway process, the new module 53 will firstly find the server process with the highest free time (by searching the server process finish time table) and the server process status (as found in the server process status table) .
- the phrase "highest free time” will be understood to mean the server process time table entry with the most recent completion time.
- the new module 53 will assign the incoming transaction request to a currently free server process with the highest free time (by placing the transaction request into the processes message queue) and will subsequently set the entry in the server process status table to "busy".
- the new module 53 will set the server process status flag to "free" in the server process status table and store the current time in the server process finish time table. It will be understood that whilst, in this particular embodiment, the new module sets the status flag and stores the current time other implementations are possible.
- the server process may perform these functions.
- the gateway process contains a table with three columns, and four entries in each column. These four entries denote the four server processes. Let us assume that the current time is 12.05 and the gateway process has received a transaction request. The gateway process must assign the transaction request to one of the four server processes. At this point in time, the table contains the following entries:
- server process 1 is busy (and the "finish time” represents the finish time of the previously processed transaction) .
- server processes 2, 3 and 4 are free. Of these free server processes, server process 3 has the highest finish time value. Therefore, according to the algorithm outlined in the preceding paragraphs, the new module 53 forwards the transaction to server process 3.
- the new module subsequently changes the table entry for server process 3 to "busy", but it will be noted that the finish time for server process 3 remains at 12.02, since the finish time represents the finish time of the previously processed transaction.
- server process 1 finishes processing the transaction, and therefore updates the status entry in the table to reflect this change.
- the new module 53 transaction will assign the transaction to the most recently used server process 1, since server process 1 meets the criteria of being a free server process with the highest finish time entry.
- the transaction request at server process 3 finishes.
- the table will be updated such that the status of server process 3 will change to free, and the finish time for server process 3 will be changed to 12.10.
- a new transaction arrives at the gateway process, and the new module 53 will assign the new transaction request to server process 3. It should be noted that throughout this worked example, server processes 2 and 4 were ignored by the new module and no transactions were assigned to either server process, even though they were free to perform the transaction request. Instead, only server processes 1 and 3 received transactions for processing as they were not only free but also the most recently used server processes.
- the entire process involves setting the values in status and finish time tables, searching for a minimum value in a small table (typically the number of server processes is well below 100) and reading the system clock (routinely done for housekeeping purposes) .
- This method further preferably reduces the need for setting fixed processor affinities to server processors, as the inherent "process stickiness" produced by the present embodiment will keep the most recently used transaction request on the same process.
- the new module 53 provides a number of benefits over the existing gateway process 30 shown in Figure 1. Firstly, the server process to which the new transaction request is forwarded by the new module 53 is the server process which has most recently completed execution of the previous transaction request. This particular server process is the least likely server process to have had the process memory cache flushed or overwritten.
- the performance improvement due to the reduced probability of cache misses will vary. However, irrespective of the operating system residing on the computing system, there is preferably at worst no negative impact on performance, and at best a positive impact on performance. In addition, the most recently requested transactions are least likely to have had the associated process virtual memory swapped out to disk. Therefore, it is less likely that page faults would occur, also improving performance. Furthermore with continued use of an embodiment of the present invention, a natural processing order is formed, such that the most frequent transaction requests are prioritised over the least frequent transaction requests . In turn, the least frequently used processes will be the first transactions to have their associated process memory swapped out to disk. This results in three additional benefits that compound the performance gains described above.
- the present invention provides more efficient use of computing resources, and overcomes the sub-optimal prior solutions for process scheduling in multi-processor and/or multi-thread environments. It will be understood that the invention is not limited to multi-processor environments or computing systems. The invention may be used on a single processor computing system to allocated incoming transaction requests to server processes.
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2002/017099 WO2005008493A1 (en) | 2002-05-31 | 2002-05-31 | Improving transaction-processing performance by preferentially reusing frequently used processes |
EP02741775A EP1540461A4 (en) | 2002-05-31 | 2002-05-31 | Improving transaction-processing performance by preferentially reusing frequently used processes |
US10/516,474 US7222178B2 (en) | 2002-05-31 | 2002-05-31 | Transaction-processing performance by preferentially reusing frequently used processes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2002/017099 WO2005008493A1 (en) | 2002-05-31 | 2002-05-31 | Improving transaction-processing performance by preferentially reusing frequently used processes |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2005008493A1 true WO2005008493A1 (en) | 2005-01-27 |
Family
ID=34078432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2002/017099 WO2005008493A1 (en) | 2002-05-31 | 2002-05-31 | Improving transaction-processing performance by preferentially reusing frequently used processes |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP1540461A4 (en) |
WO (1) | WO2005008493A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222178B2 (en) * | 2002-05-31 | 2007-05-22 | Unisys Corporation | Transaction-processing performance by preferentially reusing frequently used processes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918017A (en) * | 1996-08-23 | 1999-06-29 | Internatioinal Business Machines Corp. | System and method for providing dynamically alterable computer clusters for message routing |
US6185619B1 (en) * | 1996-12-09 | 2001-02-06 | Genuity Inc. | Method and apparatus for balancing the process load on network servers according to network and serve based policies |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5553239A (en) * | 1994-11-10 | 1996-09-03 | At&T Corporation | Management facility for server entry and application utilization in a multi-node server configuration |
CA2181009C (en) * | 1996-07-11 | 1999-09-07 | Paul Erb | Multiple owner resource management |
DE60035422D1 (en) * | 1999-08-13 | 2007-08-16 | Sun Microsystems Inc | ELEGANT DISTRIBUTION OF LOAD COMPENSATION FOR APPLICATION SERVER |
-
2002
- 2002-05-31 WO PCT/US2002/017099 patent/WO2005008493A1/en active Search and Examination
- 2002-05-31 EP EP02741775A patent/EP1540461A4/en not_active Ceased
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918017A (en) * | 1996-08-23 | 1999-06-29 | Internatioinal Business Machines Corp. | System and method for providing dynamically alterable computer clusters for message routing |
US6185619B1 (en) * | 1996-12-09 | 2001-02-06 | Genuity Inc. | Method and apparatus for balancing the process load on network servers according to network and serve based policies |
Non-Patent Citations (1)
Title |
---|
See also references of EP1540461A4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222178B2 (en) * | 2002-05-31 | 2007-05-22 | Unisys Corporation | Transaction-processing performance by preferentially reusing frequently used processes |
Also Published As
Publication number | Publication date |
---|---|
EP1540461A4 (en) | 2007-10-03 |
EP1540461A1 (en) | 2005-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3073374B1 (en) | Thread creation method, service request processing method and related device | |
JP4028674B2 (en) | Method and apparatus for controlling the number of servers in a multi-system cluster | |
US5606685A (en) | Computer workstation having demand-paged virtual memory and enhanced prefaulting | |
US5784698A (en) | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments | |
US20060037017A1 (en) | System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another | |
US8627325B2 (en) | Scheduling memory usage of a workload | |
US7624208B2 (en) | Method, system, and computer program for managing a queuing system | |
EP2256632B1 (en) | Multi-processor scheduling | |
US20050283786A1 (en) | Optimizing workflow execution against a heterogeneous grid computing topology | |
US20050022173A1 (en) | Method and system for allocation of special purpose computing resources in a multiprocessor system | |
US20080015712A1 (en) | Virtualization of a global interrupt queue | |
CN109564528B (en) | System and method for computing resource allocation in distributed computing | |
US20040088498A1 (en) | System and method for preferred memory affinity | |
US20060037021A1 (en) | System, apparatus and method of adaptively queueing processes for execution scheduling | |
JP4348639B2 (en) | Multiprocessor system and workload management method | |
CN114265679A (en) | Data processing method and device and server | |
KR100400165B1 (en) | Processing system scheduling | |
CN110838987B (en) | Queue current limiting method and storage medium | |
US6631446B1 (en) | Self-tuning buffer management | |
CN114721818A (en) | Kubernetes cluster-based GPU time-sharing method and system | |
CN110750339B (en) | Thread scheduling method and device and electronic equipment | |
CN113327053A (en) | Task processing method and device | |
US7222178B2 (en) | Transaction-processing performance by preferentially reusing frequently used processes | |
JP2004030567A (en) | Method and system for maintaining queue | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2006015870 Country of ref document: US Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 10516474 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2002314852 Country of ref document: AU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2002741775 Country of ref document: EP |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AU US |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWP | Wipo information: published in national office |
Ref document number: 2002741775 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 10516474 Country of ref document: US |