XMem: type-safe, transparent, shared memory for cross-runtime communication and coordination

XMem: type-safe, transparent, shared memory for cross-runtime communication and coordination
复制标题

XMem:类型安全、透明、共享内存,用于跨运行时通信和协调

DOI:
--
复制
发表时间:
2008
期刊:
ACM-SIGPLAN Symposium on Programming Language Design and Implementation
影响因子:
--
通讯作者:
C. Krintz
C. Krintz
中科院分区:
--
文献类型:
--
作者:
Michal Wegiel;C. Krintz

文献摘要

被引文献

相似文献

开发人员通常使用类型安全的、基于组件的平台(如J2EE)构建现代企业应用程序,并将其架构为包括多个层(如Web容器、应用程序服务器和数据库引擎)。管理员越来越多地在其自己的托管运行时环境(MRE)中执行每个层,以提高可靠性,并通过隔离的MRE实例提供的故障遏制和模块化来管理系统复杂性。但是,这种隔离需要基于协议(如对象序列化和远程过程调用)进行昂贵的跨层通信。管理员通常将通信的MRE共同放置在单个主机上,以减少通信开销,并更好地利用越来越多的可用处理核心。然而,最先进的MRE不提供对位于同一位置的MRE之间的更有效通信的支持,而快速进程间通信机制(诸如共享存储器)在大多数现代平台上作为标准操作系统服务而广泛可用。 为了满足这一日益增长的需求,我们提出的设计和实施XMem?类型安全、透明、共享内存支持。XMem通过协调、并行、多进程的类加载和垃圾收集来保证类型安全。为了避免引入任何级别的间接性,XMem操纵虚拟内存映射。此外,XMem中的对象共享是完全透明的:共享对象在字段访问、同步、垃圾收集和方法调用方面与本地对象相同,唯一的区别是不允许共享到私有指针。XMem促进了现有通信技术和软件系统(如RMI、JNDI、JDBC、序列化/XML和网络套接字)的轻松集成和使用。 我们已经在开源的、生产质量的HotSpot Java虚拟机中实现了XMem。我们的实验评估,基于J2EE的核心通信技术,以及使用开源服务器应用程序,表明XMem显着提高吞吐量和响应时间,避免了对象序列化和网络通信的开销。
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.