Check out the new USENIX Web site.

Performance of Concurrent Servers Generated Automatically from Sequential Servers

David L. Sims, Debra A. Hensgen, and Lantz Moore
Department of Electrical and Computer Engineering
University of Cincinnati
Cincinnati Ohio USA


Concurrent servers in a multiprocessor system, concurrent graphical user interfaces, and operating systems containing concurrent objects are fairer on a uniprocessor and can yield better performance on a multiprocessor than their sequential counterparts. However, concurrent servers are more difficult to implement correctly. Our contribution is a tool that generates correct concurrent servers from correct sequential ones. The only restriction on the sequential servers is that they must be programmed in a slightly restricted subset of Modula-3 in the Generic Server Format using the Defensive Object Model. Our tool uses well known static analysis techniques from compiler theory to insert locks that are guaranteed to be free from deadlock. It uses information obtained from exception handling statements to insert synchronization primitives. The tool produces very readable Modula-3 programs that are subsequently compiled using standard Modula-3 compilers. In addition to describing the rationale, design, and implementation of our tool, this paper presents performance comparisons between hand-tuned and automatically generated queues and search structures. Moreover, we report on the lessons that were learned from automatically generating various concurrent servers.

Download the full text of this paper in ASCII form (56,831 bytes).

To Become a USENIX Member, please see our Membership Information.