• 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