Performance problems

From: Han Weegink <Han.Weegink_at_att.cmg.nl>
Date: Wed, 13 Dec 1995 12:25:52 +0100

Problem
=======

We noticed considerable performance problems which we think
are caused by the process scheduler of Digital UNIX 3.2c.

Two tests have been carried out (TEST1 and TEST2 described
in detail below) involving communication between 4 processes.
TEST2 involves about twice as much context switching as
does TEST1. However, the performance difference is nearly a
factor 50 ! (TEST1 100 msg/second, TEST2 2.5 msg/second)

The difference between the two tests is that TEST2 waits for
acknowledgements, whereas TEST1 does not. This results in the
following scheduling sequences:

        TEST1: A, B, C, D, C, B, A
        TEST2: A, B, C, B, A, C, D, C, B, C, D, B, A

The severe performance penalty is likely to be caused by the
scheduler: the difference in CPU time used is negligible (a
few msecs).

Another test (TEST 3) involved instancing the above TEST1
two times simultaneously:
     this way the two scheduling sequences, A, B, C, D, C, B, A
     and A', B', C', D', C', B', A' get interlaced.

The result was that the performance decreased to 50% while the
average load of the system increased only with about 8% (from 10%
to 18%).

In all these tests the four processes have communicated by means
of TCP/IP sockets on the same host. The throughput of such a
socket has been measured to be at least 2000 (request or response)
messages per second.

Questions
=========

Has anyone seen this before ?
What causes the problem exactly ?
How do I solve this problem ?

thanks a lot in advance for any suggestions

Han Weegink



-------------------------------------------------------------


Configuration
=============
system: Alphaserver 2100 4/233
memory: 384 Mb
free diskspace: multiple Gbytes
#active users: 5, using PC-X emulation


TEST1
=====

4 processes (A, B, C and D) interact with each other as follows:

          A sends a request to B and waits for a response from B.

          B receives a request from A or a response from C,
          performs some processing and sends the request to C and the
          response to A, respectively.

          C receives a request from B or a response from D,
          performs some processing and sends the request to D and the
          response to B, respectively.

          D receives a request from C and subsequently sends a
          response to C.

          The sequence is thus as follows:
          A B C D
          Req->
                         Req->
                                        Req-> Req->
                                                       <-Rsp
                                        <-Rsp
                         <-Rsp
          <-Rsp

          This sequence has been monitored by means of a trace
          and is the actual scheduling sequence.
          The test has been run within a loop of 1000 iterations

Results: 100 complete messages (request & response) per second.


TEST2
=====

4 processes (A, B, C and D) interact with each other as follows:

          A sends a request to B and waits for an acknowledgement
          from B. After the acknowledgement has been received it
          waits for a response from B.

          B receives a request from A, a response from C or an
          acknowledgement from C. After performing some processing
          it does the following:
               if it was a request it just sends the
               request to C
               if it was a response it sends an
               acknowledgement to C and sends the
               response to A,
               if it was an acknowledgement it forwards the
               acknowledgement to A.

          C receives a request from B, a response from D or an
          acknowledgement from B. After performing some processing
          it does the following:
               if it was a request it sends an
               acknowledgement to B and sends the
               request to D.
               if it was a response it just sends the
               response to B.
               if it was an acknowledgement it forwards the
               acknowledgement to D.

          D receives a request from C. It sends a response
          to C and waits for an acknowledgement from C.

          The sequence is thus the following:
          A B C D
          Req->
                         Req->
                                        <-Ack
                         <-Ack
          <-Ack
                                        Req-> Req->
                                                       <-Rsp
                                        <-Rsp
                         <-Rsp
                         Ack->
                                        Ack->
                                                       Ack->
          <-Rsp

          This sequence has been monitored by means of a trace
          and is the actual scheduling sequence.

          The test has been run within a loop of 1000 iterations

Results: 2.5 (two point five) complete messages (request &
                        response) per second.


Han Weegink

email: Han.Weegink_at_cmg.nl

CMG Computer Management Group
P.O. Box 412
1180 AK Amstelveen
The Netherlands
Phone: +31-20-5033000
Fax: +31-20-5033016
Received on Wed Dec 13 1995 - 13:14:26 NZDT

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:46 NZDT