|
ABSTRACT
Developers commonly build contemporary enterprise applications using type-safe, component-based platforms, such as J2EE, and architect them to comprise multiple tiers, such as a web container, application server, and database engine. Administrators increasingly execute each tier in its own managed runtime environment (MRE) to improve reliability and to manage system complexity through the fault containment and modularity offered by isolated MRE instances. Such isolation, however, necessitates expensive cross-tier communication based on protocols such as object serialization and remote procedure calls. Administrators commonly co-locate communicating MREs on a single host to reduce communication overhead and to better exploit increasing numbers of available processing cores. However, state-of-the-art MREs offer no support for more efficient communication between co-located MREs, while fast inter-process communication mechanisms, such as shared memory, are widely available as a standard operating system service on most modern platforms. To address this growing need, we present the design and implementation of XMem ? type-safe, transparent, shared memory support for co-located MREs. XMem guarantees type-safety through coordinated, parallel, multi-process class loading and garbage collection. To avoid introducing any level of indirection, XMem manipulates virtual memory mapping. In addition, object sharing in XMem is fully transparent: shared objects are identical to local objects in terms of field access, synchronization, garbage collection, and method invocation, with the only difference being that sharedto-private pointers are disallowed. XMem facilitates easy integration and use by existing communication technologies and software systems, such as RMI, JNDI, JDBC, serialization/XML, and network sockets. We have implemented XMem in the open-source, productionquality HotSpot Java Virtual Machine. Our experimental evaluation, based on core communication technologies underlying J2EE, as well as using open-source server applications, indicates that XMem significantly improves throughput and response time by avoiding the overheads imposed by object serialization and network communication.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Apache Tomcat. http://tomcat.apache.org.
|
| |
2
|
Y. Aridor, M. Factor, and A. Teperman. cJVM: A single system image of a JVM on a cluster. In ICPP, 1999.
|
| |
3
|
J. Armstrong, R. Virding, C. Wikstrom, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, 1996.
|
| |
4
|
G. Back, W. C. Hsieh, and J. Lepreau. Processes in KaffeOS: Isolation, resource management, and sharing in Java. In OSDI, 2000.
|
| |
5
|
G. Back, P. Tullmann, L. Stoller, W. C. Hsieh, and J. Lepreau. Java operating systems: Design and implementation. Technical report, Univ. of Utah, 1998.
|
| |
6
|
H. G. Baker. Infant mortality and generational garbage collection. SIGPLAN Not., 28(4), 1993.
|
| |
7
|
D. Balfanz and L. Gong. Experience with secure multi-processing in Java. In ICDCS, 1998.
|
| |
8
|
BEA WebLogic Application Server. http://www.bea.com.
|
| |
9
|
B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczynski, D. Becker, C. Chambers, and S. J. Eggers. Extensibility, safety and performance in the SPIN operating system. In SOSP, 1995.
|
| |
10
|
F. Breg and C. D. Polychronopoulos. Java virtual machine support for object serialization. In Java Grande, 2001.
|
| |
11
|
C. Bryce and C. Razafimahefa. An approach to safe object sharing. SIGPLAN Not., 35(10), 2000.
|
| |
12
|
X. Chen and V. H. Allan. MultiJav: A distributed shared memory system based on multiple Java virtual machines. In PDPTA, 1998.
|
| |
13
|
C. Click, G. Tene, and M. Wolf. The pauseless GC algorithm. In VEE, 2005.
|
| |
14
|
CORBA Specification. http://www.omg.org.
|
| |
15
|
D. E. Culler, A. C. Arpaci-Dusseau, S. C. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, and K. A. Yelick. Parallel programming in Split-C. In SC, 1993.
|
| |
16
|
D. E. Culler, A. C. Arpaci-Dusseau, S. C. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, and K. A. Yelick. Parallel programming in Split-C. In SC, 1993.
|
| |
17
|
G. Czajkowski and L. Daynes. Multitasking without compromise: A virtual machine evolution. In OOPSLA, 2001.
|
| |
18
|
The DaCapo benchmarks. http://dacapobench.org.
|
| |
19
|
D. Detlefs, C. Flood, S. Heller, and T. Printezis. Garbage-first garbage collection. In ISMM, 2004.
|
| |
20
|
S. Dorward, R. Pike, D. L. Presotto, D. Ritchie, H. Trickey, and P. Winterbottom. Inferno. In COMPCON, 1997.
|
| |
21
|
T. El-Ghazawi, W. Carlson, and J. Draper. UPC Language Specifications V, 2001.
|
| |
22
|
M. Fahndrich, M. Aiken, C. Hawblitzel, O. Hodson, G. C. Hunt, J. R. Larus, and S. Levi. Language support for fast and reliable message-based communication in Singularity OS. In EuroSys, 2006.
|
| |
23
|
C. Flood, D. Detlefs, N. Shavit, and C. Zhang. Parallel garbage collection for shared memory multiprocessors. In JVM, 2001.
|
| |
24
|
E. Freeman, S. Hupfer, and K. Arnold. JavaSpaces Principles, Patterns, and Practice (Jini Series). Pearson Education, 1999.
|
| |
25
|
M. Golm, M. Felser, C. Wawersich, and J. Kleinoder. The JX operating system. In USENIX Annual Technical Conference, 2002.
|
| |
26
|
M. Hertz, Y. Feng, and E. D. Berger. Garbage collection without paging. In PLDI, 2005.
|
| |
27
|
C. A. R. Hoare. Communicating sequential processes. Commun. ACM, 26(1), 1983.
|
| |
28
|
HotSpot Java Virtual Machine GC. http://java.sun.com/javase/technologies/hotspot.
|
| |
29
|
Hsqldb. http://www.hsqldb.org.
|
| |
30
|
G. C. Hunt and J. R. Larus. Singularity: Rethinking the software stack. Operating Systems Review, 41(2):37--49, 2007.
|
| |
31
|
Isolate API. JSR-121. http://jcp.org.
|
| |
32
|
Java 2 Enterprise Edition. http://java.sun.com/javaee/.
|
| |
33
|
JavaOS : A Standalone Java Environment. Sun Microsystems, 1996.
|
| |
34
|
JBoss Enterprise Middleware. http://www.jboss.com.
|
| |
35
|
JNode. http://www.jnode.org.
|
| |
36
|
R. Jones and C. Ryder. Garbage collection should be lifetime aware. In ICOOOLPS, 2006.
|
| |
37
|
R. E. Jones. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. John Wiley and Sons, 1996.
|
| |
38
|
H. Kermany and E. Petrank. The Compressor: Concurrent, incremental and parallel compaction. In PLDI, 2006.
|
| |
39
|
S. Liang and G. Bracha. Dynamic class loading in the Java virtual machine. In OOPSLA, 1998.
|
| |
40
|
M. J. M. Ma, C.-L. Wang, and F. C. M. Lau. JESSICA: Java-enabled single-system-image computing architecture. J. Parallel Distrib. Comput., 60(10), 2000.
|
| |
41
|
J. Maassen, R. V. Nieuwpoort, R. Veldema, H. E. Bal, T. Kielmann, C. J. H. Jacobs, and R. F. H. Hofman. Efficient Java RMI for parallel programming. Programming Languages and Systems, 23(6), 2001.
|
| |
42
|
M. Macbeth, K. McGuigan, and P. Hatcher. Executing Java threads in parallel in a distributed-memory environment. In CASCON, 1998.
|
| |
43
|
J. Manson, W. Pugh, and S. V. Adve. The Java memory model. SIGPLAN Not., 40(1), 2005.
|
| |
44
|
M. Nelson, B.-H. Lim, and G. Hutchins. Fast transparent migration for virtual machines. In USENIX Technical Conference, 2005.
|
| |
45
|
Occam Programming Manual. Inmos Corporation, 1984.
|
| |
46
|
Open Source J2SE. http://openjdk.java.net.
|
| |
47
|
S. Osman, D. Subhraveti, G. Su, and J. Nieh. The design and implementation of Zap: A system for migrating computing environments. In OSDI, 2002.
|
| |
48
|
Y. Ossia, O. Ben-Yitzhak, and M. Segal. Mostly concurrent compaction for mark-sweep GC. In ISMM, 2004.
|
| |
49
|
M. Perry. Shared Memory Under Linux, 1999. http://fscked.org/writings/SHM/shm.html.
|
| |
50
|
M. Philippsen andM. Zenger. JavaParty?transparent remote objects in Java. Concurrency: Practice and Experience, 9(11), 1997.
|
| |
51
|
Java RMI Specification. http://java.sun.com.
|
| |
52
|
K. Russell and D. Detlefs. Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing. SIGPLAN Not., 41(10), 2006.
|
| |
53
|
F. B. Schneider, G. Morrisett, and R. Harper. A language-based approach to security. Lecture Notes in CS, 2001.
|
| |
54
|
Java Object Serialization Specification. http://java.sun.com.
|
| |
55
|
SPEC. http://www.spec.org.
|
| |
56
|
D. Stefanovic, M. Hertz, S. M. Blackburn, K. S. McKinley, and J. E. B. Moss. Older-first garbage collection in practice: Evaluation in a Java virtual machine. In MSP, 2002.
|
| |
57
|
T. Suezawa. Persistent execution state of a Java virtual machine. In Java Grande, 2000.
|
| |
58
|
D. M. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. SIGPLAN Not., 19(5), 1984.
|
| |
59
|
T. von Eicken, C.-C. Chang, G. Czajkowski, C. Hawblitzel, D. Hu, and D. Spoonhower. J-Kernel: A capability-based operating system for Java. In Secure Internet Programming, 1999.
|
| |
60
|
IBM WebSphere Application Server. http://www.ibm.com.
|
| |
61
|
M. Wegiel and C. Krintz. The Mapping Collector: Virtual memory support for generational, parallel, and concurrent compaction. In ASPLOS, 2008.
|
| |
62
|
P. R. Wilson. Uniprocessor garbage collection techniques. Technical report, Univ. of Texas, 1994.
|
| |
63
|
P. R. Wilson, M. S. Johnstone, M. Neely, and D. Boles. Dynamic storage allocation: A survey and critical review. In IWMM, 1995.
|
| |
64
|
P. R.Wilson and T. G.Moher. A card-marking scheme for controlling intergenerational references in generation-based garbage collection on stock hardware. SIGPLAN Not., 24(5), 1989.
|
| |
65
|
N. Wirth and J. Gutknecht. Project Oberon: the design of an operating system and compiler. ACM Press/Addison-Wesley, 1992.
|
| |
66
|
T. Yang, E. D. Berger, S. F. Kaplan, and J. E. B. Moss. CRAMM: Virtual memory support for garbage-collected applications. In OSDI, 2006.
|
| |
67
|
W. Yu and A. L. Cox. Java/DSM: A platform for heterogeneous computing. Concurrency - Practice and Experience, 9(11), 1997.
|
INDEX TERMS
Primary Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.3
Language Constructs and Features
Subjects:
Dynamic storage management
Additional Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.3
Language Constructs and Features
Subjects:
Classes and objects
D.3.4
Processors
Subjects:
Optimization;
Compilers;
Run-time environments;
Memory management (garbage collection)
General Terms:
Design,
Experimentation,
Languages,
Management,
Measurement,
Performance
Keywords:
class loading,
garbage collection,
interprocess communication,
managed runtimes,
parallel,
shared memory,
synchronization,
transparent,
type-safe
|