Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Adya, A., et al.: Cooperative Task Management without Manual Stack Management or Event-driven Programming is Not the Opposite of Tthreaded Programming. In: Proceedings of the Usenix Annual Technical Conference, Monterey, CA, USA, June 2002, pp. 289–302 (2002)
Armstrong, J., et al.: Concurrent Programming in ERLANG. Prentice Hall, Englewood Cliffs (1996)
Armstrong, J.: Concurrency Oriented Programming in Erlang– Invited talk of the FFG conference (2003)
Banga, G., Druschel, P.: Measuring the Capacity of a Web Server. In: USENIX Symposium on Internet Technologies and Systems (1997)
Bobrow, D., et al.: Common lisp object system specification– special issue, Notices (23) (September 1988)
Brech, T., Pariag, D., Gammo, L.: accept()able Strategies for Improving Web Server Performance. In: Proceedings of the USENIX 2004 Annual Technical Conference, Boston, MA, USA (June 2004)
Broberg, N.: Haskell Server Pages through Dynamic Loading– Haskell 2005. In: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, Tallinn, Estonia, pp. 39–48 (2005)
Burns, B., et al.: Flux: A Language for Programming High-Performance Servers. In: Proceedings of USENIX Annual Technical Conference, pp. 129–142 (2006)
Choi, G.S., et al.: A Multi-Threaded PIPELINED Web Server Architecture for SMP/SoC Machines. In: WWW 2005 Proceedings of the 14th international conference on World Wide Web, Chiba, Japan, pp. 730–739 (2005)
Darcy, J.: Server Design (August 2002), http://pl.atyp.us/content/tech/servers.html
Ducasse, S., Lienhard, A., Renggli, L.: Seaside - a multiple control flow web application framework. In: Proceedings of the ESUG Research Track (2004)
Heidemann, J.: Performance Interactions Between P-HTTP and TCP Implementations. ACM Computer Communication Review 27(2), 65–73 (1997)
Joubert, P., et al.: High-Performance Memory-Based Web Servers: Kernel and User-Space Performance. In: Usenix, pp. 175–188 (2001)
Krishnamurthi, S.: The CONTINUE Server (or, How I Administered PADL 2002 and 2003). In: Dahl, V., Wadler, P. (eds.) PADL 2003. LNCS, vol. 2562, pp. 2–16. Springer, Heidelberg (2002)
Krishnamurthi, S., et al.: Implementation and Use of the PLT Scheme Web Server. Higher Order and Symbolic Computation 20(4), 431–460 (2007)
Larus, J., Parkes, M.: Using Cohort Scheduling to Enhance Server Performance. In: Proceedings of the Usenix Annual Technical Conference, Monterey, CA, USA, June 2002, pp. 103–114 (2002)
Loyaute, G.: Un modéle génératif pour le développement de serveurs internet, Univeristé Paris-Est, Paris, France (September 2008)
Mallery, J.C.: A Common LISP Hypermedia Server. In: Proc. First International World-Wide Web Conference, pp. 239–247 (1994)
Marlow, S.: Writing High-Performance Server Applications in Haskell, Case Study A Haskell Web Server. In: Haskell 2000: Proceedings of the ACM SIGPLAN Haskell Workshop, Montreal, Canada (September 2000)
Meijer, E., Van Velzen, D.: Haskell Server Pages – Functional Programming and the Battle for the Middle Tier Abstract. In: Haskell 2000: Proceedings of the ACM SIGPLAN Haskell Workshop, Montreal, Canada (September 2000)
Mogul, J.C.: The case for persistent-connection HTTP. In: SIGCOMM 1995: Proceedings of the conference on Applications, technologies, architectures, and protocols for computer communication, Cambridge, Massachusetts, United States, pp. 299–313 (1995)
Mogul, J.C., Minshall, G.: Rethinking the TCP Nagle algorithm. SIGCOMM Comput. Commun. Rev. 31(1), 6–20 (2001)
Mosberger, D., Jin, T.: httperf: A tool for Measuring Web Server Performance. In: First Workshop on Internet Server Performance, pp. 59–67 (1998)
Nagle, J.: Congestion Control in IP/TCP Internetworks – RFC 896, Internet Engineering Task Force (January 1984)
Nagpurkar, P., et al.: Workload Characterization of selected JEE-based Web 2.0 Applications. In: Proceedings of the IISWC 2008. IEEE International Symposium on Workload Characterization, September 2008, pp. 109–118 (2008)
Nahum, E., Barzilai, T., Kandlur, D.D.: Performance Issues in WWW Servers. IEEE/ACM Transactions on Networking 10(1) (February 2002)
Nielsen, H.F., et al.: Network Performance Eeffects of HTTP/1.1, CSS1, and PNG. In: Proceedings of the ACM SIGCOMM 1997 conference, Cannes, France (September 1997)
Pai, V.S., Druschel, P., Zwaenepoel, W.: Flash: An efficient and portable Web server. In: Proceedings of the Usenix Annual Technical Conference, Monterey, CA, USA (June 1999)
Pariag, D., et al.: Comparing the Performance of Web Server Architectures. SIGOPS Oper. Syst. Rev. 41(3), 231–243 (2007)
Serpette, B., Serrano, M.: Compiling Scheme to JVM bytecode: a performance study. In: 7th Sigplan Int’l Conference on Functional Programming (ICFP), Pittsburgh, Pensylvanie, USA (October 2002)
Serrano, M., Gallesio, E., Loitsch, F.: HOP, a language for programming the Web 2.0. In: Proceedings of the First Dynamic Languages Symposium, Portland, Oregon, USA (October 2006)
Serrano, M.: The HOP Development Kit. In: Invited paper of the Seventh ACM sigplan Workshop on Scheme and Functional Programming, Portland, Oregon, USA (September 2006)
Serrano, M.: Programming Web Multimedia Applications with Hop. In: Proceedings of the ACM Sigmm and ACM Siggraph conference on Multimedia, Best Open Source Software, Augsburg, Germany (September 2007)
Serrano, M.: Anatomy of a Ubiquitous Media Center. In: Proceedings of the Sixteenth Annual Multimedia Computing and Networking (MMCN 2009), San Jose, CA, USA (January 2009)
Shukla, A., et al.: Evaluating the Performance of User-Space and Kernel-Space Web Servers. In: CASCON 2004: Proceedings of the 2004 conference of the Centre for Advanced Studies on Collaborative research, Markham, Ontario, Canada, pp. 189–201 (2004)
Smith, D.C., Hu, J.C.: Developing Flexible and High-performance Web Servers with Frameworks and Patterns. ACM Computing Surveys 30 (1998)
Thiemann, P.: WASH/CGI: Server-side Web Scripting with Sessions and Typed, Compositional Forms. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds.) PADL 2002. LNCS, vol. 2257, p. 192. Springer, Heidelberg (2002)
Titchkosky, L., Arlitt, M., Williamson, C.: A performance comparison of dynamic Web technologies. SIGMETRICS Perform. Eval. Rev. 31(3), 2–11 (2003)
Upadhyaya, G., Pai, V.S., Midkiff, S.P.: Expressing and Exploiting Concurrency in Networked Applications with Aspen. In: PPoPP 2007: Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming, San Jose, California, USA, pp. 13–23 (2007)
Von Behren, R., Condit, J., Brewer, E.: Why Events Are A Bad Idea (for higher-concurrency servers). In: Proc. of HotOSIX: the 9th Workshop on Hop Topics in Operating Systems, Lihue, Hawaii, USA (May 2003)
Welsh, M., et al.: A Design Framework for Highly Concurrent Systems, Berkeley, CA, USA (2000)
Welsh, M., Culler, D., Brewer, E.: SEDA: An Architecture for Well-Conditioned, Scalable Internet Services. In: Symposium on Operating Systems Principles, pp. 230–243 (2001)
Welsh, N., Gurnell, D.: Experience report: Scheme in commercial Web application development. In: ICFP 2007: Proceedings of the 12th ACM SIGPLAN international conference on Functional programming, Freiburg, Germany, pp. 153–156 (2007)
Yao, N., Zheng, M., Ju, J.: Pipeline: A New Architecture of High Performance Servers. SIGOPS Oper. Syst. Rev. 36(4), 55–64 (2002)
Zorn, B.: The Measured Cost of Conservative Garbage Collection. Software — Practice and Experience 23(7), 733–756 (1993)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 IFIP International Federation for Information Processing
About this paper
Cite this paper
Serrano, M. (2009). Hop, a Fast Server for the Diffuse Web. In: Field, J., Vasconcelos, V.T. (eds) Coordination Models and Languages. COORDINATION 2009. Lecture Notes in Computer Science, vol 5521. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02053-7_1
Download citation
DOI: https://doi.org/10.1007/978-3-642-02053-7_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02052-0
Online ISBN: 978-3-642-02053-7
eBook Packages: Computer ScienceComputer Science (R0)