Hop, a Fast Server for the Diffuse Web

The diffuse Web is an alternative way of using the Web 2.0 infrastructure for building personal diffuse applications. Systems that let users tune the temperature of their house with a cell-phone, check that the shutters are closed with a PDA, or select the music to be played on a Hi-Fi system with a PC are examples of the targeted applications. Diffuse Web applications have similarities with Web 2.0 applications: i) they rely on fast bi-directional interactions between servers and clients, and ii) they make extensive use of non-cachable dynamic contents. On the other hand, diffuse applications have also an important difference with respect to traditional Web applications: they generally do not need to deal with a huge number of simultaneous users. That is, diffuse Web applications are built on top of standard technologies but they use it differently. Therefore they demand different optimizations and tunings. Hop ( http://hop.inria.fr ) is a platform designed for building and running diffuse Web applications. Its software development kit contains two compilers, one interpreter, and a bootstrapped Web server. That is, the Hop Web server is implemented in Hop. This paper shows that this implementation strategy allows Hop to dramatically outperform the popular mainstream Web servers for delivering dynamic contents. Contrary to most servers, Hop delivers static and dynamic contents at a comparable pace. The paper details the implementation of the Hop Web server.

[1]  G. Pal,et al.  Congestion control , 1995 .

[2]  Chita R. Das,et al.  A multi-threaded PIPELINED Web server architecture for SMP/SoC machines , 2005, WWW '05.

[3]  David Mosberger,et al.  httperf—a tool for measuring web server performance , 1998, PERV.

[4]  Sophia Antipolis,et al.  The HOP Development Kit , 2010 .

[5]  Gautier Loyauté Un modèle génératif pour le développement de serveurs Internet. (A generative model for Internet servers development) , 2008 .

[6]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[7]  Tim Brecht,et al.  accept()able Strategies for Improving Web Server Performance , 2004, USENIX ATC, General Track.

[8]  Erich M. Nahum,et al.  Performance issues in WWW servers , 1999, TNET.

[9]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[10]  Jeffrey C. Mogul,et al.  Rethinking the TCP Nagle algorithm , 2001, CCRV.

[11]  Brendan Burns,et al.  Flux: A Language for Programming High-Performance Servers , 2006, USENIX Annual Technical Conference, General Track.

[12]  Jeffrey C. Mogul,et al.  The case for persistent-connection HTTP , 1995, SIGCOMM '95.

[13]  Niklas Broberg,et al.  Haskell server pages through dynamic loading , 2005, Haskell '05.

[14]  NagleJohn Congestion control in IP/TCP internetworks , 1984 .

[15]  Shriram Krishnamurthi The CONTINUE Server (or, How I Administered PADL 2002 and 2003) , 2003, PADL.

[16]  John R. Douceur,et al.  Cooperative Task Management without Manual Stack Management or, Event-driven Programming is Not the Opposite of Threaded Programming , 2002 .

[17]  Noel Welsh,et al.  Experience report: scheme in commercial web application development , 2007, ICFP '07.

[18]  John Nagle,et al.  Congestion control in IP/TCP internetworks , 1984, CCRV.

[19]  Benjamin G. Zorn,et al.  The measured cost of conservative garbage collection , 1993, Softw. Pract. Exp..

[20]  Juan-Carlos Cano,et al.  HOP: achieving efficient anonymity in MANETs by combining HIP, OLSR, and pseudonyms , 2006, OOPSLA 2006.

[21]  Mark Russinovich,et al.  High-Performance Memory-Based Web Servers: Kernel and User-Space Performance , 2001, USENIX ATC, General Track.

[22]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[23]  John S. Heidemann,et al.  Performance interactions between P-HTTP and TCP implementations , 1997, CCRV.

[24]  John C. Mallery A common LISP hypermedia server , 1994, WWW Spring 1994.

[25]  J. Armstrong Concurrency Oriented Programming in Erlang , .

[26]  Manuel Serrano Programming web multimedia applications with hop , 2007, ACM Multimedia.

[27]  Carey L. Williamson,et al.  A performance comparison of dynamic Web technologies , 2003, PERV.

[28]  Douglas C. Schmidt,et al.  Developing flexible and high-performance Web servers with frameworks and patterns , 2000, CSUR.

[29]  Manuel Serrano Anatomy of a ubiquitous media center , 2009, Electronic Imaging.

[30]  Peter Druschel,et al.  Measuring the Capacity of a Web Server , 1997, USENIX Symposium on Internet Technologies and Systems.

[31]  Peter Thiemann,et al.  WASH/CGI: Server-Side Web Scripting with Sessions and Typed, Compositional Forms , 2002, PADL.

[32]  Marvin Theimer,et al.  Cooperative Task Management Without Manual Stack Management , 2002, USENIX Annual Technical Conference, General Track.

[33]  David R. Cheriton,et al.  Comparing the performance of web server architectures , 2007, EuroSys '07.

[34]  Priya Nagpurkar,et al.  Workload characterization of selected JEE-based Web 2.0 applications , 2008, 2008 IEEE International Symposium on Workload Characterization.

[35]  Daan Leijen Proceedings of the 2005 ACM SIGPLAN workshop on Haskell , 2005 .

[36]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[37]  Stéphane Ducasse,et al.  Seaside — a Multiple Control Flow Web Application Framework , 2004 .

[38]  Li Li,et al.  Evaluating the performance of user-space and kernel-space web servers , 2004, CASCON.

[39]  Samuel P. Midkiff,et al.  Expressing and exploiting concurrency in networked applications with aspen , 2007, PPoPP.

[40]  Manuel Serrano,et al.  Compiling scheme to JVM bytecode:: a performance study , 2002, ICFP '02.

[41]  James Gettys,et al.  Network performance effects of HTTP/1.1, CSS1, and PNG , 1997, SIGCOMM '97.

[42]  Nianmin Yao,et al.  Pipeline: a new architecture of high performance servers , 2002, OPSR.

[43]  Erick Gallesio,et al.  Hop: a language for programming the web 2.0 , 2006, OOPSLA Companion.

[44]  Craig Partridge,et al.  Proceedings of the conference on Applications, Technologies, Architectures, and Protocols for Computer Communication , 2000, SIGCOMM 2000.

[45]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[46]  Matthias Felleisen,et al.  Implementation and use of the PLT scheme Web server , 2007, High. Order Symb. Comput..

[47]  James R. Larus,et al.  Using Cohort-Scheduling to Enhance Server Performance , 2002, USENIX Annual Technical Conference, General Track.

[48]  Eric A. Brewer,et al.  USENIX Association Proceedings of HotOS IX : The 9 th Workshop on Hot Topics in Operating Systems , 2003 .