Overview of the userver

The primary goal of this project is to design and implement a simple web server that can be used to evaluate a variety of Internet server and operating system design and implemenation issues. Some of the features of userver include:
good multiprocessor / multi-core performance
Runs efficiently and has support for multi-processor/multi-core servers. Processes and NICs can be partitioned for good locality.
event driven architecture
The userver has been used to evaluate operating system mechanisms for obtaining and processing events related to large numbers of simultaneous connections.
multiple event mechanisms
The userver can use, select, poll, epoll, or a new Scalable Event Notification and Delivery (SEND) mechansims to obtain event information.
designed for experimentation
The userver supports a wide range of parameters controlling server behaviour.
reasonably small and portable
Fairly simple, modifiable, fast, expandable, and open source.
debugging, tracing and statistics
Extenstive debugging, trace and statistics facilities enables a better understanding of what the server is doing and how performance is impacted.
variety of system calls supported
Supports mmap, madvise, and mlock for cached files. Supports a choice of write, writev, and sendfile (with support for TCP_CORK and UNCORK on Linux).
asynchronous I/O support
Has been written to an AIO interface that was used in the Eurosys 2006 paper. The goal was to make it relatively easy to port to other AIO interfaces. If you have an OS or system that provides AIO for network and disk I/O we may be able to port to your system with less effort and better efficiency than other systems.


userver

; main
; overview
; download
; papers and documentation
; people