Several research efforts have focused on
admission control and service differentiation in web servers
[19],
[20], [21],
[22], [8] and
[23].
Almeida [8]
use priority-based schemes to provide differentiated levels of
service to clients depending on the web pages accessed.
While in their approach the application, i.e., the web server, determines
request priorities,
our mechanisms reside in the kernel and can
be applied without context-switching to user level.
[23]
is a middleware layer that
provides service differentiation and admission control.
Since it is deployed in user space, it is less efficient compared
to kernel-based mechanisms.
While WebQoS also provides URL-based classification, the authors
do not present any experiments or performance
considerations. Cherkasova
[20] present an
enhanced web server that provides session-based admission control to
ensure that longer sessions are completed.
Crovella
[24] show that client response
time improves when web servers serving static files serve shorter
connections before handling longer
connections. Our mechanisms are general and can
easily realize such a policy.
Reumann [25] have presented
virtual services, a new operating system abstraction
that provides resource partitioning and management.
Virtual services can enhance our
scheme by, for example, dynamically controlling
the number of processes
a web server is allowed to fork. In [26] Reumann
have described an adaptive mechanism to setup rate controls for overload
protection.
The receiver livelock study [2] showed that network interrupt
handling could cause server livelocks and should be taken into consideration
when designing process scheduling mechanisms.
Banga and Druschel's [27]
enable the operating system to account for and
control the consumption of resources.
To shield preferred clients from
malicious or greedy clients one can assign them to different
containers.
In the same paper they also describe
a multi listen socket approach for priorities in which a filter splits a
single listen queue into multiple queues from which connections are accepted
separately and accounted to different principals. Our approach is similar, however, connections are accepted from
the same single listen queue but inserted in the queue based on priority.
Kanodia
[21] present a simulation study
of queuing-based algorithms for admission control and service
differentiation at the front-end. They focus on guaranteeing latency bounds
to classes by controlling the admission rate per class. Aron
[28] describe a scalable request distribution
architecture for clusters and also present resource management techniques
for clusters.
Scout [29], Rialto [30] and Nemesis[31] are operating systems that track per-application resource consumption and restrict the resources granted to each application. These operating systems can thus provide isolation between applications as well as service differentiation between clients. However, there is a significant amount of work involved to port applications to these specialized operating systems. Our focus, however, was not to build a new operating system or networking architecture but to introduce simple controls in the existing architecture of commercial operating systems that could be just as effective.