Remix: online detection and repair of cache contention for the JVM

Remix: online detection and repair of cache contention for the JVM
复制标题

Remix:JVM 缓存争用的在线检测和修复

DOI:
--
复制
发表时间:
2016
期刊:
ACM-SIGPLAN Symposium on Programming Language Design and Implementation
影响因子:
--
通讯作者:
Joseph Devietti
Joseph Devietti
中科院分区:
--
文献类型:
--
作者:
Ariel Eizenberg;Shiliang Hu;Gilles A. Pokam;Joseph Devietti

文献摘要

被引文献

相似文献

随着越来越多的计算转移到多核体系结构上,找到处理多线程性能错误(如真假共享)的有效方法变得越来越重要。以前在非托管语言中修复错误共享的方法采用了高度侵入性的运行时程序修改。我们观察到托管语言运行时,具有垃圾收集和JIT代码编译,提供了直接修复此类错误的独特机会,反映了手动修复中使用的技术。我们介绍了Remix,一个修改版本的Oracle HotSpot JVM,它可以检测缓存争用错误,并在运行时修复错误共享。Remix的检测机制利用了英特尔平台上最新的性能计数器改进,它允许在硬件级别对缓存争用进行精确、不显眼的监控。Remix可以在LMAX Disruptor高性能线程间消息传递库和Spring Reactor事件处理框架中检测和修复已知的虚假共享问题,自动提供1.5-2倍于未优化代码的速度,并匹配手动优化的性能。Remix还在SPECjvm2008中发现了一个新的虚假共享错误,并在HotSpot JVM中发现了一个真正的共享错误,修复后,将三个NAS并行基准的性能提高了7-25倍。Remix在其他不显示缓存争用的基准测试中不会产生统计上显著的性能开销,这使得Remix适合始终在线使用。
As ever more computation shifts onto multicore architectures, it is increasingly critical to find effective ways of dealing with multithreaded performance bugs like true and false sharing. Previous approaches to fixing false sharing in unmanaged languages have employed highly-invasive runtime program modifications. We observe that managed language runtimes, with garbage collection and JIT code compilation, present unique opportunities to repair such bugs directly, mirroring the techniques used in manual repairs. We present Remix, a modified version of the Oracle HotSpot JVM which can detect cache contention bugs and repair false sharing at runtime. Remix's detection mechanism leverages recent performance counter improvements on Intel platforms, which allow for precise, unobtrusive monitoring of cache contention at the hardware level. Remix can detect and repair known false sharing issues in the LMAX Disruptor high-performance inter-thread messaging library and the Spring Reactor event-processing framework, automatically providing 1.5-2x speedups over unoptimized code and matching the performance of hand-optimization. Remix also finds a new false sharing bug in SPECjvm2008, and uncovers a true sharing bug in the HotSpot JVM that, when fixed, improves the performance of three NAS Parallel Benchmarks by 7-25x. Remix incurs no statistically-significant performance overhead on other benchmarks that do not exhibit cache contention, making Remix practical for always-on use.