<node id="628663">
  <nid>628663</nid>
  <type>event</type>
  <uid>
    <user id="27707"><![CDATA[27707]]></user>
  </uid>
  <created>1573061207</created>
  <changed>1573061207</changed>
  <title><![CDATA[PhD Proposal by Girish Mururu]]></title>
  <body><![CDATA[<p>Title: Compiler Guided Scheduling : A Cross-stack Approach for Performance Elicitation</p>

<p>&nbsp;</p>

<p>Girish Mururu</p>

<p>Ph.D. Student in Computer Science</p>

<p>School of Computer Science&nbsp;</p>

<p>College of Computing</p>

<p>Georgia Institute of Technology</p>

<p>&nbsp;</p>

<p>Date: Tuesday, November 12, 2019</p>

<p>Time: 1:30 - 3:30 pm (EST)</p>

<p>Location: KACB 2100</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>Committee :</p>

<p>-------------------</p>

<p>Dr. Santosh Pande (Advisor, School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Ada Gavrilovska (School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Kishore Ramachandran (School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Vivek Sarkar (School of Computer Science,&nbsp; Georgia Institute of Technology)</p>

<p>&nbsp;</p>

<p>Abstract :</p>

<p>-------------</p>

<p>Modern software executes on multi-core systems that share resources such as</p>

<p>several levels of memory hierarchy (caches, main memory as well as persistent storage),</p>

<p>as well as I/O devices. In such a co-execution environment, the performance of modern</p>

<p>software is critically affected due to the resource conflicts resulting due to the</p>

<p>sharing of resources. Compiler optimizations have traditionally focused on analyzing</p>

<p>and optimizing the performance of individual (single or multi-threaded) applications</p>

<p>and have resulted in tremendous strides in this regard. On the other hand, schedulers</p>

<p>have dealt with the problem of resource sharing mostly adopting fairness as the primary</p>

<p>criterion in terms of single core sharing while adopting load balancing and processor affinity</p>

<p>as the criteria in terms of multi-core scheduling. Both the compiler and the scheduler stacks have</p>

<p>continued to evolve stand-alone; this thesis claims that there is a significant opportunity</p>

<p>to improve performance (execution speed of individual applications), resource sharing and throughput</p>

<p>by developing a synergistic approach that combines compiler generated dynamic application attributes</p>

<p>with runtime aggregation of such information to undertake smart scheduling decisions.</p>

<p>One of the key goals of this work is to perform such a cross-stack approach&nbsp; by utilizing the</p>

<p>existing systems interfaces without introducing new ones. Another important characteristic is that the</p>

<p>approach is built with a layering solution without modifying the OS. Such a design is envisioned not to</p>

<p>perturb other systems properties which have evolved over a period of time.&nbsp;&nbsp;</p>

<p>&nbsp;</p>

<p>Modern workloads related to computer vision, media computation and machine learning exhibit a very</p>

<p>high amount of data locality. Although modern OS deploys processor affinity to induce data</p>

<p>locality aware scheduling, lack of knowledge of precise dynamic application characteristics leaves a significant</p>

<p>performance inefficiency on the table due to a significant number of process migrations carried</p>

<p>out by the scheduler. In our first work, PinIt, we decrease unwanted migrations&nbsp; of processes among</p>

<p>cores by only influencing the scheduler without modifying it. In order to fairly and efficiently</p>

<p>utilize cores, schedulers such as&nbsp; CFS migrate threads between cores during execution. Although such</p>

<p>thread migrations alleviate the problem of stalling and yield better core utilization, they can</p>

<p>also destroy data locality, resulting in&nbsp; fewer cache hits, TLB hits and thus performance loss for</p>

<p>the&nbsp; group of applications collectively.&nbsp;&nbsp;</p>

<p>PinIt first determines the regions of a program in which the process should be pinned onto a core</p>

<p>so that adverse migrations causing excessive cache and TLB misses are avoided by calculating memory</p>

<p>reuse density, a&nbsp; new measure that quantifies the reuses within code regions. Pin/unpin calls are</p>

<p>then hoisted at the entry and exits of the region. The migration of the processes is prevented within</p>

<p>the pinned regions. The thesis presents new analyses and transformations that optimize the placement</p>

<p>of such calls. In an overloaded environment compared to priority-cfs, PinIt speeds up high-priority</p>

<p>applications in mediabench workloads by 1.16x and 2.12x&nbsp; and in computer vision-based workloads by</p>

<p>1.35x and 1.23x on 8cores and 16cores, respectively, with almost the same or better throughput for</p>

<p>low-priority applications.</p>

<p>&nbsp;</p>

<p>In the second work, to achieve&nbsp; very high throughput for large number of batch jobs, we develop a</p>

<p>throughput-oriented scheduler that processes compiler inserted beacon that transmit applications&#39; dynamic</p>

<p>information to the scheduler at runtime. Typically, schedulers conservatively co-locate processes to avoid</p>

<p>cache conflicts since miss penalties are quite heavy leading to lower resource utilization</p>

<p>((ranging from 50 to 70%). Moreover in a throughput oriented setting, such a conservative scheduling</p>

<p>leads to significant losses in terms of achieved throughput. Our approach relies on the compiler to</p>

<p>insert ``beacons&#39;&#39; in the application at strategic program points to periodically produce and/or</p>

<p>update details of anticipated resource-heavy program region(s). The compiler classifies loops in</p>

<p>programs based on cache usage and predictability of their execution time and inserts different types</p>

<p>of beacons at their entry/exit points. The precision&nbsp; of the information carried by beacons varies as</p>

<p>per the analyzability of the loops, and the scheduler uses performance counters at runtime to fine</p>

<p>tune decision making for concurrency. The information produced by beacons in multiple processes is aggregated</p>

<p>and analyzed by the predictive scheduler to proactively respond to the anticipated workload requirements.</p>

<p>A framework prototype demonstrates high-quality predictions and improvements in throughput over CFS by</p>

<p>up to 4.7x on ThunderX and up to 5.2x on ThunderX2 servers for consolidated workloads.</p>

<p>&nbsp;</p>

<p>Finally, as a part of proposed work,&nbsp; we devise extensions to the beacon scheduler to target</p>

<p>low latency environment and also efficiently handle multi-threaded processes. To achieve low latency</p>

<p>while efficiently using resources, schedulers&nbsp; must divide the available processes among the available</p>

<p>cores such that latency is the lowest for each process. In case of multi-threaded processes, the compiler</p>

<p>and the runtime&nbsp; must send beacons for each thread and the scheduler must manage resources efficiently</p>

<p>among all the inter-process threads. We also plan to augment the beacon analysis with&nbsp; path and</p>

<p>call chain prediction to be able to predict the entire workload of an application at the start and</p>

<p>then send corrective beacons for mispredictions for a complete predictive scheduler.</p>

<p>&nbsp;</p>
]]></body>
  <field_summary_sentence>
    <item>
      <value><![CDATA[Compiler Guided Scheduling : A Cross-stack Approach for Performance Elicitation]]></value>
    </item>
  </field_summary_sentence>
  <field_summary>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_summary>
  <field_time>
    <item>
      <value><![CDATA[2019-11-12T13:30:00-05:00]]></value>
      <value2><![CDATA[2019-11-12T15:30:00-05:00]]></value2>
      <rrule><![CDATA[]]></rrule>
      <timezone><![CDATA[America/New_York]]></timezone>
    </item>
  </field_time>
  <field_fee>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_fee>
  <field_extras>
      </field_extras>
  <field_audience>
          <item>
        <value><![CDATA[Faculty/Staff]]></value>
      </item>
          <item>
        <value><![CDATA[Public]]></value>
      </item>
          <item>
        <value><![CDATA[Graduate students]]></value>
      </item>
          <item>
        <value><![CDATA[Undergraduate students]]></value>
      </item>
      </field_audience>
  <field_media>
      </field_media>
  <field_contact>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_contact>
  <field_location>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_location>
  <field_sidebar>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_sidebar>
  <field_phone>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_phone>
  <field_url>
    <item>
      <url><![CDATA[]]></url>
      <title><![CDATA[]]></title>
            <attributes><![CDATA[]]></attributes>
    </item>
  </field_url>
  <field_email>
    <item>
      <email><![CDATA[]]></email>
    </item>
  </field_email>
  <field_boilerplate>
    <item>
      <nid><![CDATA[]]></nid>
    </item>
  </field_boilerplate>
  <links_related>
      </links_related>
  <files>
      </files>
  <og_groups>
          <item>221981</item>
      </og_groups>
  <og_groups_both>
          <item><![CDATA[Graduate Studies]]></item>
      </og_groups_both>
  <field_categories>
          <item>
        <tid>1788</tid>
        <value><![CDATA[Other/Miscellaneous]]></value>
      </item>
      </field_categories>
  <field_keywords>
          <item>
        <tid>102851</tid>
        <value><![CDATA[Phd proposal]]></value>
      </item>
      </field_keywords>
  <field_userdata><![CDATA[]]></field_userdata>
</node>
