skip to main content
research-article

Dynamic software updates: a VM-centric approach

Published:15 June 2009Publication History
Skip Abstract Section

Abstract

Software evolves to fix bugs and add features. Stopping and restarting programs to apply changes is inconvenient and often costly. Dynamic software updating (DSU) addresses this problem by updating programs while they execute, but existing DSU systems for managed languages do not support many updates that occur in practice and are inefficient. This paper presents the design and implementation of Jvolve, a DSU-enhanced Java VM. Updated programs may add, delete, and replace fields and methods anywhere within the class hierarchy. Jvolve implements these updates by adding to and coordinating VM classloading, just-in-time compilation, scheduling, return barriers, on-stack replacement, and garbage collection. Jvolve, is safe: its use of bytecode verification and VM thread synchronization ensures that an update will always produce type-correct executions. Jvolve is flexible: it can support 20 of 22 updates to three open-source programs--Jetty web server, JavaEmailServer, and CrossFTP server--based on actual releases occurring over 1 to 2 years. Jvolve is efficient: performance experiments show that incurs no overhead during steady-state execution. These results demonstrate that this work is a significant step towards practical support for dynamic updates in virtual machines for managed languages.

References

  1. B. Alpern, D. Attanasio, J J. Barton, A. Cocchi, S. Flynn Hummel, D. Lieber, M. Mergen, T. Ngo, J Shepherd, and S. Smith. Implementing Jalapeño in Java. In Proc. OOPSLA, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Gautam Altekar, Ilya Bagrak, Paul Burstein, and Andrew Schultz. OPUS: Online patches and updates for security. In Proc. USENIX Security, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Jeff Arnold and Frans Kaashoek. Ksplice: Automatic rebootless kernel updates. In Proc. EuroSys, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Miles Barr and Susan Eisenbach. Safe upgrading without restarting. In Proc. ICSM, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. A. Baumann, J. Appavoo, D. Da Silva, J. Kerr, O. Krieger, and R. W. Wisniewski. Providing dynamic update in an operating system. In Proc. USENIX Annual Technical Conference, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Andrew Baumann, Jonathan Appavoo, Robert W. Wisniewski, Dilma Da Silva, et al. Reboots are for hardware: challenges and solutions to updating an operating system on the fly. In Proc. USENIX Annual Technical Conference, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Gavin Bierman, Michael Hicks, Peter Sewell, and Gareth Stoyle. Formalizing dynamic software updating. In Proc. Second International Workshop on Unanticipated Software Evolution, 2003.Google ScholarGoogle Scholar
  8. Gavin Bierman, Matthew Parkinson, and James Noble. UpgradeJ: Incremental typechecking for class upgrades. In Proc. ECOOP, pages 235--259, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. M. Blackburn, P. Cheng, and K. S. McKinley. Oil and water? High performance garbage collection in Java with MMTk. In Proc. ICSE, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. S. M. Blackburn, K. S. McKinley, R. Garner, C. Hoffman, A. M. Khan, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi , T. VanDrunen, D. von Dincklage, and B. Wiedermann. Wake up and smell the coffee: Evaluation methodology for the 21st century. Communications of the ACM, 51(8):83--89, August 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Chandrasekhar Boyapati, Barbara Liskov, Liuba Shrira, Chuang-Hue Moh, and Steven Richman. Lazy modular upgrades in persistent object stores. In Proc. OOPSLA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Haibo Chen, Rong Chen, Fengzhe Zhang, Binyu Zang, and Pen-Chung Yew. Live updating operating systems using virtualization. In Proc. VEE, June 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. POLUS: A POwerful Live Updating System. In Proc. ICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Microsoft Corporation. Edit and continue. http://msdn2.microsoft.com/en-us/library/bcew296c.aspx, 2008.Google ScholarGoogle Scholar
  15. M. Dmitriev. Towards flexible and safe technology for runtime evolution of java language applications. In Proc. Workshop on Engineering Complex Object-Oriented Systems for Evolution, 2001.Google ScholarGoogle Scholar
  16. Dominic Duggan. Type-based hot swapping of running modules. Acta Inf., 41(4-5):181--220, 2005.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Marc Eaddy and Steven Feiner. Multi-language edit-and-continue for the masses. Technical Report CUCS-015-05, Columbia University Department of Computer Science, April 2005.Google ScholarGoogle Scholar
  18. Torbjörn Ekman and Görel Hedin. The Jastadd extensible Java compiler. In Proc. OOPSLA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Slashdot forum. Patch the kernel without reboots. http://tech.slashdot.org/article.pl?sid=08/04/24/1334234, April 2008. Consists of a lively technical debate about the benefits and drawbacks of in-place dynamic updates vs. using redundant hardware.Google ScholarGoogle Scholar
  20. Stephen Gilmore, Dilsun Kirli, and Chris Walton. Dynamic ML without dynamic types. Technical Report ECS-LFCS-97-378, LFCS, University of Edinburgh, 1997.Google ScholarGoogle Scholar
  21. Deepak Gupta, Pankaj Jalote, and Gautam Barua. A formal framework for on-line software version change. IEEE Trans. Softw. Eng., 22(2):120--131, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. G. Hjálmtýsson and R. Gray. Dynamic C classes, a lightweight mechanism to update code in a running program. In Proc. USENIX Annual Technical Conference, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Yueh-Feng Lee and Ruei-Chuan Chang. Hotswapping linux kernel modules. J. Syst. Softw., 79(2):163--175, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Kristis Makris and Rida Bazzi. Multi-threaded dynamic software updates using stack reconstruction. In Proc. USENIX Annual Technical Conference, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In Proc. EuroSys, March 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Scott Malabarba, Raju Pandey, Jeff Gragg, Earl Barr, and J. Fritz Barnes. Runtime support for type-safe dynamic Java classes. In Proc. ECOOP, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides/jpda/.Google ScholarGoogle Scholar
  28. Marco Milazzo, Giuseppe Pappalardo, Emiliano Tramontana, and Giuseppe Ursino. Handling run-time updates in distributed applications. In Proc. SAC, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Iulian Neamtiu, Jeffrey S. Foster, and Michael Hicks. Understanding source code evolution using abstract syntax tree matching. In Proc. International Workshop on Mining Software Repositories, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Iulian Neamtiu and Michael Hicks. Safe and timely dynamic updates for multi-threaded programs. In Proc. PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. Contextual effects for version-consistent dynamic software updating and safe concurrent programming. In Proc. POPL, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In Proc. PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Angela Nicoara, Gustavo Alonso, and Timothy Roscoe. Controlled, systematic, and efficient code replacement for running Java programs. In Proc. Eurosys, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. D. Oppenheimer, A. Brown, J. Beck, D. Hettena, J. Kuroda, N. Treuhaft, D. A. Patterson, and K. Yelick. Roc-1: Hardware support for recovery-oriented computing. IEEE Trans. Comput., 51(2):100--107, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Alessandro Orso, Anup Rao, and Mary Jean Harrold. A technique for dynamic updating of Java software. In Proc. ICSM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. J. W. Pratt and J. D. Gibbons. Concepts of Nonparametric Theory. Springer-Verlag, 1981.Google ScholarGoogle ScholarCross RefCross Ref
  37. Tobias Ritzau and Jesper Andersson. Dynamic deployment of Java applications. In Proc. Java for Embedded Systems Workshop, 2000.Google ScholarGoogle Scholar
  38. D. Scott. Assessing the Costs of Application Downtime. Gartner Group, 1998.Google ScholarGoogle Scholar
  39. C. Soules, J. Appavoo, K. Hui, D. Da Silva, G. Ganger, O. Krieger, M. Stumm, R. Wisniewski, M. Auslander, M. Ostrowski, B. Rosenburg, and J. Xenidis. System support for online reconfiguration. In Proc. USENIX Annual Technical Conference, June 2003.Google ScholarGoogle Scholar
  40. Gareth Stoyle, Michael Hicks, Gavin Bierman, Peter Sewell, and Iulian Neamtiu. phMutatis Mutandis: Safe and flexible dynamic software updating (full version). TOPLAS, 29(4):22, August 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Ewan Tempero, Gavin Bierman, James Noble, and Matthew Parkinson. From Java to UpgradeJ: an empirical study. In Proc. International Workshop on Hot Topics in Software Upgrades (HotSWUp), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. The Jikes RVM Core Team. VM performance comparisons, 2007. http://dacapo.anu.edu.au/regression/perf/head.html.Google ScholarGoogle Scholar
  43. Taiichi Yuasa. Design and implementation of Kyoto Common Lisp. Journal of Information Processing, 13(3):284--295, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Benjamin Zorn. Personal communication, based on experience with Microsoft Windows customers, August 2005.Google ScholarGoogle Scholar

Index Terms

  1. Dynamic software updates: a VM-centric approach

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 44, Issue 6
      PLDI '09
      June 2009
      478 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1543135
      Issue’s Table of Contents
      • cover image ACM Conferences
        PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
        June 2009
        492 pages
        ISBN:9781605583921
        DOI:10.1145/1542476

      Copyright © 2009 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 15 June 2009

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader