Bytecode fetch optimization for a java interpreter
Kazunori Ogata, Hideaki Komatsu, et al.
ASPLOS 2002
Java has a built-in synchronization mechanism and there are many research works to optimize the mechanism by reducing use of costly operations, such as OS monitors and atomic operations. OpenJDK implements biased locking to eliminate all synchronization-related atomic operations for uncontended locks. However, atomic operations are still observed in Hadoop map tasks even though a map task is single-threaded. This paper presents a scenario where a map task causes infrequent lock contentions and an enhancement to help biased locking work better in such situation. Our enhancement includes a new mechanism to profile lock usages, new transitions to enforce those high profiled locks to continue benefit from biased locking, and a mechanism to bypass lock state transition during deoptimization. It accelerated TPC-DS queries execution by 5% on average. We also verified it reduced lock-related atomic operations by up to 50% for map task.
Kazunori Ogata, Hideaki Komatsu, et al.
ASPLOS 2002
Rina Nakazawa, Kazunori Ogata, et al.
CLOUD 2017
Kazunori Ogata, Tamiya Onodera, et al.
OOPSLA 2006
Shigeru Chiba, Michihiro Horie, et al.
MODULARITY 2012