The OS - Network Interface at Usenix'04
The last session today at
Usenix'04 is my favorite: The
network-application interface. There are 3 papers in this session.
-
Network Subsystems Reloaded: A High-Performance,
Defensible Network Subsystem , Anshumal Sinha, Sandeep Sarat, and Jonathan S.
Shapiro, Johns Hopkins University. The premise
behind the work is that most of the
networking subsystem in an operating system is
shared among all the processes it is very
difficult to insulate the effects of for example
a denial of service attack to just the process
that experiencing it. They give a user-level
implementation in the EROS operating system.
Given that I have built a few of these in the
past, I am realizing that it may be time for a
sort of retrospective on what the real hard
problems are in this space. Scalability is one:
how to run hundreds of processes on your server,
each with a user level protocol stack, and each
high request for very fine granularity timers.
From my experiences this turns out to be way
harder that the initial implementation.
-
accept()able Strategies for Improving Web Server
Performance ,Tim Brecht, David Pariag, and Louay Gammo,
University of Waterloo, This work looks at how
different web servers are built on Linux and how
they use the accept system call with the event
or thread strategies. They take 3 different
"high-performance" accept strategies and apply
them to three Linux Web Servers and investigate
their performance. I don't care about the
numbers that much, as there are other web
servers that already do better. But I like the
insights that you gain from the interaction
between accept and thread/event strategy. After
this paper and the presentation I still think
that asynchronous IO interfaces in Linux are
just plain broken.
-
Lazy Asynchronous I/O for Event-Driven Servers,
Khaled Elmeleegy, Anupam Chanda, and Alan L. Cox,
Rice University; Willy Zwaenepoel, EPFL,
Lausanne, This paper gives a solution for
a-synchronous IO processing for single treaded
applications under some unixes (FreeBSD in their
case). The lazy part of their IO operations is
related to the strategy where you do not use an
asynchronous operation if the operation will not
block. They appear to get reasonable performance
when compared to posix aio or the amped approach
used in the Flash web server (which was their
test app). Their code can be
downloaded. I think the system has some
elegant parts, but I am not at all sold on this
pure single threaded approach. To find the right
balance between programming complexity and
exploiting all available system resources you
need both threads and events.
This was interesting session, with lots of food for discussion.
Posted by Werner Vogels at June 29, 2004 05:29 PM