Fredrik Stridh MSE-2009-35, pp. 36. COM/School of Computing, 2009.
Multithreading is today a very common technology
to achieve concurrency within software. Today there
exists three commonly used threading strategies for
multithreaded application servers. These are thread per
client, thread per request and thread pool. Earlier
studies has shown that the choice of threading strategy
is not that important. Our measurements show that the
choice of threading architecture becomes more
important when the application comes under high load.
We will in this study present a throttling concept which
can give thread per client almost as good qualities as
the thread pool strategy when it comes to performance.
No architecture change is required. This concept has
been evaluated on three types of hardware, ranging
from 1 to 64 CPUs, using 6 alternatives loads and both
in C and Java. We have also identified that there is a
high correlation between average response times and
the length of the run time queue. This can be used to
construct a self tuning throttling algorithm that makes
the introduction of the throttle concept even simpler,
since it does require any configuring.