类型化语言中分布式共享的运行时支持
1. 引言
在集群的不同计算机之间共享对象时,运行时支持至关重要。对于类型化语言,要求类型足够强,以便能明确判断内存位置是否包含对象引用,像 Java 和 Modula - 3 就属于这类语言。与一些只能通过方法调用进行远程对象访问的系统不同,这里支持通过引用直接访问对象数据。并且在具备合适多线程支持的语言中,分布式执行是透明的,无需引入新的 API 进行分布式共享。
传统的分布式共享内存(DSM)实现不使用类型信息,在细粒度共享方面效率不高。基于 VM 的传统 DSM 系统在粗粒度应用上表现较好,但依赖 VM 页面,细粒度共享和假共享问题仍较突出。而使用代码插桩的细粒度 DSM 系统,受插桩成本和通信聚合不足的限制。
本文提出的新运行时系统 DOSA,利用运行时区分指针和数据的能力,借助 VM 支持实现高效细粒度共享,且无需插桩。它引入了一层间接性,允许对象位于不同虚拟内存位置并具有不同保护属性,必要时通过编译器优化减少这层间接性的开销。
将 DOSA 与最先进的基于页面的系统 TreadMarks 进行性能比较,结果表明:
- 细粒度应用性能比 TreadMarks 有显著提升(Barnes - Hut 最高提升 98%,Water - Spatial 最高提升 62%)。
- 垃圾回收应用性能比 TreadMarks 有大幅改善(最高提升 65%)。
- 粗粒度应用性能与 TreadMarks 相近(差距在 6% 以内)。
2. 编程模型
对于具有合适类型和多线程支持的语言,如 Java 和 Modula - 3,无需特殊 API。编程模型支持一
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



