DocumentCode
1398511
Title
Multithreading in Java: Performance and Scalability on Multicore Systems
Author
Chen, Kuo-Yi ; Chang, J. Morris ; Hou, Ting-Wei
Author_Institution
Dept. of Eng. Sci., Nat. Cheng Kung Univ., Tainan, Taiwan
Volume
60
Issue
11
fYear
2011
Firstpage
1521
Lastpage
1534
Abstract
The performance and scalability issues of multithreaded Java programs on multicore systems are studied in this paper. First, we examine the performance scaling of benchmarks with various numbers of processor cores and application threads. Second, by correlating low-level hardware performance data to JVM threads and system components, the detail analyses of performance and scalability are presented, such as the hardware stall events and memory system latencies. Third, the usages of memory resource are detailed to observe the potential bottlenecks. Finally, the JVM tuning techniques are proposed to alleviate the bottlenecks, and improve the performance and scalability. Several key findings are revealed through this study. First, the lock contentions usually lead to a strong limitation of scalability. Second, in terms of memory access latencies, the most of memory stalls are produced by L2 cache misses and cache-to-cache transfers. Finally, the overhead of minor garbage collections could be an important factor of throughput reductions. Based on these findings, the appropriate Java Virtual Machine (JVM) tuning techniques are examined in this study. We observe that the use of a parallel garbage collector and an appropriate ratio of young to old generation can alleviate the overhead of minor collection and improve the efficiency of garbage collections. Moreover, the cache utilizations could be enhanced with the use of thread-local allocation buffer, and then leads to the performance improvements significantly.
Keywords
Java; cache storage; multi-threading; multiprocessing systems; software performance evaluation; virtual machines; JVM tuning techniques; Java virtual machine tuning techniques; L2 cache misses; cache-to-cache transfers; hardware stall events; memory access latencies; memory resource usage; memory system latencies; minor garbage collections; multicore systems; multithreaded Java programs; processor cores; thread-local allocation buffer; Benchmark testing; Hardware; Instruction sets; Java; Scalability; Throughput; Tuning; Garbage collection; Java; lock contention; multicore; performance counter; scalability; virtual machine.;
fLanguage
English
Journal_Title
Computers, IEEE Transactions on
Publisher
ieee
ISSN
0018-9340
Type
jour
DOI
10.1109/TC.2010.232
Filename
5661769
Link To Document