skip to main content
research-article
Open Access

IVT: an efficient method for sharing subtype polymorphic objects

Published:10 October 2019Publication History
Skip Abstract Section

Abstract

Shared memory provides the fastest form of inter-process communication. Sharing polymorphic objects between different address spaces requires solving the issue of sharing pointers. In this paper, we propose a method, named Indexed Virtual Tables (IVT for short), to share polymorphic objects efficiently. On object construction, the virtual table pointers are replaced with indexes, which are used to find the actual virtual table pointers on dynamic dispatch. Only a few addition and load instructions are needed for both operations. Experimental results show that the IVT can outperform prior techniques on both object construction time and dynamic dispatch time. We also apply the proposed IVT technique to several practical scenarios, resulting the improvement of overall performance.

Skip Supplemental Material Section

Supplemental Material

a130-wang

Presentation at OOPSLA '19

References

  1. David F. Bacon, Stephen J. Fink, and David Grove. 2002. Space- and Time-Efficient Implementation of the Java Object Model. In ECOOP 2002 - Object-Oriented Programming, 16th European Conference, Malaga, Spain, June 10-14, 2002, Proceedings. 111–132. Google ScholarGoogle ScholarCross RefCross Ref
  2. Ryan Berryhill, Wojciech M. Golab, and Mahesh Tripunitara. 2015. Robust Shared Objects for Non-Volatile Main Memory. In 19th International Conference on Principles of Distributed Systems, OPODIS 2015, December 14-17, 2015, Rennes, France. 20:1–20:17. Google ScholarGoogle ScholarCross RefCross Ref
  3. Kumud Bhandari, Dhruva R. Chakrabarti, and Hans-Juergen Boehm. 2016. Makalu: fast recoverable allocation of non-volatile memory. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2016, part of SPLASH 2016, Amsterdam, The Netherlands, October 30 - November 4, 2016. 677–694. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Boost C++ Libraries. 2018a. Class Template offset_ptr. http://www.boost.org/doc/libs/1_67_0/doc/html/boost/interprocess/ offset_ptr.html .Google ScholarGoogle Scholar
  5. Boost C++ Libraries. 2018b. Managed Memory Segments. http://www.boost.org/doc/libs/1_67_0/doc/html/interprocess/ managed_memory_segments.html .Google ScholarGoogle Scholar
  6. Boost C++ Libraries. 2018c. Sharing memory between processes. https://www.boost.org/doc/libs/1_67_0/doc/html/ interprocess/sharedmemorybetweenprocesses.html .Google ScholarGoogle Scholar
  7. Tim Bray. 2017. The JavaScript Object Notation (JSON) Data Interchange Format. RFC 8259 (2017), 1–16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Burshteyn. 2014. Method and System for Accessing C++ Objects in Shared Memory.Google ScholarGoogle Scholar
  9. Dhruva R. Chakrabarti, Hans-Juergen Boehm, and Kumud Bhandari. 2014. Atlas: leveraging locks for non-volatile memory consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA 2014, part of SPLASH 2014, Portland, OR, USA, October 20-24, 2014. 433–452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Thaleia Dimitra Doudali and Ada Gavrilovska. 2017. CoMerge: toward efficient data placement in shared heterogeneous memory systems. In Proceedings of the International Symposium on Memory Systems, MEMSYS 2017, Alexandria, VA, USA, October 02 - 05, 2017. 251–261. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Peter Druschel and Larry L. Peterson. 1993. Fbufs: A High-Bandwidth Cross-Domain Transfer Facility. In Proceedings of the Fourteenth ACM Symposium on Operating System Principles, SOSP 1993, The Grove Park Inn and Country Club, Asheville, North Carolina, USA, December 5-8, 1993. 189–202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Margaret A. Ellis and Bjarne Stroustrup. 1990. The Annotated C++ Reference Manual. Addison-Wesley.Google ScholarGoogle Scholar
  13. Open Source Robotic Foundation. 2018. ROS, Robot operating system. http://www.ros.org/ .Google ScholarGoogle Scholar
  14. Brice Goglin and Stéphanie Moreaud. 2013. KNEM: A generic and scalable kernel-assisted intra-node MPI communication framework. J. Parallel Distrib. Comput. 73, 2 (2013), 176–188. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. W. Gropp, E. Lusk, A. Skjellum, and R. Thakur. 1999. Using MPI: Portable Parallel Programming with the Message-passing Interface. MIT Press. https://books.google.ae/books?id=DFT1ngEACAAJGoogle ScholarGoogle Scholar
  16. Izzat El Hajj, Thomas B. Jablin, Dejan S. Milojicic, and Wen-Mei W. Hwu. 2017. SAVI objects: sharing and virtuality incorporated. PACMPL 1, OOPSLA (2017), 45:1–45:24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Maurice Herlihy and Barbara Liskov. 1982. A Value Transmission Method for Abstract Data Types. ACM Trans. Program. Lang. Syst. 4, 4 (1982), 527–551. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Lenny Hon. 1994. Using objects in shared memory for C++ application. In Proceedings of the 1994 Conference of the Centre for Advanced Studies on Collaborative Research, October 31 - November 3, 1994, Toronto, Ontario, Canada. 29. Google ScholarGoogle ScholarCross RefCross Ref
  19. Hyun-Wook Jin, Sayantan Sur, Lei Chai, and Dhabaleswar K. Panda. 2005. LiMIC: Support for High-Performance MPI Intra-node Communication on Linux Cluster. In 34th International Conference on Parallel Processing (ICPP 2005), 14-17 June 2005, Oslo, Norway. 184–191. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Kamran Karimi and Mohsen Sharifi. 2006. Transparent Distributed Programming under Linux. In 20th Annual International Symposium on High Performance Computing Systems and Applications (HPCS 2006), 14-17 May 2006, St. John’s, Newfoundland, Canada. 13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Christian Kurmann and Thomas Stricker. 2003. Zero-Copy for CORBA - Efficient Communication for Distributed Object Middleware. In 12th International Symposium on High-Performance Distributed Computing (HPDC-12 2003), 22-24 June 2003, Seattle, WA, USA. 4–13. Google ScholarGoogle ScholarCross RefCross Ref
  22. Chris Lattner and Vikram S. Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In 2nd IEEE / ACM International Symposium on Code Generation and Optimization (CGO 2004), 20-24 March 2004, San Jose, CA, USA. 75–88. Google ScholarGoogle ScholarCross RefCross Ref
  23. Shen Liu, Gang Tan, and Trent Jaeger. 2017. PtrSplit: Supporting General Pointers in Automatic Program Partitioning. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, CCS 2017, Dallas, TX, USA, October 30 - November 03, 2017. 2359–2371. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. LLVM. 2018. Clang: A C Language Family Frontend for LLVM. http://clang.llvm.org/ .Google ScholarGoogle Scholar
  25. S. Magnenat. 2018. ethzasl_message_transport. https://github.com/ethz-asl/ros-message-transport .Google ScholarGoogle Scholar
  26. Andrew C. Myers. 1995. Bidirectional Object Layout for Separate Compilation. In OOPSLA’95, Proceedings of the Tenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, Austin, Texas, USA, October 15-19, 1995. 124–139. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. OpenCV team. 2018. OpenCV - Official Site. http://opencv.org/ .Google ScholarGoogle Scholar
  28. Douglas Otstott, Latchesar Ionkov, Michael Lang, and Ming Zhao. 2017. TCASM: An asynchronous shared memory interface for high-performance application composition. Parallel Comput. 63 (2017), 61–78. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Qt Documentation. 2018. QSharedMemory Class. http://doc.qt.io/qt-5/qsharedmemory.html .Google ScholarGoogle Scholar
  30. M. Quigley, K. Conley, B. P. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler, and A. Y. Ng. 2009. ROS: an open-source Robot Operating System. In ICRA Workshop on Open Source Software.Google ScholarGoogle Scholar
  31. Sven Rheindt, Andreas Schenk, Akshay Srivatsa, Thomas Wild, and Andreas Herkersdorf. 2018. CaCAO: Complex and Compositional Atomic Operations for NoC-Based Manycore Platforms. In Architecture of Computing Systems - ARCS 2018 - 31st International Conference, Braunschweig, Germany, April 9-12, 2018, Proceedings. 139–152. Google ScholarGoogle ScholarCross RefCross Ref
  32. David Richie, James Ross, and Jamie Infantolino. 2017. A Distributed Shared Memory Model and C++ Templated MetaProgramming Interface for the Epiphany RISC Array Processor. In International Conference on Computational Science, ICCS 2017, 12-14 June 2017, Zurich, Switzerland. 1093–1102. Google ScholarGoogle ScholarCross RefCross Ref
  33. ROS Wiki. 2018. Nodelet, Robot operating system. http://wiki.ros.org/nodelet .Google ScholarGoogle Scholar
  34. Michael Schöttner, Oliver Schirpf, Moritz Wende, and Peter Schulthess. 2000. Multiple Subtyping in a Persistent Distributed Shared Memory Operating System. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2000, June 24-29, 2000, Las Vegas, Nevada, USA.Google ScholarGoogle Scholar
  35. W. Richard Stevens. 1992. Advanced Programming in the UNIX Environment. Addison-Wesley.Google ScholarGoogle Scholar
  36. M. Sústrik. 2018. ΦMQ: The Theoretical Foundation. http://www.250bpm.com/concepts .Google ScholarGoogle Scholar
  37. Andrew S. Tanenbaum. 1995. Distributed operating systems. Prentice Hall.Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. The Apache XML Project. 2004. Xalan-C++ version 1.10. http://xml.apache.org/xalan-c/ .Google ScholarGoogle Scholar
  39. The Object Management Group. 2018a. About the Data Distribution Service Specification Version 1.4. http://www.omg.org/ spec/DDS/1.4/ .Google ScholarGoogle Scholar
  40. The Object Management Group. 2018b. Common Object Request Broker Architecture (CORBA/IIOP), 3.3 edition. http: //www.omg.org/spec/CORBA/3.3/ .Google ScholarGoogle Scholar
  41. Frank Tip and Peter F. Sweeney. 1997. Class Hierarchy Specialization. In Proceedings of the 1997 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA ’97), Atlanta, Georgia, October 5-9, 1997. 271–285. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. K. Varda. 2018. Protocol buffers: Google’s data interchange format. https://opensource.googleblog.com/2008/07/protocolbuffers-googles-data.html .Google ScholarGoogle Scholar

Index Terms

  1. IVT: an efficient method for sharing subtype polymorphic objects

        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!