Server stress testing using multiple concurrent client simulation
First Claim
1. In a system including multiple clients communicating with a server, wherein the server receives requests from the multiple clients, a method for using a single processor for simulating the multiple clients for testing a server stress, said method comprising the steps of:
- initiating execution of a send data thread for selecting one of the simulated multiple clients, wherein each of the simulated multiple clients is controlled by said send data thread of the single processor, said send data thread being adapted to initiate a plurality of I/O requests that result in a transmission being sent to said server for each of said simulated multiple clients;
initiating execution of a receive data thread, said receive data thread being adapted to process completed I/O requests initiated by said send data thread for each of said simulated multiple clients;
providing a data array wherein are stored state variables, each of said state variables representing a simulated state of one of said simulated multiple clients;
selecting, by said send data thread, one of said state variables and initiating an I/O request in response to said selected one of said state variables; and
receiving, by said receive data thread, notification of completion of said initiated I/O request and updating in said data array said selected one of said state variables.
2 Assignments
0 Petitions
Accused Products
Abstract
Method and system for simulating multiple concurrent clients on a network server to stress test the server. Each of one or more processors has one executable software thread, the send data thread, whereby I/O requests are initiated on behalf of all simulated clients. Each of the one or more processors has another executable software thread, the receive data thread, whereby I/O response data is received from the server on behalf of all simulated clients. A software object, such as a completion port, that is capable of detecting completion of an executable event allows the stress test to function using only two executable threads per processor. The efficiency of the server can be measured as the send data thread initiates I/O requests and as the server responds thereto. The stress test is flexible in that the number of simulated clients and the I/O requests initiated can vary widely. Moreover, many different types of network servers can be tested.
-
Citations
26 Claims
-
1. In a system including multiple clients communicating with a server, wherein the server receives requests from the multiple clients, a method for using a single processor for simulating the multiple clients for testing a server stress, said method comprising the steps of:
-
initiating execution of a send data thread for selecting one of the simulated multiple clients, wherein each of the simulated multiple clients is controlled by said send data thread of the single processor, said send data thread being adapted to initiate a plurality of I/O requests that result in a transmission being sent to said server for each of said simulated multiple clients;
initiating execution of a receive data thread, said receive data thread being adapted to process completed I/O requests initiated by said send data thread for each of said simulated multiple clients;
providing a data array wherein are stored state variables, each of said state variables representing a simulated state of one of said simulated multiple clients;
selecting, by said send data thread, one of said state variables and initiating an I/O request in response to said selected one of said state variables; and
receiving, by said receive data thread, notification of completion of said initiated I/O request and updating in said data array said selected one of said state variables. - View Dependent Claims (2, 3, 4, 5, 6, 7)
executing more than once said step of selecting, by said send data thread, one of said state variables and initiating an I/O request in response to said selected one of said state variables; and
executing more than once said step of receiving, by said receive data thread, notification of completion of said initiated I/O request and updating in said data array said selected one of said state variables.
-
-
3. A method for using a single processor for simulating the multiple clients for testing a server stress as defined in claim 2, further comprising the step of comparing the completion frequency at which notifications of completion of said I/O requests are received by said send data thread to the initiation frequency at which said I/O requests are initiated by said receive data thread.
-
4. A method for using a single processor for simulating the multiple clients for testing a server stress as defined in claim 1, further comprising the step of measuring a response time for said initiated I/O request, said response time being defined as the duration of time that elapses between initiating said I/O request and receiving said notification of said completion of said I/O request.
-
5. A method for using a single processor for simulating the multiple clients for testing a server stress as defined in claim 1, further comprising the steps of:
-
said send data thread waiting a specified amount of time after initiating said I/O request; and
initiating, by said send data thread, a second I/O request.
-
-
6. A method for using a single processor for simulating the multiple clients for testing a server stress as defined in claim 1, wherein initiating said I/O request comprises selecting one of a plurality of possible I/O requests that are associated with the simulated state represented by said selected one of said state variables.
-
7. A method for using a single processor for simulating the multiple clients for testing a server stress as defined in claim 6, wherein each of said plurality of possible I/O requests has associated therewith a relative frequency such that selecting one of said plurality of possible I/O requests is conducted according to a predetermined probability.
-
8. In a system including a test client in communication with a server, wherein the server is configured to communicate with multiple clients, a method for simulating multiple clients on the test client for testing a server, said method comprising the test client performing acts of:
-
initiating a send data thread, said send data thread being adapted to initiate I/O requests that will result in a transmission being sent to said server, for each of the simulated multiple clients;
initiating a receive data thread, said receive data thread being adapted to process completed I/O requests initiated by said send data thread, for each of the simulated multiple clients;
providing a data array wherein are stored state variables, each of said state variables representing a simulated state of one of the simulated multiple clients;
repeating more than once for each of the simulated multiple clients, by said send data thread, the steps of;
selecting one of said state variables; and
initiating an I/O request in response to said selected one of said state variables; and
repeating more than once for each of the simulated multiple clients, by said receive data thread, the steps of;
determining whether said completed I/O request indicates that the simulated state of one of the simulated multiple clients is to be updated; and
if said completed I/O request indicates that said simulated state of said one of the simulated multiple clients is to be updated, updating in said data array the state variable that represents said simulated state of said one of the simulated multiple clients. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
initiating a software object adapted to monitor said server to detect said completed I/O request;
detecting, by said software object, said completed I/O request; and
sending, by said software object, notification of said completed I/O request to said receive data thread.
-
-
10. A method for simulating multiple clients on the test client for testing a server as defined in claim 8, wherein said notification of said completed I/O request includes a parameter identifying one of the simulated multiple clients with which said completed I/O request is associated.
-
11. A method for simulating multiple clients on the test client for testing a server as defined in claim 8, wherein said initiated I/O requests are selected such that said simulated multiple clients simulate local area network clients.
-
12. A method for simulating multiple clients on the test client for testing a server as defined in claim 8, wherein said initiated I/O requests are selected such that said simulated multiple clients simulate wide area network clients.
-
13. A method for simulating multiple clients on the test client for testing a server as defined in claim 12, wherein said simulated wide area network clients are Internet clients.
-
14. A method for simulating multiple clients on the test client for testing a server as defined in claim 8, wherein said initiated I/O requests are selected such that said simulated multiple clients simulate chat server clients.
-
15. A method for simulating multiple clients on the test client for testing a server as defined in claim 8, comprising the step of reading and applying state transition rules in order to select one of a plurality of possible I/O requests that are associated with the simulated state that is represented by said selected one of said state variables.
-
16. In a system including a server that communicates with multiple clients, wherein an ability of the server to service multiple requests from the multiple clients is unknown, a method for simulating multiple clients for testing a server, said method comprising the steps of:
-
initiating a single send data thread for the simulated multiple clients, said send data thread being adapted to initiate I/O requests that will result in a transmission being sent to said server;
initiating a single receive data thread for the simulated multiple clients, said receive data thread being adapted to process completed I/O requests initiated by said send data thread;
providing a data array having stored therein at least a first state variable that represents a first simulated state and a second state variable that represents a second simulated state, said first simulated state being associated with a first simulated client and said second simulated state being associated with a second simulated client;
initiating, by said send data thread, a first I/O request associated with said first simulated client and a second I/O request associated with said second simulated client;
receiving, by said receive data thread, notification of completion of one of said first I/O request and said second I/O request; and
updating, by said receive data thread, one of said first state variable and said second state variable selected in response to said completion of one of said first I/O request and said second I/O request.
-
-
17. A computer program product for implementing, in a system including a server in communication with multiple clients, wherein an ability of the server to service multiple requests from the multiple clients is unknown, a method for testing the ability of the server to service multiple requests by having a test client simulate the multiple clients, the computer program product comprising:
-
a computer-readable medium having computer-executable instructions for implementing the method, the method comprising acts of;
storing a plurality of simulated client profiles each representing an associated simulated client, each of said simulated clients profiles comprising client profile data including at least a simulated client state;
sending I/O requests on behalf of all of said simulated multiple clients using a send thread, wherein the act of sending further comprises;
selecting one of said simulated client profiles in order to initiate a client action on behalf of the associated simulated client;
initiating an I/O request to a server in order to simulate said client action with the send thread; and
monitoring the completion status of all I/O requests initiated by the send thread;
receiving completed I/O requests on behalf of all of said simulated clients using a receive thread, the act of receiving further comprising;
receiving notification of a completed I/O request associated with one of said simulated clients; and
updating the simulated client state associated with said simulated client in accordance with said completed I/O request. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26)
-
Specification