<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:contributor>Binder, Walter</dc:contributor>
  <dc:creator>Rosà, Andrea</dc:creator>
  <dc:date>2018-07-06</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">Task granularity, i.e., the amount of work performed by parallel tasks, is a key performance attribute of parallel  applications. On the one hand, fine-grained tasks (i.e., small tasks carrying out few computations) may introduce  considerable parallelization overheads. On the other hand, coarse-grained tasks (i.e., large tasks performing  substantial computations) may not fully utilize the available CPU cores, leading to missed parallelization  opportunities. We focus on task-parallel applications running in a single Java Virtual Machine on a shared- memory multicore. Despite their performance may considerably depend on the granularity of their tasks, this topic  has received little attention in the literature. Our work fills this gap, analyzing and optimizing the task granularity of  such applications. In this dissertation, we present a new methodology to accurately and efficiently collect the  granularity of each executed task, implemented in a novel profiler. Our profiler collects carefully selected metrics  from the whole system stack with low overhead. Our tool helps developers locate performance and scalability  problems, and identifies classes and methods where optimizations related to task granularity are needed, guiding  developers towards useful optimizations. Moreover, we introduce a novel technique to drastically reduce the  overhead of task-granularity profiling, by reifying the class hierarchy of the target application within a separate  instrumentation process. Our approach allows the instrumentation process to instrument only the classes  representing tasks, inserting more efficient instrumentation code which decreases the overhead of task detection.  Our technique significantly speeds up task-granularity profiling and so enables the collection of accurate metrics  with low overhead.We use our novel techniques to analyze task granularity in the DaCapo, ScalaBench, and  Spark Perf benchmark suites. We reveal inefficiencies related to fine-grained and coarse-grained tasks in several  workloads. We demonstrate that the collected task-granularity profiles are actionable by optimizing task  granularity in numerous benchmarks, performing optimizations in classes and methods indicated by our tool. Our  optimizations result in significant speedups (up to a factor of 5.90x) in numerous workloads suffering from fine-  and coarse-grained tasks in different environments. Our results highlight the importance of analyzing and  optimizing task granularity on the Java Virtual Machine.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/318724</dc:identifier>
  <dc:identifier>https://n2t.net/ark:/12658/srd1318724</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/318724/files/2018INFO008.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-117566</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1318724</dc:relation>
  <dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
  <dc:rights>License undefined</dc:rights>
  <dc:subject xmlns:ns1="xml" ns1:lang="en">Task granularity</dc:subject>
  <dc:subject xmlns:ns2="xml" ns2:lang="en">Task parallelism</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Performance analysis and optimization</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">Vertical profiling</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Actionable profiles</dc:subject>
  <dc:subject xmlns:ns6="xml" ns6:lang="en">Dynamic analysis</dc:subject>
  <dc:subject xmlns:ns7="xml" ns7:lang="en">Reflective information</dc:subject>
  <dc:subject xmlns:ns8="xml" ns8:lang="en">Bytecode instrumentation</dc:subject>
  <dc:subject xmlns:ns9="xml" ns9:lang="en">Java Virtual Machine</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns10="xml" ns10:lang="en">Analysis and optimization of task granularity on the Java virtual machine</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
