CS262A Reading
Summary 20
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
M. Welsh et al
Summary by Feng Zhou
10/22/2002
3 key features,
-
The most interesting idea in this paper is the argument that today's OSes and programming models are not
appropriate for building Internet services because of unnecessary transparency and high overhead.
They are essentially built for timesharing and multiprogramming, which have very different requirements
from Internet services.
-
The proposed solution is to modify the programming model, instead of the OS. This is obviously a more
feasible way than trying to define a new set of OS facilities to support Internet services.
SEDA uses a hybrid of event-based and thread-based models. It partitions every service request handling
into stages, which are connected by event queues. Each stage is handled by a set of dedicated and
relatively long-lived threads. This scheme makes sense in several points. First, compared to thread/
process-based model, the concurrency level can be easily limited to be inside the operation limits of
the system. And scheduling policies can be applied to the request queue to achieve desired service
properties. Second, compared to event-based model, it is easier to program and more modular.
-
Another interesting point is closed-loop control is used in SEDA to achieve desired result without
knowledge of the underlying mechanism inside the OS. Both the thread pool controller and the batching
controller uses this method to select the appropriate values for certain parameters. By measuring and
adjustment, they only need the ability to tell which direction to go to be able to converge on the
desired behavior.
Flaws:
When comparing the performance of Haboob to that of Flash. The authurs claim that Haboob can exhibit a
great degree of fairness under overload because all the requests are queued. In contrast, Flash accepts
only 506 connections at once and thus is unfair. I don't see it as valid because the reason for
Flash to drop connections after 506 is lack of OS file descriptors. This problem also applies to Haboob.