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 :
بازگشت