skip to main content
research-article

String deduplication for Java-based middleware in virtualized environments

Published:01 March 2014Publication History
Skip Abstract Section

Abstract

To increase the memory efficiency in physical servers is a significant concern for increasing the number of virtual machines (VM) in them. When similar web application service runs in each guest VM, many string data with the same values are created in every guest VMs. These duplications of string data are redundant from the viewpoint of memory efficiency in the host OS. This paper proposes two approaches to reduce the duplication in Java string in a single Java VM (JVM) and across JVMs. The first approach is to share string objects cross JVMs by using a read-only memory-mapped file. The other approach is to selectively unify string objects created at runtime in the web applications. This paper evaluates our approach by using the Apache DayTrader and the DaCapo benchmark suite. Our prototype implementation chieved 7% to 12% reduction in the total size of the objects allocated over the lifetime of the programs. In addition, we observed the performance of DayTrader was maintained even under a situation of high density guest VMs in a KVM host machine.

References

  1. Apache geronimo v2.0 daytrader. http://geronimo.apache.org/GMOxDOC22/daytrader-a-more-complex-application.html.Google ScholarGoogle Scholar
  2. Apache OpenJPA. http://openjpa.apache.org/.Google ScholarGoogle Scholar
  3. IBM corporation.WebSphere Application Server. http://www-01.ibm.com/software/webservers/appserv/was/.Google ScholarGoogle Scholar
  4. JVM Tool Interface. http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html.Google ScholarGoogle Scholar
  5. The Apache Software Foundation. Apache JMeter. http://jakarta.apache.org/jmeter/.Google ScholarGoogle Scholar
  6. The API documentation of the StringBuilder class. http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html.Google ScholarGoogle Scholar
  7. Andrea Arcangeli, Izik Eidus, and Chris Wright. Increasing memory density by using ksm. In In Proceedings of the Linux Symposium, pages 19--28, 2009.Google ScholarGoogle Scholar
  8. C. Bailey. Java Technology, IBM Style: Introduction to the IBM Developer Kit: An overview of the new functions and features in the IBM implementation of java 5.0, 2006. http://www.ibm.com/developerworks/java/library/j-ibmjava1.html.Google ScholarGoogle Scholar
  9. DaCapo benchmark suite. http://www.dacapobench.org.Google ScholarGoogle Scholar
  10. Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. The dacapo benchmarks: Java benchmarking development and analysis. In Proceedings of the 21st Annual ACM SIGPLAN conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA '06, pages 169--190. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Shigeru Chiba and Rei Ishikawa. Aspect-Oriented Programming beyond Dependency Injection. In Proceedings of the 19th European conference on Object-oriented programming, pages 121--143. Springer, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. AdrianaE. Chis, Nick Mitchell, Edith Schonberg, Gary Sevitsky, Patrick O'ullivan, Trevor Parsons, and John Murphy. Patterns of memory inefficiency. In ECOOP '11: Proceedings of the 25th European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, pages 383--407. Springer Berlin Heidelberg, 2011 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Eric Clayberg and Dan Rubel. Eclipse Infrastructure. In Eclipse Plug-ins, pages 107--133. Addison-Wesley Professional, 3 edition, 2008.Google ScholarGoogle Scholar
  14. Oracle Corporation. Jsr-000121 application isolation api specification.Google ScholarGoogle Scholar
  15. James Gosling and Billy Joy. The Java Language Specification, Third Edition. Addison Wesley, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Nikola Grcevski, Allan Kielstra, Kevin Stoodley, Mark Stoodley, and Vijay Sundaresan. Java just-in-time compiler and virtual machine improvements for server and middleware applications. In Proceedings of the 3rd Conference on Virtual Machine Research and Technology Symposium - Volume 3, pages 151--162, Berkeley, CA, USA, 2004. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Kiyokuni Kawachiya, Kazunori Ogata, and Tamiya Onodera. Analysis and reduction of memory inefficiencies in Java strings. In Proceedings of the 23rd ACM SIGPLAN conference on Object-Oriented Programming Systems Languages and Applications, OOPSLA '08, pages 385--402. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An Overview of AspectJ. In ECOOP '01 - Object-Oriented Programming: 15th European Conference, LNCS 2072, pages 327--353. Springer, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. KVM. http://www.linux-kvm.org/page/main_page.Google ScholarGoogle Scholar
  20. Darko Marinov and Robert O'Callahan. Object equality profiling. In Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, OOPSLA '03, pages 313--325, New York, NY, USA, 2003. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Hiroshi Maruyama, Kent Tamura, Naohiko Uramoto, Makoto Murata, Andy Clark, Yuichi Nakamura, Ryo Neyama, Kazuya Kosaka, and Satoshi Hada. XML and Java: Developing Web Applications, 2nd Edition. Addison Wesley, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Nick Mitchell, Edith Schonberg, and Gary Sevitsky. Making sense of large heaps. In ECOOP '09: Proceedings of the 23th European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, pages 77--97. Springer Berlin Heidelberg, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Nick Mitchell and Gary Sevitsky. The causes of bloat, the limits of health. In Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, pages 245--260. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Jones Richard and Lins Rafael. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Jack Shirazi. Java Performance Tuning. O'Reilly Media Inc., 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Carl A. Waldspurger. Memory resource management in vmware esx server. SIGOPS Oper. Syst. Rev., 36(SI):181--194, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. String deduplication for Java-based middleware in virtualized environments

    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

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!