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