Remote memory systems have attracted increasing attention as they can break the single-machine memory limitation among servers and improve overall memory utilization in data centers. Therefore, mostly implemented in managed languages (i.e., Java), memory-intensive applications can benefit from remote memory systems. However, while page-based remote memory systems support a wide range of applications, they suffer from limited performance due to I/O amplification. Although object-based remote memory systems offer high performance, they are limited to native language applications such as those written in C/C++, and thus cannot support Java applications. Moreover, they typically require manual code modifications, making them less developer-friendly. To achieve high performance and Java-friendliness, we propose Jarm, an object-based remote memory system specialized for Java applications without any manual code modification. Jarm leverages a static-analysis-based automated translation module, which analyzes variable I/O behavior and automatically transforms the original code into an equivalent version that can be directly deployed. Jarm introduces a novel remote object abstraction to enable unified management of memory resources and data lifecycles in Java applications, and leverages a runtime to efficiently control data transmission between local and remote memory. Our evaluation shows that Jarm outperforms prior page-based systems by up to 2.62x normalized throughput with only 0.45% negligible overhead of code translation time.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Jarm: Automated Remote Memory System for Java Applications

  • Jiawen Shen,
  • Wenxin Li,
  • Linxuan Zhong,
  • Yulong Li

摘要

Remote memory systems have attracted increasing attention as they can break the single-machine memory limitation among servers and improve overall memory utilization in data centers. Therefore, mostly implemented in managed languages (i.e., Java), memory-intensive applications can benefit from remote memory systems. However, while page-based remote memory systems support a wide range of applications, they suffer from limited performance due to I/O amplification. Although object-based remote memory systems offer high performance, they are limited to native language applications such as those written in C/C++, and thus cannot support Java applications. Moreover, they typically require manual code modifications, making them less developer-friendly. To achieve high performance and Java-friendliness, we propose Jarm, an object-based remote memory system specialized for Java applications without any manual code modification. Jarm leverages a static-analysis-based automated translation module, which analyzes variable I/O behavior and automatically transforms the original code into an equivalent version that can be directly deployed. Jarm introduces a novel remote object abstraction to enable unified management of memory resources and data lifecycles in Java applications, and leverages a runtime to efficiently control data transmission between local and remote memory. Our evaluation shows that Jarm outperforms prior page-based systems by up to 2.62x normalized throughput with only 0.45% negligible overhead of code translation time.