<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="9788793519077.xsl"?>
<book id="home" xmlns:xlink="http://www.w3.org/1999/xlink">
<bookinfo>
<title>Dynamic Resource Allocation in Embedded, High-Performance and Cloud Computing</title>
<authorgroup>
<author><firstname>Leandro Soares</firstname>
<surname>Indrusiak</surname>
</author>
</authorgroup>
<authorgroup>
<author><firstname>Piotr</firstname>
<surname>Dziurzanski</surname>
</author>
</authorgroup>
<authorgroup>
<author><firstname>Amit Kumar</firstname>
<surname>Singh</surname>
</author>
</authorgroup>
<publisher>
<publishername>River Publishers</publishername>
</publisher>
<isbn>9788793519077</isbn>
</bookinfo>
<preface class="preface" id="preface01">
<title>RIVER PUBLISHERS SERIES IN INFORMATION SCIENCE AND TECHNOLOGY</title>
<para><emphasis>Series Editors</emphasis></para>
<para><emphasis role="strong">K. C. CHEN</emphasis></para>
<para><emphasis>National Taiwan University</emphasis></para>
<para><emphasis>Taipei, Taiwan</emphasis></para>
<para><emphasis role="strong">SANDEEP SHUKLA</emphasis></para>
<para><emphasis>Virginia Tech</emphasis></para>
<para><emphasis>USA</emphasis></para>
<para><emphasis role="strong">CHRISTOPHE BOBDA</emphasis></para>
<para><emphasis>University of Arkansas</emphasis></para>
<para><emphasis>USA</emphasis></para>
<para>The &#x201C;River Publishers Series in Information Science and Technology&#x201D; covers research which ushers the 21st Century into an Internet and multimedia era. Multimedia means the theory and application of filtering, coding, estimating, analyzing, detecting and recognizing, synthesizing, classifying, recording, and reproducing signals by digital and/or analog devices or techniques, while the scope of &#x201C;signal&#x201D; includes audio, video, speech, image, musical, multimedia, data/content, geophysical, sonar/radar, bio/medical, sensation, etc. Networking suggests transportation of such multimedia contents among nodes in communication and/or computer networks, to facilitate the ultimate Internet.</para>
<para>Theory, technologies, protocols and standards, applications/services, practice and implementation of wired/wireless networking are all within the scope of this series. Based on network and communication science, we further extend the scope for 21st Century life through the knowledge in robotics, machine learning, embedded systems, cognitive science, pattern recognition, quantum/biological/molecular computation and information processing, biology, ecology, social science and economics, user behaviors and interface, and applications to health and society advance.</para>
<para>Books published in the series include research monographs, edited volumes, handbooks and textbooks. The books provide professionals, researchers, educators, and advanced students in the field with an invaluable insight into the latest research and developments.</para>
<para>Topics covered in the series include, but are by no means restricted to the following:</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para>Communication/Computer Networking Technologies and Applications</para></listitem>
<listitem><para>Queuing Theory</para></listitem>
<listitem><para>Optimization</para></listitem>
<listitem><para>Operation Research</para></listitem>
<listitem><para>Stochastic Processes</para></listitem>
<listitem><para>Information Theory</para></listitem>
<listitem><para>Multimedia/Speech/Video Processing</para></listitem>
<listitem><para>Computation and Information Processing</para></listitem>
<listitem><para>Machine Intelligence</para></listitem>
<listitem><para>Cognitive Science and Brian Science</para></listitem>
<listitem><para>Embedded Systems</para></listitem>
<listitem><para>Computer Architectures</para></listitem>
<listitem><para>Reconfigurable Computing</para></listitem>
<listitem><para>Cyber Security</para></listitem>
</itemizedlist>
<para>For a list of other books in this series, www.riverpublishers.com</para>
</preface>
<preface class="preface" id="preface02">
<title>Preface</title>
<para>The availability of many-core computing platforms enables a wide variety of technical solutions for systems across the embedded, high-performance and cloud computing domains. However, large scale many-core systems are notoriously hard to optimise. Choices regarding resource allocation alone can account for wide variability in timeliness and energy dissipation (up to several orders of magnitude). This book covers dynamic resource allocation heuristics for many-core systems, aiming to provide appropriate guarantees on performance and energy efficiency. It addresses different types of systems, aiming to harmonise the approaches to dynamic allocation across the complete spectrum between systems with little flexibility and strict performance guarantees all the way to highly flexible systems with soft performance guarantees.</para>
<para>Resource allocation is one of the most complex problems in large multiprocessor and distributed systems, and in general it is considered NP-hard. The theoretical evidence shows that the number of possible allocations of application tasks grows exponentially with the increase of the number of processing cores. The empirical evidence points in the same direction, with case studies showing that for a realistic multiprocessor embedded system (40&#x2013;60 application components, 15&#x2013;30 processing cores) a well-tuned search algorithm had to statically evaluate hundreds of thousands of distinct allocations before it finds one that meets the systems performance requirements.</para>
<para>In this book, we argue that the only way to cope with such complexity is to design systems that are capable to explore the allocation space during runtime. This is commonly done in cloud and high-performance computing, mainly because the workload of such systems cannot be accurately predicted in advance and static allocations are thus impossible. In embedded systems, the workload is more predictable in terms of its worst-case behaviour, but static allocations that take such characterisation into account tend to produce underutilised platforms. We therefore set the scene for dynamic resource allocation mechanisms by identifying and evaluating allocation heuristics that can be used to provide different levels of performance guarantees, and that cope with different levels of dynamism on the application workload.</para>
<para>The book starts with a description of the common practices and challenges in dynamic resource allocation, highlighting the peculiarities of each domain: embedded, HPC and cloud computing. Then, each of the challenges is addressed in detail within the following chapters, which are largely self-contained and therefore can be read in any order. To facilitate understanding, all of them follow the same structure: a specific challenge is motivated and the respective problem is precisely formulated; a detailed description of a solution to the problem is then given, followed by experimental work showing quantitative evidence of the strengths and weaknesses of that solution; related work is reviewed; and a summary of the chapter is given at the end.</para>
<para>The technical work that resulted in this book was done within the frame of the DreamCloud project, and the project website<sup>1</sup> makes available a number of reference implementations of the models and heuristics described here. Updates to this book will also be made available on that website.</para>
<para>Leandro Soares Indrusiak,</para>
<para>Piotr Dziurzanski, and Amit Kumar Singh,</para>
<para>York, summer of 2016.</para>
</preface>
<fn><sup>1</sup> http://www.dreamcloud-project.org</fn>
<preface class="preface" id="preface03">
<title>Acknowledgements</title>
<para>The research work that resulted in this book was done within the frame of the DreamCloud project, funded by the European Commission under Framework Programme 7 (Ref. 611411). The authors would like to acknowledge and thank the commission for the funding, as well as the project officers and reviewers for their suggestions and feedback on the project outcomes.</para>
<para>The authors would like to thank Hashan Roshantha Mendis, whose work provided most of the foundations and the experimental results reported in Chapter 6.</para>
<para>The authors would also like to thank all the members of the DreamCloud consortium, particularly Scott Hansen, Bj&#x00F6;rn Saballus, Devendra Rai, Manuel Selva, Abdoulaye Gamati&#x00E9;, Gilles Sassatelli, Luciano Copello Ost, Leonardo Zordan, David Novo, Alexey Cheptsov, Dennis Hoppe, Thomas Baumann, Fridtjof Siebert, Malek Ben Salen, Raj Patel, Jos&#x00E9; Miguel Monta&#x00F1;ana and Neil Audsley.</para>
</preface>
<preface class="preface" id="preface04">
<title>List of Figures</title>
<table-wrap position="float">
<table cellspacing="5" cellpadding="5" frame="none" rules="none">
<tbody>
<tr><td valign="top" width="15%"><emphasis role="strong"><link linkend="fig1_1">Figure 1.1</link></emphasis></td><td valign="top" align="left">Application domains and their characteristics with regard to dynamicity, resource utilisation and performance predictability</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig2_1">Figure 2.1</link></emphasis></td><td valign="top" align="left">Example of a probability mass function of a discrete random variable describing a job&#x2019;s execution time</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_1">Figure 3.1</link></emphasis></td><td valign="top" align="left">Block diagrams of control system architectures: feed-forward (<emphasis>above</emphasis>) and feedback (<emphasis>below</emphasis>)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_2">Figure 3.2</link></emphasis></td><td valign="top" align="left">Distributed feedback control real-time allocation architecture</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_3">Figure 3.3</link></emphasis></td><td valign="top" align="left">Maximum normalised task lateness (with execution time equal to 50,000 ns) in step responses for a number of tasks (3 clusters, 3 cores in each)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_4">Figure 3.4</link></emphasis></td><td valign="top" align="left">Maximum normalised task lateness step response for 500 tasks (with execution time equal to 50,000 ns) released at 5,000 ns (3 clusters, 3 cores in each)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_5">Figure 3.5</link></emphasis></td><td valign="top" align="left">Cores utilisation step response for 500 tasks (with execution time equal to 50,000 ns) released at 0 ns (1 cluster with 3 cores)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_6">Figure 3.6</link></emphasis></td><td valign="top" align="left">Core utilisation measured during the first 500 ns of the simulation</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_7">Figure 3.7</link></emphasis></td><td valign="top" align="left">Control signal observed during the first 500 ns of the simulation</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_8">Figure 3.8</link></emphasis></td><td valign="top" align="left">Distributed feedback control real-time allocation with DVFS architecture</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_9">Figure 3.9</link></emphasis></td><td valign="top" align="left">Pseudo-code of the proposed admission controller functionality</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_10">Figure 3.10</link></emphasis></td><td valign="top" align="left">Tasks executed before their deadline in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_11">Figure 3.11</link></emphasis></td><td valign="top" align="left">Tasks rejected in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_12">Figure 3.12</link></emphasis></td><td valign="top" align="left">Normalized dynamic energy dissipation in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig3_13">Figure 3.13</link></emphasis></td><td valign="top" align="left">Normalized dynamic energy dissipation per task meeting its deadline in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_1">Figure 4.1</link></emphasis></td><td valign="top" align="left">Building blocks of the proposed approach</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_2">Figure 4.2</link></emphasis></td><td valign="top" align="left">A proposed many-core system architecture</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_3">Figure 4.3</link></emphasis></td><td valign="top" align="left">Illustration of task<emphasis> &#x03C4;</emphasis><sub>i,j</sub> slack in three cases from Equation (4.1)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_4">Figure 4.4</link></emphasis></td><td valign="top" align="left">Number of executed tasks (<emphasis>top</emphasis>) and number of tasks rejected by the exact schedulability test (<emphasis>bottom</emphasis>)in closed-loop WCET, closed-loop ET and open-loop systems for the periodic task workload simulation scenario</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_5">Figure 4.5</link></emphasis></td><td valign="top" align="left">Number of tasks executed before their deadlines (<emphasis>top</emphasis>), the number of rejected tasks (<emphasis>centre</emphasis>) and number of the exact schedulability test executions (<emphasis>bottom</emphasis>) in baseline open-loop and proposed closed-loop ET systems for the random workloads simulation scenario with different weight of workloads</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_6">Figure 4.6</link></emphasis></td><td valign="top" align="left">Number of tasks executed before their deadlines (<emphasis>top</emphasis>), the number of rejected tasks (<emphasis>centre</emphasis>) and number of the exact schedulability test executions (<emphasis>bottom</emphasis>) in baseline open-loop and proposed closed-loop ET systems with different number of processing cores for the random workloads simulation scenario</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_7">Figure 4.7</link></emphasis></td><td valign="top" align="left">Dynamic slack (<emphasis>top</emphasis>), setpoint (<emphasis>centre</emphasis>) and controller output (<emphasis>bottom</emphasis>) during the simulation for the periodic task workload simulation scenario executed by a 3 core system</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_8">Figure 4.8</link></emphasis></td><td valign="top" align="left">Dynamic slack (<emphasis>top</emphasis>), setpoint (<emphasis>centre</emphasis>) and controller output (<emphasis>bottom</emphasis>) during the simulation for the selected light workload simulation scenario executed by a 3 core system</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_9">Figure 4.9</link></emphasis></td><td valign="top" align="left">Core utilisation during the simulation for the periodic (<emphasis>top</emphasis>) and light (<emphasis>bottom</emphasis>) workload simulation scenario with 3 core system</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig4_10">Figure 4.10</link></emphasis></td><td valign="top" align="left">Number of executed jobs (<emphasis>top</emphasis>) and number of schedulability test executions (<emphasis>bottom</emphasis>) for systems configured in four different ways for the industrial workloads simulation scenario</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_1">Figure 5.1</link></emphasis></td><td valign="top" align="left">Flow graph of the DemoCar example; the runnables belonging to the same task are highlighted with the same colour, labels are not highlighted. Some flows are drawn in different colours for readability</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_2">Figure 5.2</link></emphasis></td><td valign="top" align="left">Finite State Machine describing mode changes in DemoCar use case: before (<emphasis>upper part</emphasis>) and after (<emphasis>lower part</emphasis>) the clustering step</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_3">Figure 5.3</link></emphasis></td><td valign="top" align="left">An example many-core system platform</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_4">Figure 5.4</link></emphasis></td><td valign="top" align="left">Steps of dynamic resource allocation method benefiting from modal nature of applications</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_5">Figure 5.5</link></emphasis></td><td valign="top" align="left">Spanning tree construction for DemoCar</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_6">Figure 5.6</link></emphasis></td><td valign="top" align="left">Example of two different mappings (<emphasis>m</emphasis><sub>&#x03B1;</sub>,<emphasis> m</emphasis><sub>&#x03B2;</sub>) of runnables<emphasis> &#x03C4;</emphasis><sub>i</sub>,<emphasis> &#x03C4;</emphasis><sub>j</sub>,<emphasis> &#x03C4;</emphasis><sub>k</sub> into cores<emphasis> &#x03C0;</emphasis><sub>a</sub> and<emphasis> &#x03C0;</emphasis><sub>b</sub></td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig5_7">Figure 5.7</link></emphasis></td><td valign="top" align="left">Tasks&#x2019; stages in DemoCar: green &#x2013; runnable execution, red &#x2013; write to labels; release times and deadlines are provided in ms</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_1">Figure 6.1</link></emphasis></td><td valign="top" align="left">System overview diagram</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_2">Figure 6.2</link></emphasis></td><td valign="top" align="left">PS pheromone propagation</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_3">Figure 6.3</link></emphasis></td><td valign="top" align="left">Sequence diagram of PSRM algorithm related events. Time triggered (periodic):<emphasis> PSDifferentiation</emphasis>, <emphasis>PSDecay</emphasis> and<emphasis> Remapping</emphasis> cycles; Event triggered: <emphasis>PSPropagation</emphasis></td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_4">Figure 6.4</link></emphasis></td><td valign="top" align="left">Task remapping example. (Q = queen nodes; D = Dispatcher; [<emphasis>&#x03C4;</emphasis><sub>1</sub><emphasis>,&#x03C4;</emphasis><sub>2</sub>] are late tasks; Blue lines represent communication</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_5">Figure 6.5</link></emphasis></td><td valign="top" align="left">Comparison of CCPRM<sub>V1</sub> (original) and CCPRM<sub>V2</sub> (improved). (a) Cumulative job lateness improvement. (b) Communication overhead</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_6">Figure 6.6</link></emphasis></td><td valign="top" align="left">Distribution of cumulative job lateness improvement after applying remapping</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_7">Figure 6.7</link></emphasis></td><td valign="top" align="left">Comparison of fully schedulable video streams for each remapping technique</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_8">Figure 6.8</link></emphasis></td><td valign="top" align="left">Communication overhead of the remapping approaches</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig6_9">Figure 6.9</link></emphasis></td><td valign="top" align="left">Comparison of PE utilisation for all remapping techniques. (a) Distribution of PE utilisation across a10 &#x00D7; 10 NoC. (b) Histogram of PE busy time (normalised; 20 bins)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_1">Figure 7.1</link></emphasis></td><td valign="top" align="left">System model adopted in this chapter. A cloud data center containing different nodes (servers) with dedicated cores (PEs) to execute jobs submitted by multiple users</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_2">Figure 7.2</link></emphasis></td><td valign="top" align="left">An example job model and its value curve</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_3">Figure 7.3</link></emphasis></td><td valign="top" align="left">Profiling and non-profiling based approaches</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_4">Figure 7.4</link></emphasis></td><td valign="top" align="left">Voltage/frequency identification by FCPS and FTPS</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_5">Figure 7.5</link></emphasis></td><td valign="top" align="left">Value and energy at different arrival rates</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_6">Figure 7.6</link></emphasis></td><td valign="top" align="left">Value and energy with varying number of nodes</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="fig7_7">Figure 7.7</link></emphasis></td><td valign="top" align="left">Value and energy with varying number of cores at each node</td></tr>
</tbody>
</table>
</table-wrap>
</preface>
<preface class="preface" id="preface05">
<title>List of Tables</title>
<table-wrap position="float">
<table cellspacing="5" cellpadding="5" frame="none" rules="none">
<tbody>
<tr><td valign="top" width="15%"><emphasis role="strong"><link linkend="tbl3_1">Table 3.1</link></emphasis></td><td valign="top" align="left">Number of rejected tasks, tasks executed before and after their deadlines in various controlling environment configurations for a periodic task workload simulation scenario (3 clusters, 3 cores in each): configuration parameters (<emphasis>above</emphasis>) and obtained results (<emphasis>below</emphasis>)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl3_2">Table 3.2</link></emphasis></td><td valign="top" align="left">Total number of rejected tasks, tasks executed before and after their deadlines in various controlling environment configurations for 30 random bursty task workload simulation scenarios (3 clusters, 3 cores in each): configuration parameters (<emphasis>above</emphasis>) and obtained results (<emphasis>below</emphasis>)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl3_3">Table 3.3</link></emphasis></td><td valign="top" align="left">Total number of tasks executed before and after their deadlines and rejected tasks with various <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> threshold in the introductory experiment (1 processor with 3 cores)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl4_1">Table 4.1</link></emphasis></td><td valign="top" align="left">Average<emphasis> Param</emphasis> values for random workloads generated with different<emphasis> range min</emphasis> and <emphasis>range max</emphasis> parameters</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl4_2">Table 4.2</link></emphasis></td><td valign="top" align="left">Four configuration possibilities with respect to controllers&#x2019; output usage (OL and CL stands for open-loop and closed-loop, respectively)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl5_1">Table 5.1</link></emphasis></td><td valign="top" align="left">Number of hyperperiods (100 ms) required for switching between states<emphasis> PowerUp</emphasis> to <emphasis>Cluster 1</emphasis> in DemoCar depending on router (<emphasis>d</emphasis><sub>R</sub>) and one link latencies (<emphasis>d</emphasis><sub>L</sub>)</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl6_1">Table 6.1</link></emphasis></td><td valign="top" align="left">PSRM algorithm parameters</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl6_2">Table 6.2</link></emphasis></td><td valign="top" align="left">PE utilisation distribution statistics. Lower variance (var.) = better workload distribution</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="tbl7_1">Table 7.1</link></emphasis></td><td valign="top" align="left">Percentage of rejected jobs at different arrival rates</td></tr>
</tbody>
</table>
</table-wrap>
</preface>
<preface class="preface" id="preface06">
<title>List of Algorithms</title>
<table-wrap position="float">
<table cellspacing="5" cellpadding="5" frame="none" rules="none">
<tbody>
<tr><td valign="top" width="15%"><emphasis role="strong"><link linkend="alg4_1">Algorithm 4.1</link></emphasis></td><td valign="top" align="left">Pseudo-code of Admission controller involving DSE algorithm</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg5_1">Algorithm 5.1</link></emphasis></td><td valign="top" align="left">Pseudo-code of no deadline violation with makespan minimisation algorithm for the initial mode mapping</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg5_2">Algorithm 5.2</link></emphasis></td><td valign="top" align="left">Pseudo-code of a migration data transfer minimisation algorithm</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg6_1">Algorithm 6.1</link></emphasis></td><td valign="top" align="left">PS Differentiation Cycle</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg6_2">Algorithm 6.2</link></emphasis></td><td valign="top" align="left">PS Propagation Cycle</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg6_3">Algorithm 6.3</link></emphasis></td><td valign="top" align="left">PS Decay Cycle</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg6_4">Algorithm 6.4</link></emphasis></td><td valign="top" align="left">PSRM Differentiation Cycle</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg6_5">Algorithm 6.5</link></emphasis></td><td valign="top" align="left">PSRM Remapping</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg7_1">Algorithm 7.1</link></emphasis></td><td valign="top" align="left">Profiling Based Resource Allocation</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg7_2">Algorithm 7.2</link></emphasis></td><td valign="top" align="left">Non-profiling Based Resource Allocation</td></tr>
<tr><td valign="top"><emphasis role="strong"><link linkend="alg7_3">Algorithm 7.3</link></emphasis></td><td valign="top" align="left">Voltage/frequency Identification</td></tr>
</tbody>
</table>
</table-wrap>
</preface>
<preface class="preface" id="preface07">
<title>List of Abbreviations</title>
<table-wrap position="float">
<table cellspacing="5" cellpadding="5" frame="none" rules="none">
<tbody>
<tr><td valign="top">ACPI</td><td valign="top">Advanced Configuration and Power Interface</td></tr>
<tr><td valign="top">ALU</td><td valign="top">Arithmetic Logic Unit</td></tr>
<tr><td valign="top">AMIGO</td><td valign="top">Approximate M-constraint Integral Gain Optimization</td></tr>
<tr><td valign="top">AT</td><td valign="top">Arrival Time</td></tr>
<tr><td valign="top">AUTOSAR</td><td valign="top">Automotive Open System Architecture</td></tr>
<tr><td valign="top">BCET</td><td valign="top">Best Case Execution Time</td></tr>
<tr><td valign="top">CL</td><td valign="top">Closed Loop</td></tr>
<tr><td valign="top">CPU</td><td valign="top">Central Processing Unit</td></tr>
<tr><td valign="top">DAG</td><td valign="top">Directed Acyclic Graph</td></tr>
<tr><td valign="top">DBC</td><td valign="top">Deadline and Budget Constraints</td></tr>
<tr><td valign="top">DSE</td><td valign="top">Design Space Exploration</td></tr>
<tr><td valign="top">DSP</td><td valign="top">Digital Signal Processing</td></tr>
<tr><td valign="top">DVFS</td><td valign="top">Dynamic Voltage and Frequency Scaling</td></tr>
<tr><td valign="top">ECG</td><td valign="top">Electrocardiogram</td></tr>
<tr><td valign="top">ECU</td><td valign="top">Electronic Control Unit</td></tr>
<tr><td valign="top">EDF</td><td valign="top">Early Deadline First</td></tr>
<tr><td valign="top">ET</td><td valign="top">Execution Time</td></tr>
<tr><td valign="top">FCPS</td><td valign="top">Fixing Cores Power States</td></tr>
<tr><td valign="top">FIFO</td><td valign="top">First In First Out</td></tr>
<tr><td valign="top">flit</td><td valign="top">Flow control digIT</td></tr>
<tr><td valign="top">FPGA</td><td valign="top">Field Programmable Gate Array</td></tr>
<tr><td valign="top">FSM</td><td valign="top">Finite State Machine</td></tr>
<tr><td valign="top">FTPS</td><td valign="top">Fixing Tasks Power States</td></tr>
<tr><td valign="top">GA</td><td valign="top">Genetic Algorithm</td></tr>
<tr><td valign="top">GoP</td><td valign="top">Group of Pictures</td></tr>
<tr><td valign="top">HLRS</td><td valign="top">High Performance Computing Center Stuttgart</td></tr>
<tr><td valign="top">HP</td><td valign="top">HPC Platform</td></tr>
<tr><td valign="top">HPC</td><td valign="top">High-Performance Computing</td></tr>
<tr><td valign="top">HRT</td><td valign="top">Hard Real-Time</td></tr>
<tr><td valign="top">IA</td><td valign="top">Interval Algebra</td></tr>
<tr><td valign="top">IQR</td><td valign="top">Inter-Quartile Range</td></tr>
<tr><td valign="top">MMKP</td><td valign="top">Multi-Choice Knapsack Problem</td></tr>
<tr><td valign="top">MPSoC</td><td valign="top">Multiprocessor System-on-Chip</td></tr>
<tr><td valign="top">NBA</td><td valign="top">Non-profiling Based Approach</td></tr>
<tr><td valign="top">NoC</td><td valign="top">Network-on-Chip</td></tr>
<tr><td valign="top">OL</td><td valign="top">Open Loop</td></tr>
<tr><td valign="top">OS</td><td valign="top">Operating System</td></tr>
<tr><td valign="top">P</td><td valign="top">Proportional</td></tr>
<tr><td valign="top">PBA</td><td valign="top">Profiling Based Approach</td></tr>
<tr><td valign="top">PE</td><td valign="top">Processing Element</td></tr>
<tr><td valign="top">PG</td><td valign="top">Platform Graph</td></tr>
<tr><td valign="top">PI</td><td valign="top">Proportional-Integral</td></tr>
<tr><td valign="top">PID</td><td valign="top">Proportional-Integral-Derivative</td></tr>
<tr><td valign="top">PID-AC</td><td valign="top">PID-based Admission Control</td></tr>
<tr><td valign="top">PMF</td><td valign="top">Probability Mass Function</td></tr>
<tr><td valign="top">PS</td><td valign="top">Pheromone Signalling</td></tr>
<tr><td valign="top">QoS</td><td valign="top">Quality of Service</td></tr>
<tr><td valign="top">RM</td><td valign="top">Resource Manager</td></tr>
<tr><td valign="top">RMA</td><td valign="top">Rotating Mapping Algorithm</td></tr>
<tr><td valign="top">RTA</td><td valign="top">Response Time Analysis</td></tr>
<tr><td valign="top">RTM</td><td valign="top">Real-Time Manager</td></tr>
<tr><td valign="top">RTS</td><td valign="top">Real-Time Scheduling</td></tr>
<tr><td valign="top">SDF</td><td valign="top">Synchronous Dataflow</td></tr>
<tr><td valign="top">SoC</td><td valign="top">System-on-Chip</td></tr>
<tr><td valign="top">ST</td><td valign="top">Spanning Tree</td></tr>
<tr><td valign="top">TG</td><td valign="top">Task Graph</td></tr>
<tr><td valign="top">TLM</td><td valign="top">Transaction-Level Modelling</td></tr>
<tr><td valign="top">ValOpt</td><td valign="top">Value Optimization</td></tr>
<tr><td valign="top">VC</td><td valign="top">Value Curve</td></tr>
<tr><td valign="top">VM</td><td valign="top">Virtual Machine</td></tr>
<tr><td valign="top">VS</td><td valign="top">Voltage Scaling</td></tr>
<tr><td valign="top">WCET</td><td valign="top">Worst Case Execution Time</td></tr>
<tr><td valign="top">WCRT</td><td valign="top">Worst Case Response Time</td></tr>
</tbody>
</table>
</table-wrap>
</preface>
<preface class="preface" id="preface06a">
<title>Contents</title>
<table-wrap position="float">
<table cellspacing="5" cellpadding="5" frame="none" rules="none">
<tbody>
<tr><td valign="top">1 Introduction</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/01_Chapter_01.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">2 Load and Resource Models</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/02_Chapter_02.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">3 Feedback-Based Admission Control Heuristics</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/03_Chapter_03.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">4 Feedback-Based Allocation and Optimisation</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/04_Chapter_04.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">5 Search-Based Heuristics for Modal Application</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/05_Chapter_05.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">6 Swarm Intelligence Algorithms for Dynamic Task</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/06_Chapter_06.pdf">Download As PDF</ulink></td></tr>
<tr><td valign="top">7 Value-Based Allocation</td><td valign="top" align="left"><ulink url="http://riverpublishers.com/dissertations_xml/9788793519077/pdf/07_Chapter_07.pdf">Download As PDF</ulink></td></tr>
</tbody>
</table>
</table-wrap>
</preface>
<chapter class="chapter" id="ch01" label="1" xreflabel="1">
<title>Introduction</title>
<para>The availability of highly parallel computing platforms based on multi and manycore processors enables a wide variety of technical solutions for systems across the embedded and high-performance computing domains. However, large scale manycore systems are notoriously hard to design and manage, and choices regarding resource allocation alone can account for wide variability in timeliness and energy dissipation, up to several orders of magnitude. For example, the allocation of many computation-centric jobs to the same processing core, or communication-intensive jobs to cores linked by a low bandwidth interconnect, can significantly impair system performance specially in applications with many dependencies between jobs.</para>
<para>Techniques to allocate computation and communication workloads onto processor platforms have been studied since the early days of computing. However, this problem has become significantly harder because of <emphasis role="strong">scale</emphasis> and <emphasis role="strong">dynamicity</emphasis>: compute platforms now integrate hundreds to thousands of processing cores, running complex and dynamic applications that make it difficult foresee the amount of load they can impose to those platforms.</para>
<para>Elementary combinatorics provides us with evidence of the problem of <emphasis role="strong">scale</emphasis>. For a simple formulation of the problem of allocating jobs to processors (one-to-one allocation), one can see that the number of allocations grows with the factorial of the number of jobs and processors. For example, a system with 4 jobs and 4 processing cores can have <emphasis>P</emphasis> (4<emphasis>,</emphasis> 4) = 24 possible allocations, but simply by doubling the number of jobs and cores the number of allocations becomes <emphasis>P</emphasis> (8<emphasis>,</emphasis> 8) = 40320 (where <emphasis>P</emphasis> (<emphasis>n, k</emphasis>) denotes the k-permutations of n). The empirical evidence points in the same direction, as it can be seen in [<link linkend="bib110">110</link>] that for realistic manycore embedded systems (40&#x2013;60 jobs, 15&#x2013;30 processing cores) a well-tuned search algorithm had to statically evaluate hundreds of thousands of distinct allocations before it finds one that meets the systems performance requirements.</para>
<para>To cope with <emphasis role="strong">dynamicity</emphasis>, a dynamic approach to resource management is the most obvious choice, aiming to dynamically learn and react to changes to the load characteristics and to the underlying compute platform. The baseline, which is a static allocation decided before deployment based on the (nearly) complete knowledge about the load and the platform, is no longer viable. For example, static resource allocation in high-performance computing (HPC) has often been referred as a significant cause of low utilization of servers, which results in cost increases on hardware and energy [<link linkend="bib17">17</link>]. Static allocation is also commonly used by aerospace and automotive industries to provide worst case performance guarantees that are required by certification authorities. However, it is well known that such an approach usually leads to under-utilised computing and communication resources at run-time [<link linkend="bib113">113</link>].</para>
<para>The problems of scale and dynamicity are also made harder with the increasing density of computing and communication resources. The definition of density used here is not necessarily spatial, but rather on connectivity (i.e., dense graph). In densely connected systems, a resource allocation algorithm may have to make decisions very often due to the system dynamics, and may have to consider dozens or hundreds of potential allocation possibilities at each decision point (i.e., which processor should execute each job, which communication links should be used when those jobs exchange data). Furthermore, such algorithms have to work in a distributed way due to the difficulty to obtain the up-to-date state of the whole system. And despite such levels of complexity, the algorithms themselves are also subject to tight constraints in performance and energy. It is then evident that optimal resource allocation algorithms cannot cope with this type of problem, and that lightweight heuristic solutions are needed.</para>
<para>This book is therefore concerned with the kinds of resource allocation heuristics that can cover different levels of dynamicity, while coping with the scale and complexity of high-density manycore platforms.</para>
<section class="lev1" id="sec1-1">
<title>1.1 Application Domains</title>
<para>The level of dynamicity of a system denotes how often it changes its characteristics. In this book, we are concerned with resource allocation, so dynamicity means how much variation can be found on the system workload (e.g., arrival patterns, computation and communication requirements, value to the end-user) and on the underlying compute platform (e.g., degradation or lost of performance due to faults, increase in capacity due to upgrades). Different application domains can be characterised by their typical levels of dynamicity.</para>
<para>For example, deeply embedded systems such as those in automotive, aerospace and medical domains have low dynamicity, and often their entire functionality and behaviour is known at design time, prior to deployment. The low dynamicity makes the performance of such systems easier to predict, and therefore guarantees regarding timeliness can be made (e.g., ECG signal of a complete cardiac cycle will be processed in less than 10 ms). Such guarantees are often enforced by means of resource reservation and isolation, which can lead to very low levels of resource utilisation: a processing core can be exclusively allocated to a given job for the sake of performance predictability, but that job only needs the core to its full capacity for a limited period of its lifetime, leaving it subutilised for the rest of the time.</para>
<para>On the other hand, HPC and cloud computing have high dynamicity due to the wide variety of workloads they have to handle. That makes it harder to make performance guarantees, because one never knows what comes next. And due to the cost of deploying and maintaining such platforms, they are often only viable if operated at saturation point, with nearly 100% utilisation, which undermines performance guarantees even further by making nearly impossible to rely on resource reservation or isolation.</para>
<para><link linkend="fig1_1">Figure 1.1</link> below shows both domains, embedded and HPC/cloud over the dimensions of dynamicity, typical resource utilisation and the ability to sustain performance guarantees. State-of-the-art resource allocation in the embedded domain is static, relying on the low dynamicity of those systems and producing allocations that can be derived at design time and used for the whole lifetime of the system, while ensuring the performance requirements are met even in worst case scenario. For HPC and cloud, the resource allocation is completely dynamic and often based on instantaneous metrics such as order of arrival of jobs and current utilisation of cores, which can certainly keep the platforms running at saturation point but cannot offer any performance guarantees.</para>
<para>Recently, the dichotomy described above became less visible. Embedded systems are becoming increasingly complex, having to cope with dynamic workloads, and using less predictable platforms (i.e., multi-level caches, speculative execution), while still having to fulfil strict performance requisites. HPC and cloud computing, in turn, critically need to address fundamental problems in energy efficiency and performance predictability, as they become more widespread and critical to our daily lives. This points to the importance of the areas in the central part of <link linkend="fig1_1">Figure 1.1</link>, which represents increasingly dynamic embedded systems and predictable HPC and cloud systems.</para>
<fig id="fig1_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 1.1</label>
<caption><title>Application domains and their characteristics with regard to dynamicity, resource utilisation and performance predictability.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig1_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>The goal of this book is to identify and present resource allocation heuristics that can be used to achieve different levels of performance guarantees, and that can cope with different levels of dynamicity of the application workload.</para>
</section>
<section class="lev1" id="sec1-2">
<title>1.2 Related Work</title>
<para>The problem of allocating tasks to platform elements is a classic problem in multiprocessor and distributed systems. Most formulations of this problem cannot be solved in polynomial time, and many of them are equivalent to well known NP problems such as graph isomorphism [<link linkend="bib18">18</link>] and the generalised assignment problem [<link linkend="bib58">58</link>].</para>
<para>This problem was first addressed from the cluster/grid point of view, but more recently the fine-grained allocation of tasks within manycore processors has also received significant attention due to its critical impact on performance and energy dissipation. In the following subsections, we consider allocation mechanisms at both grid and manycore CPU level, and review the most significant trends and achievements in terms of guaranteed performance and energy efficiency.</para>
<section class="lev2" id="sec1-2-1">
<title>1.2.1 Allocation Techniques for Guaranteed Performance</title>
<para>There are numerous multiprocessor scheduling and allocation techniques that are able to meet real-time constraints, each of them under a different set of assumptions. A very comprehensive survey is given by [<link linkend="bib41">41</link>], covering techniques that can be applied both at the grid or many-core level, but all of them assume that the platform is homogeneous and tasks are independent (i.e., do not explicitly consider communication costs). Many of them also assume that the allocation is done statically, or do not take into account the overheads of dynamically allocating and migrating tasks (i.e., context saving and transferring). In [<link linkend="bib96">96</link>], heterogeneous platforms are considered but communication costs and overheads are still not taken into account.</para>
<para>Significant research on resource reservation has been done, aiming to increase time-predictability of workflow execution over HPC platforms [<link linkend="bib90">90</link>]. Many approaches use a priori workflow profiling and use estimation of task execution times and communication volumes to plan ahead which resources will be needed when tasks become ready to execute. Just like in static allocation, resource reservation policies significantly reduce the utilisation of HPC platforms. A reduction of 20&#x2013;40% in the utilisation is not unusual [<link linkend="bib150">150</link>].</para>
<para>Allocation and scheduling heuristics based on feedback control have been used in HPC systems [44&#x2013;83], aiming to improve platform utilisation without sacrificing performance constraints. Most cases concentrate on controlling the admission and allocation of tasks over the platform based on a closed-loop approach that monitors utilisation of the platform as well as performance metrics such as task response times [<link linkend="bib54">54</link>].</para>
<para>Many cloud-based and grid-based HPC systems use allocation and scheduling heuristics that take into account not only the timing constraints of the tasks but also their value (economic or otherwise). This problem been well-studied under the model of Deadline and Budget Constraints (DBC) [<link linkend="bib27">27</link>], where each task or taskflow has a fixed deadline and a fixed budget. State-of-the-art allocation and scheduling techniques target objectives such as maximising the number of tasks completed within deadline and/or budget [<link linkend="bib139">139</link>], maximising profit for platform provider [<link linkend="bib76">76</link>] or minimising cost to users [<link linkend="bib130">130</link>] while still ensuring deadlines. Several approaches to the DBC problem use market-inspired techniques to balance the rewards between platform providers and users [<link linkend="bib154">154</link>]. A comprehensive survey given in [<link linkend="bib157">157</link>] reviews several market-based allocation techniques supporting homogeneous or heterogeneous platforms, some of them supporting applications with dependent tasks modeled as DAGs.</para>
<para>At the many-core level, there are a few allocation techniques that take into account both the computation and communication performance guarantees. Such techniques are tailored for specific platforms e.g., many-cores based on Network-on-Chip (NoC). To guarantee timeliness, all state-of-the-art approaches rely on a static allocation of tasks and communication flows. In [<link linkend="bib6">6</link>], a multi-criteria genetic algorithm is used to evolve task allocation templates over a NoC-based many-core aiming to reduce their average communication latency. The approach in [<link linkend="bib110">110</link>] also used a genetic algorithm that could find an allocation that can meet hard real-time guarantees on end-to-end latency of sporadic tasks and communication flows over many-cores that use priority-preemptive arbitration. Stuijk [<link linkend="bib136">136</link>] proposed a constructive heuristic to do static allocation of synchronous dataflow (SDF) application models [<link linkend="bib133">133</link>], which constraint all tasks to read and write the same number of data tokens every time they execute. The allocation guarantees the timeliness of the application if the platform provides fixed-latency point-to-point connection between processing units. In [<link linkend="bib161">161</link>], the same author relaxes some of the assumptions of SDF applications (i.e., allows for changes on token production and consumption rates during runtime) and proposes analytical methods to evaluate worst-case throughput and to find upper bounds for buffering for a given static allocation.</para>
</section>
<section class="lev2" id="sec1-2-2">
<title>1.2.2 Allocation Techniques for Energy-efficiency</title>
<para>Most allocation techniques addressing energy efficiency operate at the many-core processor level, mainly because of the difficulties of dealing with energy-related metrics at larger system granularities.</para>
<para>Hu et al. [<link linkend="bib60">60</link>] and Marcon et al. [<link linkend="bib88">88</link>] estimate the energy consumption according to the volume of data exchanged by different application tasks over the interconnection network. Such approaches lack in accuracy as they do not take into account runtime effects such as network congestion or time-varying workloads. Thus, research approaches on energy-aware dynamic allocation techniques have been proposed.</para>
<para>In [<link linkend="bib129">129</link>], an iterative hierarchical dynamic mapping approach aims to reduce energy consumption of the system while providing the required QoS. In such strategy, tasks are firstly grouped by assigning them to a system resource type (e.g., FPGA, DSP, ARM), according to performance constraints. Then, each task within a group is mapped, minimising the distance among them and reducing communication cost. Finally, the resulting mapping is checked, and if it does not meet the application requirements, a new iteration is required.</para>
<para>Chou and Marculescu [<link linkend="bib37">37</link>] introduce an incremental dynamic mapping process approach, where processors connected to the NoC have multiple voltage levels, while the network has its own voltage and frequency domain. A global manager (OS-controlled mechanism) is responsible for finding a contiguous area to map an application, and for defining the position of the tasks within this area, as well. According to the authors, the strategy avoids the fragmentation of the system and aims to minimize communication energy consumption, which is calculated according to Ye et al. [<link linkend="bib155">155</link>]. This work was extended in [36, 38], incorporating the user behaviour information in the mapping process. The user behaviour corresponds to the application profile data, including the application periodicity in the system and data volume transferred among tasks. For real applications considering the user behaviour information, the approach achieved around 60% energy savings compared to a random allocation scenario.</para>
<para>Holzenspies et al. [<link linkend="bib58">58</link>] investigate a run-time spatial mapping technique with real-time requirements, considering streaming applications mapped onto heterogeneous MPSoCs. In the proposed work, the application remapping is determined according to information that is collected at design time (i.e., latency/throughput), aiming to satisfy the QoS requirements, as well as to optimize the resources usage and to minimise the energy consumption. A similar approach is proposed in Schranzhofer et al. [<link linkend="bib120">120</link>], merging precomputed template mappings (defined at design time) and online decisions that define newly arriving tasks to the processors at run-time. Compared to the static-mapping approaches, obtained results reveal that it is possible to achieve an average reduction on power dissipation of 40&#x2013;45%, while keeping the introduced overhead to store the template mappings as low as 1 KB.</para>
<para>Another energy-aware approach is presented in Wilderman et al. [<link linkend="bib151">151</link>]. This approach employs a heuristic that includes a Neighborhood metric inspired by rules from Cellular Automata, which allows decreasing the communication overhead and, consequently, the energy consumption imposed by dynamic applications. Lu et al. [<link linkend="bib85">85</link>] propose a dynamic mapping algorithm, called Rotating Mapping Algorithm (RMA), which aims to reduce the overall traffic congestion (take in account the buffer space) and communication energy consumption of applications (reduction of transmission hops between tasks).</para>
<para>In turn, Mandelli et al. [<link linkend="bib87">87</link>] propose a power-aware task mapping heuristic, which is validated using a NoC-based MPSoC described at a cycle-accurate level. The mapping heuristic is performed in a given processor of the system that executes a preemptive operating system. Due to the use of a low level description, accurate performance evaluation of several heuristics (execution time, latency, energy consumption) is supported. However, the scope of the work is limited to small systems configurations due to the long simulation time. In the previous works, only one task is assigned to each processing core. A multi-task dynamic mapping approach was proposed in [<link linkend="bib128">128</link>]. Singh et al. [<link linkend="bib128">128</link>] extends the work described in [<link linkend="bib32">32</link>], which evaluates the power dissipation as the product of number of bits to be transferred and distance between source-destination pair.</para>
<para>Research in energy-efficient allocation for HPC and cloud systems is still incipient, with existing works addressing only the time and space fragmentation of resource utilisation at a very large granularity (server level), aiming to minimise energy by rearranging the load and freeing servers that are then turned off [12, 101].</para>
</section>
</section>
<section class="lev1" id="sec1-3">
<title>1.3 Challenges</title>
<para>While the approaches mentioned in the previous section have presented sophisticated resource allocation approaches that can provide performance guarantees and/or improve energy efficiency, there are still challenges that require more advanced resource allocation approaches. The following subsections briefly describe some of those challenges, which are precisely the ones addressed in this book.</para>
<section class="lev2" id="sec1-3-1">
<title>1.3.1 Load Representation</title>
<para>Load models are internal representations used by allocation algorithms to evaluate different allocation alternatives. Such models may use information that is available a priori about the load (such as job dependencies, communication volumes, worst case execution times), but can be also extended with information obtained during runtime (e.g., actual execution and communication times). In dynamic resource allocation, it is very challenging to define a load model that includes sufficient information about static and dynamic characteristics of the load, and that is lightweight enough to be used by allocation heuristics to quickly evaluate and compare alternative allocation possibilities during runtime.</para>
<para><link linkend="chapter2">Chapter 2</link> addresses this challenge and presents a load model based on an interval algebra, aiming to allow quickly compose the load of multiple computation and communication jobs (represented as series of time intervals), enabling the evaluation of the impact of resource allocation (and thus resource sharing) on system performance and timeliness.</para>
</section>
<section class="lev2" id="sec1-3-2">
<title>1.3.2 Monitoring and Feedback</title>
<para>In large-scale systems, obtaining updated information about the load during runtime is not trivial. Often, such information only makes sense when coupled with information about the underlying computation and communication platform. Furthermore, the costs of monitoring and transferring all such data to the resource allocation mechanism is already prohibitive. The major challenge in such scenarios is then to define a sufficiently meaningful set of metrics to monitor, and to design algorithms that can make meaningful resource allocation decisions based on the changes on those metrics over time.</para>
<para>Feedback control algorithms have been used for decades to make decisions based on time-series data, so in Chapters 3 and 4 we describe possible uses of such closed-loop algorithms to support resource allocation. In <link linkend="chapter3">Chapter 3</link>, we show that they can be used to increase throughput and energy-efficiency in HPC and cloud workloads. In <link linkend="chapter4">Chapter 4</link>, on the other hand, we show that it can be used to efficiently perform admission control tasks, aiming to maximise system utilisation without jeopardising predictability in performance-sensitive HPC applications.</para>
</section>
<section class="lev2" id="sec1-3-3">
<title>1.3.3 Allocation of Modal Applications</title>
<para>Allocation heuristics may have to guarantee hard real-time constraints to critical jobs. This is possible for applications that have been profiled a priori so their execution and communication patterns can be accurately represented by an accurate load model. Such applications will not be highly dynamic, and will exhibit modal behaviour, so that distinct modes of operation can be analysed at design time, so the dynamic allocation can be based on pre-defined alternatives (thus the number of allocation decisions during runtime is minimal).</para>
<para>To address such scenario, modal allocation heuristics can guarantee hard real-time constraints by allowing different different allocations for each operation mode while minimising the amount of remappings during mode transitions. <link linkend="chapter5">Chapter 5</link> describes search-based heuristics that identify allocations that are optimised for specific operation modes, but also for coping with dynamic mode changes. It uses automotive applications and Network-on-Chip platforms as case studies, and shows that it is possible to guarantee hard real-time constraints during each of the system&#x2019;s modes as well as during transitions.</para>
</section>
<section class="lev2" id="sec1-3-4">
<title>1.3.4 Distributed Allocation</title>
<para>In closed-loop systems, a centralised resource manager continuously receive feedback from the system so that it can have an up-to-date representation of its state. This usually comes with a significant communication overhead, specially in large-scale systems. Fully distributed approaches, on the other hand, offer higher scalability by relying on decision-making done by individual system components using only locally-available information. However, due to the lack of global knowledge, it is harder to achieve a reasonable level of performance predictability.</para>
<para><link linkend="chapter6">Chapter 6</link> presents a bioinspired approach based on the notion of swarm intelligence, aiming to support a fully distributed approach to load remapping. It can be used on its own or in conjunction with centralised approaches, aiming to fine-tune allocation decisions based on up-to-date local data. A case study based on multi-stream video processing over Network-on-Chip platforms shows the strengths and weaknesses of such approach.</para>
</section>
<section class="lev2" id="sec1-3-5">
<title>1.3.5 Value-based Allocation</title>
<para>Many of the quality metrics associated to resource allocation in HPC and cloud computing are platform-specific. For instance, metrics that are often used to formulate optimisation objectives (such as job execution times, communication volumes and throughput) are not comparable across different computational platforms. There are other metrics, however, that are completely independent of the computational platform and relate instead to the requirements of the end-user. One of such metrics is the value of the completion of a job. This can be seen as a simple value, perhaps associated to a particular currency. More commonly, such value will be a function of time: the result of a job is very likely to lose value over time, and can even become worthless if it takes too long to be obtained.</para>
<para><link linkend="chapter7">Chapter 7</link> addresses resource allocation heuristics that are designed to optimise such time-varying notion of value. It presents approaches that can be configured to rely more or less on load models obtained in advance, and shows how much can be gained in value if these models are available.</para>
</section>
</section>
</chapter>
<chapter class="chapter" id="ch02" label="2" xreflabel="2">
<title>Load and Resource Models</title>
<para>The efficient allocation of computational resources requires some understanding of the resources themselves and their availability, as well as the load that must be allocated to them. Possibly under different names, the concept of resource and load modelling is commonly used in embedded, high-performance and cloud computing. For example, workflow models in HPC and task graphs in embedded computing are common ways to represent application load, while platform and resource models are used to represent the processing, networking and storage capabilities of the computer systems that run those applications.</para>
<para>With the help of meaningful resource and load models, it is possible to evaluate the impact of different resource allocation techniques on the efficiency of resource usage and on application performance requirements. The more accurate the models, the better they can predict the performance of a computer system under a given load. On the other hand, dynamic and complex systems are harder to model accurately, so there is clearly a trade-off here.</para>
<para>In real-time embedded computing, for example, it is common practice to constrain the execution of software to sporadic and bounded time intervals, and to disable advanced features of microprocessors such as out-of-order execution and caching, aiming to simplify the system&#x2019;s behaviour and enable the creation of accurate load and resource models. At that level of accuracy, system designers can use such models to evaluate different resource allocation alternatives and identify the ones under which the system will never violate any of its performance guarantees, not even in a worst-case scenario.</para>
<para>Such practice, however, requires a complete knowledge of the system resources as well as the load to be allocated to them. In many embedded systems, and in the large majority of high-performance and cloud computing systems, that is not the case. Therefore, recent modeling approaches have ways to represent load and resources under different levels of uncertainty. Stochastic models of the arrival and execution times of application-specific load or of the availability of computational resources, for example, are now commonly used to characterise average-case system performance.</para>
<section class="lev1" id="sec2-1">
<title>2.1 Related Work</title>
<para>In real-time systems, load models are often variations of the sporadic task model [<link linkend="bib42">42</link>] or the time-triggered model [<link linkend="bib71">71</link>], focusing explicitly on timing and on the repetitive nature of tasks (e.g., data from a sensor must be processed every 2 ms; a new gene sequencing job will be launched at least every millisecond) rather than the functional dependencies between them.</para>
<para>Dataflow application models are usually untimed, and different tasks are synchronised by the data flowing through the system. Dataflows are usually modelled through graphs that represent the functional dependencies between tasks and some information about the nature of the data transfer. Many different dataflow models exist [<link linkend="bib134">134</link>], with different types of constraints on the execution of tasks and communication aiming to allow different types of analysis (e.g., statically schedulable, time predictable, bounded communication buffering). Many HPC workflows are also modelled as dependency graphs, often as directed acyclic graphs (DAGs) [<link linkend="bib144">144</link>]. Such graphs can be annotated with estimations of execution time and communication volumes, which can be used to optimise resource allocation or implement resource reservation mechanisms [<link linkend="bib90">90</link>]. Similarly, estimations of inter-arrival times, execution times and communication volumes can be modelled stochastically, allowing for a more general understanding of the characteristics of a given workload [<link linkend="bib51">51</link>]. That approach can also be used to support the generation of synthetic application models that follow the specific characteristics of a realistic scenario.</para>
<para>Advanced workflow management systems augment HPC and scientific computing workflow models with execution semantics [<link linkend="bib86">86</link>], allowing such workflows to be analysed in similar ways as in time-triggered and dataflow models mentioned above. Finer granularity models are also used in HPC [10, 111], where application load is represented as a series of computation and communication bursts (often obtained from execution traces), but such models are too complex to be analysed and therefore are used only to drive abstract simulation.</para>
<para>A number of application modelling approaches try to capture characteristics that are critical to specific domains. Within the automotive domain, a component-based software specification standard is established, called AUTOSAR (more in www.autosar.org). Within this standard, software components covering runnable entities can be defined by specifying interfaces, execution rates and timing constraints. However, AUTOSAR takes a conservative stand and does not allow the dynamic allocation of runnable entities to different computational units.</para>
<para>Advanced approaches in application modelling supports the creation of hybrid models, i.e., models created using different underlying rules. Ptolemy [<link linkend="bib47">47</link>] is a modelling and simulation framework supporting hybrid application modelling for embedded systems using actor-orientation (a flexible model for representing concurrent behaviour). It supports different types of time-triggered and dataflow modelling approaches, among others, and is amenable to extensions to specific domains.</para>
</section>
<section class="lev1" id="sec2-2">
<title>2.2 Requirements</title>
<para>Within the scope of this book, we use a model of load and resources that can cater to both worst-case and average-case system performance. It supports complete and accurate description of a system&#x2019;s load and resources, but is also able to accommodate different levels of uncertainty by allowing stochastic descriptions of load.</para>
<para>We therefore define a load model using the notion of jobs, which should represent the different parts of an application and, more specifically, the load each of those parts imposes on platform resources. This is a general-purpose model, aiming to have constructs that are flexible enough to represent multiple types of application components. For example, a job could represent the execution of a software task over a CPU, the transmission of a stream of data over a network, or the dynamic reconfiguration of an FPGA device.</para>
<para>In order to model different types of applications, from embedded to HPC systems, such load models must be powerful enough to cover characteristics, e.g., functional properties, that are commonly found in such systems, as well as non-functional properties that can be used to evaluate the impact of different allocation mechanisms. In the subsections below, we present the requirements for such load modelling approach along four distinct categories: structure, temporal behaviour, resource constraints and load characterisation.</para>
<section class="lev2" id="sec2-2-1">
<title>2.2.1 Requirements on Modelling Load Structure</title>
<para>Load models should be able to support multiple levels of abstraction, exposing more or less details of the application architecture according to the level of accuracy that is needed when evaluating the impact of a particular resource allocation mechanism. For instance, it may be useful to assume that all application jobs are completely independent, abstracting away their inter-communication, if the overheads due to data exchange are negligible. Therefore, the application structure denotes how an application can be broken in multiple jobs and how these jobs relate to each other.</para>
<para>Regarding the application structure, we list requirements for a load modelling approach, so that the model is powerful enough to represent the most common types of applications.</para>
<section class="lev3" id="sec2-2-1-1">
<title>2.2.1.1 Singleton</title>
<para>Ability to model applications that are composed of a single job.</para>
</section>
<section class="lev3" id="sec2-2-1-2">
<title>2.2.1.2 Independent jobs</title>
<para>Ability to model applications that are composed of an arbitrary number of jobs that do not depend on or communicate with other jobs. It is assumed that jobs constantly have access to all information they need.</para>
</section>
<section class="lev3" id="sec2-2-1-3">
<title>2.2.1.3 Single-dependency jobs</title>
<para>Ability to model applications that are composed of an arbitrary number of jobs that can depend on one and only one other job. Therefore, the application model must explicitly have the notion of dependencies between jobs.</para>
</section>
<section class="lev3" id="sec2-2-1-4">
<title>2.2.1.4 Communicating jobs</title>
<para>Ability to model applications that are composed of an arbitrary number of job pairs. Intuitively, each pair includes a computing job and a communication job, but the strict definition of a communicating job should be a pair of dependent jobs that cannot be allocated to the same resource type (see requirements on resourcing in Subsection 3.3). This enforces the notion that, in this kind of application, communication can only be performed once the respective computation has completed.</para>
</section>
<section class="lev3" id="sec2-2-1-5">
<title>2.2.1.5 Multi-dependency jobs</title>
<para>Ability to model applications that are composed of an arbitrary number of computation jobs, each of them depending on an arbitrary number of communication jobs, and also initiating an arbitrary number of communication jobs. The structure of this type of model constrains the application in such a way that the communication jobs initiated by a given computation job must not depend on computation jobs that depend directly or indirectly on their initiator (no cyclic dependencies).</para>
</section>
</section>
<section class="lev2" id="sec2-2-2">
<title>2.2.2 Requirements on Modelling Load Temporal Behaviour</title>
<para>The temporal behaviour of the load defines the release of application jobs, i.e., when a job can actually be executed over a resource. Behaviours can be generally classified in time-driven (requirements 2.2.2.1, 2.2.2.2 and 2.2.2.3 below) or event-driven (remaining requirements).</para>
<para>Regarding application temporal behaviour, we list the following requirements for a load modelling approach, so that it is powerful enough to represent the following types of application jobs.</para>
<section class="lev3" id="sec2-2-2-1">
<title>2.2.2.1 Single appearance</title>
<para>Ability to model an application job that is not part of a series, and is released at a specific point in time.</para>
</section>
<section class="lev3" id="sec2-2-2-2">
<title>2.2.2.2 Strictly periodic</title>
<para>Ability to model an application job that is part of a series of jobs with release times separated by a constant time interval. If the release time of a job and its order within the series is known, the release time of all other jobs can be derived from it.</para>
</section>
<section class="lev3" id="sec2-2-2-3">
<title>2.2.2.3 Sporadic</title>
<para>An application job that is part of a series of jobs with release times separated by a time interval that has a known lower bound. For every release of a job, it is therefore known that the release of the subsequent job of the series will not happen before that lower bound.</para>
</section>
<section class="lev3" id="sec2-2-2-4">
<title>2.2.2.4 Aperiodic</title>
<para>An application job that can be released at any arbitrary time. It can be used to model event-driven systems where no assumptions can be made about the event sources. If an assumption can be made about the minimum time interval between successive events, such job series can be conservatively (but perhaps not accurately) modelled as sporadic jobs.</para>
</section>
<section class="lev3" id="sec2-2-2-5">
<title>2.2.2.5 Fully dependent</title>
<para>An application job that is released immediately after the completion of all jobs that it depends on.</para>
</section>
<section class="lev3" id="sec2-2-2-6">
<title>2.2.2.6 N out of M dependent</title>
<para>An application job that is released immediately after the completion of any N jobs out of all M jobs that it depends on, (<emphasis>M &#x003E; N</emphasis>).</para>
</section>
</section>
<section class="lev2" id="sec2-2-3">
<title>2.2.3 Requirements on Modelling Load Resourcing Constraints</title>
<para>The resourcing of applications defines which kind of resources a given job requires for its execution. This requires a taxonomy of resources over different types. The load model addressed here makes no assumption about such taxonomy, and it may work under different typing systems (e.g., flat type hierarchy, single-parent type hierarchy, multiple-inheritance type systems), as different resource allocation mechanisms might benefit from them. Regarding this classification, we list the following requirements for a load modelling approach, so that it is powerful enough to represent the following types of application jobs.</para>
<section class="lev3" id="sec2-2-3-1">
<title>2.2.3.1 Untyped job</title>
<para>Ability to model an application job that can be executed on any type of resource.</para>
</section>
<section class="lev3" id="sec2-2-3-2">
<title>2.2.3.2 Single-typed job</title>
<para>An application job that must be executed over a specific type of resource.</para>
</section>
<section class="lev3" id="sec2-2-3-3">
<title>2.2.3.3 Multi-typed job</title>
<para>An application job that can be executed over multiple types of resource.</para>
</section>
</section>
<section class="lev2" id="sec2-2-4">
<title>2.2.4 Requirements on Modelling Load Characterisation</title>
<para>The characterisation of the application load defines how long each of its jobs uses the resources they were allocated. Regarding this classification, we list the following requirements for a load modelling approach, so that it is powerful enough to represent the following types of application jobs.</para>
<section class="lev3" id="sec2-2-4-1">
<title>2.2.4.1 Fixed load</title>
<para>An application job that always occupies a resource for a constant amount of time, regardless of the resource. The load of such a job can be characterised by a scalar.</para>
</section>
<section class="lev3" id="sec2-2-4-2">
<title>2.2.4.2 Probabilistic load</title>
<para>An application job that occupies a resource for a probabilistic amount of time, regardless of the resource. The load of such a job is a random variable, and can be characterised by a histogram or a probability density function.</para>
</section>
<section class="lev3" id="sec2-2-4-3">
<title>2.2.4.3 Typed fixed load</title>
<para>A multi-typed application job that occupies resources of different types by a potentially different, yet constant amount of time. The load of such a job can be characterised by a vector of scalars, and the length of the vector is equal to the number of types of resources that the job can occupy.</para>
</section>
<section class="lev3" id="sec2-2-4-4">
<title>2.2.4.4 Typed probabilistic load</title>
<para>A multi-typed application job that occupies resources of different types with a potentially distinct stochastic behaviour on each of them. The load of such a job can be characterised by a vector of probability density functions or histograms, and the length of the vector is equal to the number of types of resources that the job can occupy.</para>
</section>
</section>
</section>
<section class="lev1" id="sec2-3">
<title>2.3 An Interval Algebra for Load and Resource Modelling</title>
<para>Within this book, we will rely on a novel approach to load and resource modelling based on an interval algebra (IA). It will be used throughout the book to ease our understanding of the impact of different resource allocation mechanisms. But more importantly, it can be used by the resource allocation mechanisms themselves as an internal representation of the resources and the load that they are supposed to manage.</para>
<para>Our IA represents non-functional characteristics of application load using the mathematical concept of intervals. It can be used to analytically derive the impact of using different resource allocation policies on the original application characteristics. The main concerns of this book are performance and time predictability, so most of our examples focus on the representation of time intervals, but the interval algebra can naturally be extended to support other non-functional properties such as energy dissipation.</para>
<para>In a simplistic example, we can consider an application with three jobs A, B and C, and a homogeneous platform composed of two processors with first-come-first-serve scheduling. Each of the jobs can be represented by an interval that denotes the time they need to run: <emphasis>A</emphasis> = [0<emphasis>,</emphasis> 30[, <emphasis>B</emphasis> = [0<emphasis>,</emphasis> 45[, <emphasis>C</emphasis> = [0<emphasis>,</emphasis> 20[ (assuming in this example that they are all independent and ready to run at time = 0). By using simple interval algebra operations, a resource allocation heuristic can estimate the response time R of the three tasks under different allocation schemes (e.g., <emphasis>R<subscript>A</subscript></emphasis> = 30, <emphasis>R<subscript>B</subscript></emphasis> = 45 and <emphasis>R<subscript>C</subscript></emphasis> = 50 if A and C are allocated, in that order, to one of the processors and B is allocated to the other), and thus can dynamically decide whether it is likely to meet the applications constraints when using a given allocation.</para>
<para>While trivial, such example can be made arbitrarily complex by allowing different resource scheduling disciplines, a larger number of tasks and processors. For the interval algebra, however, the analysis of the response times under a specific allocation would still involve the application of the same interval manipulation rules.</para>
<para>The advantages of such an approach are numerous, including the following.</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para>It enables dynamic allocation mechanisms to have an appropriate level of confidence on whether the chosen allocation meets the applications&#x2019; timing constraints.</para></listitem>
<listitem><para>The approach can be used as a fitness function of search-based allocation heuristics, if the algebraic operations are sufficiently lightweight as they have to be applied over a potentially large search space (some examples of integrating IA to genetic algorithms are provided in <link linkend="chapter5">Chapter 5</link>).</para></listitem>
<listitem><para>The solution of algebraic operations can be found in multiple ways, with different levels of performance. Therefore, resource allocation heuristics can be improved simply by optimising the solution of the employed algebraic operations.</para></listitem>
<listitem><para>If absolute predictability is not required (i.e., in soft real-time and best-effort applications), algebraic operations can be solved faster by applying approximations that sacrifice the accuracy of the final result. This enables allocation mechanisms that can be applied to systems with different levels of strictness of their timing requirements.</para></listitem></itemizedlist><para>Let us now introduce the main principles behind this interval algebra. Our goal in this book is not to be overly formal, so we will favour intuitive descriptions over mathematical formalism whenever possible (i.e., without sacrificing precision). In general terms, an algebra is a definition of symbols and the rules for manipulating those symbols. Our interval algebra, therefore, establishes rules for the manipulation of intervals. It defines different types of intervals, which represent the amount of time a particular piece of application load requires from a notional resource. For example, a single job can be represented by a time interval using the notation below:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-1.jpg" mime-subtype="jpeg"/></para>
<para>where the first element of the tuple is a unique job identifier, the second is a non-negative real number representing the release time of the job and the third is a positive real number representing the job&#x2019;s load, i.e., the actual length of the time interval. In the example above, job <emphasis>A</emphasis> is released at time 0 and requires 40 time units of a resource. The same concept can also be represented using the mathematical notation for a left-closed right-open bounded interval [0<emphasis>,</emphasis> 40[.</para>
<para>Following the definition above, our IA must also define rules for manipulations of such intervals: what happens when an interval is allocated to a specific type of resource, what if two intervals are allocated to the same resource, etc. Widely used algebras define a small number of basic operations (e.g., addition, multiplication) and then define more complex operations as composites of those basic operations (e.g., matrix multiplication). Our IA defines two basic algebraic operations: <emphasis>time displacement</emphasis> and <emphasis>partition</emphasis>. Time displacement changes the endpoints of an interval by an arbitrary value <emphasis>t</emphasis>, and denotes that the job has to wait for its allocated resource (i.e., its starting and ending times were moved <emphasis>t</emphasis> time units to the future). Partition simply breaks one interval in two, and denotes that a job was preempted from a resource (and the second interval produced by the partition is likely to be time-displaced). All other interval-algebraic operations of IA, which can represent an arbitrarily large set of allocation and scheduling mechanisms, can be expressed as compositions of these two. By applying these operations, it is possible to investigate the impact of different resource allocation and scheduling mechanisms on the endpoints of the intervals, which in turn denote the completion times of each application component.</para>
<para>In the following subsections, we show how our IA addresses the requirements described in Section 2.2.</para>
<section class="lev2" id="sec2-3-1">
<title>2.3.1 Modelling Load Structure</title>
<para>The interval-based representation of a job presented above is sufficient to express a singleton. By using a set of such intervals, independent jobs can be also represented. To denote a dependency between two tasks <emphasis>A</emphasis> and <emphasis>B</emphasis>, the notation can be extended to include a job identifier instead of the release time of a job:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-2.jpg" mime-subtype="jpeg"/></para>
<para>This notation is capable of denoting single dependency jobs, and conveys that interval <emphasis>B</emphasis>&#x2019;s start-point depends on interval <emphasis>A</emphasis>. Multiple dependencies can also be specified as a dependency set, and thus multi-dependency jobs can be covered:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-3.jpg" mime-subtype="jpeg"/></para>
<para>This notation assumes that whenever an interval has dependencies, its start-point lies exactly at the highest endpoint among all the intervals it depends on. In this example, assuming that jobs <emphasis>A</emphasis> and <emphasis>B</emphasis> are defined as in examples (2.1) and (2.2), this leads to: <emphasis>A</emphasis> = [0<emphasis>,</emphasis> 40)<emphasis>,B</emphasis> = [40<emphasis>,</emphasis> 90)<emphasis>,C</emphasis> = [90<emphasis>,</emphasis> 350).</para>
</section>
<section class="lev2" id="sec2-3-2">
<title>2.3.2 Modelling Load Temporal Behaviour</title>
<para>The intervals described in the previous subsection are single-appearance and have a fixed release time, therefore express singleton jobs. A strictly periodic series of jobs can be characterised by its release time, the period after which a new job is released, and the time interval each job requires from a notional resource. We denote such job series with the notation exemplified below, which is exactly the same as the notation of a singleton task followed by the period:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-4.jpg" mime-subtype="jpeg"/></para>
<para>Mathematically, it represents an infinite series of intervals, such as: <emphasis>D</emphasis> = [0<emphasis>,</emphasis> 40)<emphasis>,</emphasis> [100<emphasis>,</emphasis> 140)<emphasis>,</emphasis> [200<emphasis>,</emphasis> 240)<emphasis>,...</emphasis>. This extension is expressive enough to represent strictly periodic tasks.</para>
<para>The release time of sporadic tasks is not deterministic but has well defined bounds. In case of aperiodic tasks, those bounds do not exist. To model those cases, IA represents release times with <emphasis>aleatory variables</emphasis>. Those variables are associated with probability distributions that can constrain assumed values. We will cover that approach in Section 2.3.5 when we discuss intervals with stochastic representations of time.</para>
</section>
<section class="lev2" id="sec2-3-3">
<title>2.3.3 Modelling Load Resourcing Constraints</title>
<para>IA represents a resource as the dimension over which jobs are operated upon. Jobs, each represented by its respective interval, are allocated onto a resource; algebraic operations determine how the resource is shared between all of them, and how the resource sharing affects their timings. We denote a resource with the notation exemplified below:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-5.jpg" mime-subtype="jpeg"/></para>
<para>where the algebraic operation +<emphasis>Z<subscript>1</subscript></emphasis> is applied to the set of intervals surrounded by brackets (only <emphasis>A</emphasis> in the example above). The example below shows the same resource, but this time with two distinct jobs mapped to it:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-6.jpg" mime-subtype="jpeg"/></para>
<para>In this example, we introduce two different ways to evaluate the operator +<emphasis>Z</emphasis><subscript>1</subscript> (which we can intuitively understand as a resource serving jobs under a FIFO schedule). The first evaluation of the operator preserves the identities of the mapped jobs, and it indicates the completion times of each one of them after the symbol &#x201C;&#x0026;&#x201D;. We will refer to this type of evaluation as <emphasis>information-preserving</emphasis> (or simply <emphasis>preserving</emphasis>). The second way to evaluate the operator is equivalent to the first, but it does not preserve any information about the individual operands. It simply determines the busy period(s) of the resource with one or more intervals. We refer to this type of evaluation as <emphasis>information-collapsing</emphasis> (or simply <emphasis>collapsing</emphasis>).</para>
<para>Comparing with elementary algebra, the two evaluations of the operator are akin to solving an expression like (3+5)+(1+2) using an intermediate step 8+3 before arriving to the final result 11. In both algebras, there is an infinite set of possible operands that could lead to a particular result, and there is no information in the final result that could allow the backtracking of the initial operands.</para>
<para>A slightly different example is shown below, using the same jobs but this time mapped onto resource +<emphasis>Z</emphasis><subscript>2</subscript> that uses a time-division multiplexing (TDM) scheduler with a quantum of 8 time units:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-7.jpg" mime-subtype="jpeg"/></para>
<para>It is worth noticing that only the intermediate expression (i.e., after the preserving evaluation) differs, and the final result after the collapsing evaluation is the same. This is always the case if the operand denotes a work-preserving scheduler (i.e., a resource is never idle if there are jobs ready to be served).</para>
<para>The two following examples show jobs allocated to a resource that is shared under a priority-preemptive scheduler, assigning priorities in the same order the jobs are passed to the operator (higher to lower):</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-8.jpg" mime-subtype="jpeg"/></para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-9.jpg" mime-subtype="jpeg"/></para>
<para>In both cases, the algebraic operations abstracts away the specific interleaving patterns of the execution of every job. Each of the evaluation types focusses solely on, respectively, the finish times of each job or the idleness of the resource. For example, formula (2.9) represents the following: job <emphasis>G</emphasis> starts to be executed at time zero, but after 10 time units it is preempted by job <emphasis>F</emphasis> which runs to completion for 10 time units; then <emphasis>G</emphasis> resumes and runs for its remaining execution time until time equals 22 units; resource <emphasis>Z</emphasis><subscript>4</subscript> becomes idle until job <emphasis>I</emphasis> is released at 24 time units, which in turn suffers a preemption from <emphasis>H</emphasis> between times 26 and 31 units and then executes until time equals 37 units .</para>
<para>Just like single appearance jobs, periodic jobs can be allocated to resources:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-10.jpg" mime-subtype="jpeg"/></para>
<para>It is important to notice that a periodic job series always remains as a distinct interval in the result of both preserving and collapsing evaluations of an operator. This reflects the infinite nature of the series.</para>
<para>One of the crucial properties of a job is its affinity, which means that it can be served only by the designated resources. The job that can be executed on any resource available in a system is referred to as <emphasis>untyped job</emphasis>. If a job can be executed on a single type of resources only, it is a <emphasis>single-typed</emphasis> job. A <emphasis>multi-typed</emphasis> job can be executed on a few (enumerated) resource types, possibly with different execution times on each of them. In all examples so far, only untyped jobs have been used. To describe a single-typed or multi-typed job, the notation should support the definition of different types of resources and different types of resource affinity. This can be expressed as follows, where each scalar in pointy brackets denotes a different type and the absence of type constraints implies untyped jobs or resources (as in examples above):</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-11.jpg" mime-subtype="jpeg"/></para>
<para>By allowing the definition of resources types and resource requirements, it is also possible to present communicating jobs by modelling the job as two fully dependent intervals with distinct resource requirements, one for computation and one for communication (i.e., the job can only communicate over resource 2 once it has finished being computed over resource 1):</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-12.jpg" mime-subtype="jpeg"/></para>
</section>
<section class="lev2" id="sec2-3-4">
<title>2.3.4 Modelling Load Characterisation</title>
<para>The representation of load as the interval length, denoted by a positive real number (as defined in Subsection 2.3.1), is already capable of representing a fixed load.</para>
<para>To represent a typed fixed load, we allow the specification of different interval lengths for different resource types using a similar notation as the one introduced at the end of Subsection 2.3.3:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-13.jpg" mime-subtype="jpeg"/></para>
<para>To represent a probabilistic load or typed probabilistic load, we have to rely on aleatory variables to represent the load. This can be done for both typed and untyped jobs.</para>
</section>
<section class="lev2" id="sec2-3-5">
<title>2.3.5 Stochastic Time</title>
<para>In many cases, it may be desirable to represent intervals with non-deterministic temporal behaviour or load characterisation. In these cases, IAallows the use of aleatory variables, which follow a probability distribution, instead of scalars. It does not impose any limitation on the choice of probability distributions, and their parameters should be provided following a well established notation. For example, a normal distribution <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/n.jpg" mime-subtype="jpeg"/> (<emphasis>&#x03BC;, &#x03C3;</emphasis><sup>2</sup>) with parameters mean <emphasis>&#x03BC;</emphasis> = 2 and variance <emphasis>&#x03C3;</emphasis><sup>2</sup> = 1, <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/n.jpg" mime-subtype="jpeg"/> (2<emphasis>,</emphasis> 1) can be used to denote the release time of job <emphasis>P</emphasis> , and similarly <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/n.jpg" mime-subtype="jpeg"/> (40<emphasis>,</emphasis> 1) can denote its execution time:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-14.jpg" mime-subtype="jpeg"/></para>
<para>The time when job <emphasis>P</emphasis> finishes its execution is described by the convolution of two Gaussians: <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/n.jpg" mime-subtype="jpeg"/> (2<emphasis>,</emphasis> 1) &#x2217;N (40<emphasis>,</emphasis> 1).</para>
<fig id="fig2_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 2.1</label>
<caption><title>Example of a probability mass function of a discrete random variable describing a job&#x2019;s execution time.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig2_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>It is particularly convenient to represent time as a discrete random variable described by a probability mass function (PMF), i.e., a function giving the probability that a discrete random variable is equal to a provided value. All values of a PMF should be non-negative and sum up to 1. Using this function for describing a job&#x2019;s execution time, the best-case execution time (BCET) and the worst-case execution time (WCET) correspond to the first and the last probability value of the distribution, respectively. Between these two extremes, the probabilities of the remaining possible execution times are described. For example, the PMF of a job execution time whose BCET and WCET equals to 10 ms and 13 ms is shown in <link linkend="fig2_1">Figure 2.1</link>. This job can be described using IA as:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-15.jpg" mime-subtype="jpeg"/></para>
<para>To show how tasks with stochastic timing can be mapped to a resource, we use job <emphasis>T</emphasis> whose release time is described by discrete uniform distribution U{0<emphasis>,</emphasis> 1} and is executed in 40 time units, and job <emphasis>U</emphasis> depending on <emphasis>T</emphasis> executed in U{1<emphasis>,</emphasis> 4} time units by a notional resource +<emphasis>Z</emphasis><subscript>1</subscript> with FIFO scheduling. Then:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq2-16.jpg" mime-subtype="jpeg"/></para>
</section>
</section>
<section class="lev1" id="sec2-4">
<title>2.4 Summary</title>
<para>This chapter presented the requirements for workload and platform models that are suitable to support resource allocation mechanisms in embedded, high-performance and cloud computing. Such models can be used as internal representations, allowing resource allocation mechanisms to evaluate different allocation alternatives. A specific modelling approach has been introduced, based on an interval algebra, which fulfils the listed requirements and is amenable to compact and efficient implementations. A reference implementation of the presented algebra is available from the DreamCloud project website<sup>1</sup>.</para>
<fn><para><sup>1</sup>http://www.dreamcloud-project.org</para></fn>
</section>
</chapter>
<chapter class="chapter" id="ch03" label="3" xreflabel="3">
<title>Feedback-Based Admission Control Heuristics</title>
<para>Applying feedback mechanisms to monitor the capacity of computing resources and quality-of-service (QoS) levels can guarantee a bounded time response, stability, bounded overshoot even if the exact knowledge of a system workload and service capacity is not available a priori [<link linkend="bib2">2</link>]. Thus, in case of a careful fine-tuning of parameters, they can be successfully applied even to systems with real-time constraints (see the Related Work section). It was verified that this approach helps to find a trade-off between multiple objectives of a workflow management system, e.g., minimal slacks and maximum core utilisation [<link linkend="bib53">53</link>].</para>
<para>The feedback-control dynamic resource allocation heuristics impose some requirements on the target system, which should guarantee that the appropriate input data is available and that the generated output can be used to perform the proper resource allocation. Usually to perform a resource allocation decision we can rely on various metrics, provided by the monitoring infrastructure tools and services, such as utilization and the time latency between input and output timestamps [<link linkend="bib81">81</link>]. The system should also guarantee an appropriate level of responsiveness to the decisions made by the heuristics, as well as update the values of the metrics used as inputs in the algorithm frequently enough for the particular application. The platform should support scheduling on distributed-memory infrastructure resources. It is important to provide the heuristic algorithm with realistic data about system workload, service capacity, worst-case execution time and average end-to-end response time [<link linkend="bib84">84</link>].</para>
<para>The task mapping process presented in this chapter is comprised of the resource allocation and task scheduling. The technique proposed in this chapter assumes the presence of a common task queue, which is used by the global dispatcher. The resource allocation process is executed on a particular processing unit. Its role is to send the processes to be executed to other processing units, putting them into the task queue of a particular core. The process dispatching, i.e., selecting the actual process to run, is also a part of the scheduling algorithm and is carried out locally on each core. It is assumed that task scheduling is performed in a non-preemptive early deadline first (EDF) or first-in-first-out (FIFO) based manner.</para>
<para>Later in this chapter we propose an algorithm to map firm real-time tasks into multi-core systems dynamically, using dynamic voltage and frequency scaling (DVFS) to decrease energy dissipation in cores. According to simulation results, the proposed method leads to more than 55% of dynamic energy reduction.</para>
<section class="lev1" id="sec3-1">
<title>3.1 System Model and Problem Formulation</title>
<section class="lev2" id="sec3-1-1">
<title>3.1.1 Platform Model</title>
<para>The controlling process of dynamic behaviour of a target system can be performed in two ways: feed-forward and feed-back, presented in <link linkend="fig3_1">Figure 3.1</link>. Although the closed-loop scheme includes larger number of functional blocks and requires measuring output values, it requires less accurate model of the target system and is also more resistant to disturbances [<link linkend="bib7">7</link>]. A closed-loop system is characterised with a feedback loop, which carries values of <emphasis>measured output</emphasis> (<emphasis>y(t)</emphasis>, aka <emphasis>controller value</emphasis>). These values are subtracted from their desired value (<emphasis>r</emphasis>, <emphasis>reference signal</emphasis>, <emphasis>setpoint</emphasis>). The result of this operation forms <emphasis>error</emphasis> (<emphasis>e</emphasis>(<emphasis>t</emphasis>)) signal, which is used to compute <emphasis>control input</emphasis> (<emphasis>u</emphasis>(<emphasis>t</emphasis>)). This value is sent back to the target system.</para>
<para>A proportional-integral-derivative (PID) controller is particularly often used in various industrial control system, recently including computing systems [<link linkend="bib57">57</link>].</para>
<para>The PID controller in the time-domain form is described in the following way:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-1.jpg" mime-subtype="jpeg"/></para>
<fig id="fig3_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.1</label>
<caption><title>Block diagrams of control system architectures: feed-forward (<emphasis>above</emphasis>) and feedback (<emphasis>below</emphasis>).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>The determination of proportional (<emphasis>k<subscript>p</subscript></emphasis>), integral (<emphasis>k<subscript>i</subscript></emphasis>) and derivative (<emphasis>k<subscript>d</subscript></emphasis>) constant components of PID controller is known as PID controller tuning.</para>
<para>The PID controller is often presented in an equivalent form in the frequency domain, where function (3.1) of time <emphasis>t</emphasis> is presented as a function of complex frequency <emphasis>s</emphasis> using the Laplace transform, leading to</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-2.jpg" mime-subtype="jpeg"/></para>
<para>A PID controller is often described using other constant parameters: <emphasis>k</emphasis> &#x2013; so called proportional gain, <emphasis>T<subscript>i</subscript></emphasis> &#x2013; integral time constant and <emphasis>T<subscript>d</subscript></emphasis> &#x2013; derivative time constant</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-3.jpg" mime-subtype="jpeg"/></para>
<para>Since increasing the value of parameter <emphasis>k<subscript>d</subscript></emphasis> enhances noise, the derivative component is often omitted in numerous practical applications [<link linkend="bib57">57</link>]. It is also not used in the work described in this chapter despite its positive influence on stability or speed.</para>
<para>In <link linkend="fig3_8">Figure 3.8</link>, a general view of the proposed architecture is presented.</para>
</section>
<section class="lev2" id="sec3-1-2">
<title>3.1.2 Application Model</title>
<para>We consider a workflow of a particular structure. There is no dependencies between tasks and the deadline of each task computation is set as a sum of its computation time multiplied by an arbitrary value and arrival time. There is only one priority of task; tasks cannot be preempted during their execution. During simulation we measure cluster core utilisation, which is the percentage of cores in the clusters executing tasks in particular simulation time <emphasis>t</emphasis>.</para>
</section>
</section>
<section class="lev1" id="sec3-2">
<title>3.2 Distributed Feedback Control Real-Time Allocation</title>
<para>After releasing task <emphasis>t<subscript>i</subscript></emphasis>, the role of the dispatcher is to decide which of the clusters <emphasis>C<subscript>j</subscript></emphasis>, <emphasis>j</emphasis> = 1<emphasis>,...,m</emphasis>, is to execute the task. This decision can be made using various metrics, we decide to apply a choice of the cluster whose cores are currently the most idle. If more than one core satisfies the chosen condition, one of them is chosen randomly. For the comparison purpose we also allowed the dispatcher to choose the target cluster <emphasis>C<subscript>j</subscript></emphasis> in the round-robin manner. The task <emphasis>t<subscript>i</subscript></emphasis> is then placed in the <emphasis>j</emphasis>-th queue.</para>
<para>Each <emphasis>j</emphasis>-th cluster includes one admission control block, <emphasis>AC<subscript>j</subscript></emphasis>. Its role is to decide whether a task <emphasis>t<subscript>i</subscript></emphasis>, read from the <emphasis>j</emphasis>-th input queue, should be executed by the cluster. The first condition of admittance is that the deadline of <emphasis>t<subscript>i</subscript></emphasis>, <emphasis>D<subscript>i</subscript></emphasis>,is not lower than the sum of its computation time, <emphasis>C<subscript>i</subscript></emphasis> and the current simulation time <emphasis>t</emphasis>. Then the input value from the controller, <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>), is tested. If this value is positive, the task is admitted, otherwise it is rejected. Admitted tasks are placed in the internal cluster queue. This queue is planned to be rather short to minimise the delay between decision about admittance and the execution of the task, and to keep the timeliness of the lateness input.</para>
<fig id="fig3_2" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.2</label>
<caption><title>Distributed feedback control real-time allocation architecture.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_2.jpg" mime-subtype="jpeg"/>
</fig>
<para>To control the admittance in each cluster, we use discrete-time controllers in two variants. The first of them is a PI (i.e., a PID controller without the derivative component) whose controlled value is an average lateness of a (parameterisable) number of previous tasks computed by the cluster cores, where lateness is defined as the difference between a task response time and its deadline. If a lateness is negative, the task has been finished before its deadline, and positive otherwise. The current value of lateness is compared with the setpoint, <emphasis>r</emphasis>, and an error <emphasis>e<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) is computed. It is provided as an input to a controller, which computes admittance allowance value <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>). The second variant includes a P controller (i.e., a PID controller with the proportional component only) whose output value <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) depends on the difference between the current core utilisation and the setpoint. The output value of <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) is sent to <emphasis>AC<subscript>j</subscript></emphasis>, where it is used to perform a task admittance decision. In both situations, as long as value of control input <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) is positive, the task is allowed to be submitted to cores, otherwise it is rejected. The admitted tasks are placed in the queue.</para>
<para>An idle core <emphasis>Core<subscript>j,k</subscript></emphasis>, <emphasis>j</emphasis> = 1<emphasis>,...,m</emphasis>, <emphasis>k</emphasis> = 1<emphasis>,...,n</emphasis>, fetches a task <emphasis>t<subscript>i</subscript></emphasis> from the <emphasis>j</emphasis>-th core queue and then executes it in a non-preemptive manner. After execution, the lateness of the <emphasis>i</emphasis>-th task, <emphasis>L<subscript>i</subscript></emphasis> = <emphasis>D<subscript>i</subscript></emphasis> &#x2212; <emphasis>t</emphasis>, is computed. Each core also informs the observer whether it is occupied or idle.</para>
<para>The role of observer <emphasis>Monitor<subscript>j</subscript></emphasis> is to compute two metrics based on the performance of all cores in the <emphasis>j</emphasis>-th cluster. The first metric is core utilisation and the second metric is an average lateness of the previous <emphasis>q</emphasis> tasks computed by the cores in the <emphasis>j</emphasis>-th cluster. These data are provided to the <emphasis>j</emphasis>-th controller and the dispatcher.</para>
</section>
<section class="lev1" id="sec3-3">
<title>3.3 Experimental Results</title>
<section class="lev2" id="sec3-3-1">
<title>3.3.1 Controller Tuning</title>
<para>In order to check the efficiency of the proposed feedback-based admission control and real-time task allocation, we developed a simulation model using SystemC language. We firstly configured it to operate in the open-loop manner.</para>
<para>In <link linkend="fig3_3">Figure 3.3</link> we present the maximum task lateness in the open-loop system consisted of three clusters, each including three cores. In every situation, at 5,000 ns a number of tasks, ranging from 5 to 500, each requiring execution time equal to 50,000 ns, has been generated. Then we looked at the maximal task lateness, where each lateness has been normalized by dividing it with the deadline.</para>
<fig id="fig3_3" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.3</label>
<caption><title>Maximum normalised task lateness (with execution time equal to 50,000 ns) in step responses for a number of tasks (3 clusters, 3 cores in each).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_3.jpg" mime-subtype="jpeg"/>
</fig>
<para>In order to tune the controller, we analysed the step-input maximum normalised task lateness response in the open-loop system.As an input we have used a burst release of 500 tasks (with execution time equal to 50,000 ns) at 5,000 ns. The system was comprised of 3 clusters, each including 3 computing cores. The obtained result confirms the accumulating (or integrating) nature of the process, which can be described by the following model [<link linkend="bib64">64</link>]:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-4.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>&#x03C4;</emphasis> is the dead time, i.e., the delay between changing input and the observable output reaction, and <emphasis>V</emphasis> is the velocity gain, which is the slope of the asymptote of the process output.</para>
<para>In such kind of processes, to choose proper values of PI controller components, AMIGO (Approximate M-constrained Integral Gain Optimisation) tuning formulas can be applied [<link linkend="bib7">7</link>]. According to these formulas, the parameters <emphasis>k</emphasis> and <emphasis>T<subscript>i</subscript></emphasis> are equal:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-5.jpg" mime-subtype="jpeg"/></para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-6.jpg" mime-subtype="jpeg"/></para>
<para>Both these parameters can be determined using the step output illustrated in <link linkend="fig3_4">Figure 3.4</link>: <emphasis>k</emphasis> = 0<emphasis>.</emphasis>2741 and <emphasis>T<subscript>i</subscript></emphasis> = 1108.</para>
<fig id="fig3_4" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.4</label>
<caption><title>Maximum normalised task lateness step response for 500 tasks (with execution time equal to 50,000 ns) released at 5,000 ns (3 clusters, 3 cores in each).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_4.jpg" mime-subtype="jpeg"/>
</fig>
<para>The usage of the core utilisation in a cluster as a controlled value is a bit more tricky due to its non-linearity. Because of the obvious saturation at 100 per cent (see <link linkend="fig3_5">Figure 3.5</link>) in the case of step response, to compute parameters of a controller we limit the considered operating region to the proportional range before the saturation, which ranges from 1 to 4 ns. Its maximum slope tangent can be described by linear formula <emphasis>y</emphasis> = 0<emphasis>.</emphasis>33 <emphasis>x</emphasis> &#x2212; 0<emphasis>.</emphasis>33. According to classic Ziegler-Nichols method [<link linkend="bib64">64</link>], the <emphasis>k</emphasis> parameter of the P controller can be computed as</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq3-7.jpg" mime-subtype="jpeg"/></para>
<fig id="fig3_5" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.5</label>
<caption><title>Cores utilisation step response for 500 tasks (with execution time equal to 50,000 ns) released at 0 ns (1 cluster with 3 cores).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_5.jpg" mime-subtype="jpeg"/>
</fig>
<para>where <emphasis>&#x03BB;</emphasis> is the absolute value of the y-coordinate of the intersection of the max slope tangent with the OX axis. In our case <emphasis>&#x03BB;</emphasis> = 0<emphasis>.</emphasis>33 and, consequently, <emphasis>k</emphasis> = 3.</para>
</section>
<section class="lev2" id="sec3-3-2">
<title>3.3.2 Stress Tests</title>
<para>The workload used in our introductory experiment consists of 900 independent tasks, one released every 5,000 ns, whose computation time equal to 50,000 ns and deadline is set to the sum of computation time multiplied by 1.2 and the task release time. In <link linkend="tbl3_1">Table 3.1</link>, the number of rejected tasks, tasks executed before and after their deadlines in various controlling environment settings is presented.</para>
<para>The two first rows present the result obtained in the open-loop systems. The choice of the external queue has only slight influence on the number of tasks executed before their deadlines. In these situations task can be rejected by the admission control only if the task slack (computed as <emphasis>D<subscript>i</subscript></emphasis> &#x2212; <emphasis>C<subscript>i</subscript></emphasis> &#x2212; <emphasis>t</emphasis>) is negative.</para>
<para>Applying a closed-loop approach improves the system performance significantly, but the proper choice of the measured output is also essential. In case of the core utilisation not a single task finishes after its deadline, as the tasks are submitted to the queue only when there is at least one idle core, that can start executing the task instantly. The lateness is less correlated with the real temporal availability of computational power, so as many as 116 tasks have been sent to the queue despite not a single core was capable of computing the task before its deadline.</para>
<table-wrap id="tbl3_1">
<label>Table 3.1</label>
<caption><title>Number of rejected tasks, tasks executed before and after their deadlines in various controlling environment configurations for a periodic task workload simulation scenario (3 clusters, 3 cores in each): configuration parameters (<emphasis>above</emphasis>) and obtained results (<emphasis>below</emphasis>)</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl3_1.jpg" mime-subtype="jpeg"/>
</table-wrap>
<para>To asses the improvement of the core-utilisation-based allocation, we performed simulations where the tasks are allocated to clusters in a round-robin manner. In both P- and PI-based architectures we obtained worse results by 8.5 and 1.14 per cent, respectively. Importantly, the higher improvement has been observed in the architecture leading to the overall better results.</para>
<para>The clusters&#x2019; cores utilisation for this architecture during the first 500 ns is presented in <link linkend="fig3_6">Figure 3.6</link>. Except for the initialisation (and finalisation, not shown in the figure) there is no time when any of the clusters has less then 66 per cent of the core utilisation. After computing the average core utilisation during the whole simulation time we get 90.12%, 90.20%, and 90.16% for the first, second and the third core, respectively. The tasks have been sent by the dispatcher to the first cluster 296 times and to the 2nd and the 3rd core respectively 292 and 313 times, which can be viewed as a quite even distribution.</para>
<para>The control signal (generated by a controller, sent to the admission control) for the first 500 ns of the simulation is shown in <link linkend="fig3_7">Figure 3.7</link>. The positive value of this signal means that at least one core from the given cluster has finished the previous task computation and is being idle. In this situation the next task should be submitted to the cluster as soon as possible.</para>
<para>Similar results have been observed in other workloads of a periodic nature with uniform (or nearly uniform) execution time.</para>
<fig id="fig3_6" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.6</label>
<caption><title>Core utilisation measured during the first 500 ns of the simulation.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_6.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig3_7" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.7</label>
<caption><title>Control signal observed during the first 500 ns of the simulation.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_7.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec3-3-3">
<title>3.3.3 Random Workloads</title>
<para>In our next experiment, summarised in <link linkend="tbl3_2">Table 3.2</link>, we analysed 30 randomly bursty workloads, generated according to the method described in [<link linkend="bib22">22</link>], including from 827 to 962 tasks of diverse execution time, ranging from 1 to 2,67,582 ns. Three target system configurations have been checked: open-loop with EDF and closed-loop with CPU utilisation as the controller value, where the allocation is performed using the minimal core utilisation metric and in the round-robin way. Once again, the closed-loop approach leads to better results but, in comparison with the periodic-task scenario in the experiment described above, the improvement, equal to about 16%, is slightly less impressing. Similarly, the difference between allocating task under the minimal core utilisation criteria and round-robin is rather slight and equals 3 per cent. It is worth stressing, however, that the tasks in the analysed workloads are characterised with very diverse time of computations, but despite this variance they are not differentiated by our model. Consequently, one task can occupy a core for longer time, not allowing other (submitted a bit later) tasks to be executed on this core because of the lack of preemption.</para>
<table-wrap id="tbl3_2">
<label>Table 3.2</label>
<caption><title>Total number of rejected tasks, tasks executed before and after their deadlines in various controlling environment configurations for 30 random bursty task workload simulation scenarios (3 clusters, 3 cores in each): configuration parameters (<emphasis>above</emphasis>) and obtained results (<emphasis>below</emphasis>)</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl3_2.jpg" mime-subtype="jpeg"/>
</table-wrap>
</section>
</section>
<section class="lev1" id="sec3-4">
<title>3.4 Dynamic Voltage Frequency Scaling</title>
<para>Dynamic Voltage Frequency Scaling (DVFS) is a power saving technique, omnipresent in CMOS circuits, benefiting from the fact that their dynamic (or switching) power <emphasis>P</emphasis> is proportional to the the square of core supply voltage <emphasis>V,</emphasis> and its clock frequency <emphasis>f</emphasis>, i.e., <emphasis>P</emphasis> &#x221D; <emphasis>fV</emphasis> <superscript>2</superscript>. Since any reduction of core voltage requires an adequate decrease of the clock frequency, some trade-off between energy savings and computation performance is achieved. Some guidance in real-time systems stems from the fact that there is usually no additional benefits from faster task execution as long as it is before the deadline. Moreover, for typical workloads the required peak computational performance is usually much higher than the average [<link linkend="bib106">106</link>]. Thus sustaining a lower voltage/frequency for most of time and increasing it only when required by a workload growth, in a way it risks missing some deadlines, seems to be a sensible strategy. To perform a proper voltage scaling decision, it is possible to rely on various metrics, provided by the monitoring infrastructure tools and services, such as utilization and time latency between input and output timestamps [<link linkend="bib81">81</link>]. In multiprocessor domain, the cores can operate on different voltage at a given instant, so allocating a task to the most suitable core starts to be a more sophisticated task even in case of homogeneous cores, since assigning a task to a core with lower voltage can lead to missing the deadline that would be met in case of a different decision. The term voltage scheduling has been introduced to refer to scheduling policies using DVFS facility to improve energy efficiency.</para>
<para>In Multiprocessor Systems on Chips (MPSoCs) a task can be mapped to a core either statically or dynamically, just before its execution, which is particularly beneficial in case of workloads not known a priori [<link linkend="bib123">123</link>]. In DVFS-based systems, the problem of dynamic task mapping is even more difficult, since not only resource utilisation and application structure have to be analysed, but also the present voltage level of each processor needs to be considered. Modern operating systems, including both Windows and Linux (2.6 Kernels and above) support dynamic frequency scaling for systems with Intel (SpeedStep technology) and AMD (PowerNow! or Cool&#x2018;n&#x2019;Quiet technology) processors. Frequency levels in these chips are not continuously available, but a limited number of discrete voltage/frequency levels is offered. They follow the Advanced Configuration and Power Interface (ACPI) open standard, defining such processor states as C0 (operating state), C1 (halt), C2 (stop-clock), and C3 (sleep). In C states with higher numbers less energy is consumed, but returning to the normal operating state imposes more latency. In some device families additional C-states have been introduced, such as C6 in Intel Xeon when an idle core is power gated and its leakage is almost entirely reduced to zero [<link linkend="bib52">52</link>]. While core is in the C0 state, it operates with one of several power-performance states, known as P-States. In P0, a core works with the highest frequency and voltage level, and subsequent P-States offer less performance but also require less energy. The most recent ACPI specification can be found at Unified Extensible Firmware Interface Forum <footnote id="ch03fn1" label="1"><para>http://www.uefi.org</para></footnote>.</para>
<para>In operating systems, frequency scaling depends on an applied governor. In case of Linux, the <emphasis>ondemand</emphasis> governor switches frequency to the highest value instantly in case of high load, whereas the <emphasis>conservative</emphasis> governor increases frequency gradually [<link linkend="bib77">77</link>]. These policies aim to keep processor utilization close to 90%, progressively decreasing or increasing frequency using heuristics [<link linkend="bib102">102</link>]. This approach may, however, negatively impact applications with timing constraints. To overcome this limitation, a <emphasis>custom</emphasis> governor can be developed and applied. These governors can then operate on per-core and per-chip basis, taking into account utilisation of other machines in a cluster, etc. A valuable comparison between per-core and per-chip DVFS is presented in [<link linkend="bib68">68</link>], where per-core DVFS is shown to offer even more than 20% energy savings in comparison with the conventional chip-wide DVFS with off-chip regulators. However, per-core DVFS is rarely implemented and, for example, all active cores in contemporary Intel i7 processors must operate with the same frequency in the steady state, whereas AMD processors allows their cores work with different frequencies, but one voltage value, appropriate to the core with the highest frequency, is to be provided to all the cores [<link linkend="bib52">52</link>].</para>
<para>In the remainng part of this chapter, we propose a custom governor algorithm for per-chip DVFS. The algorithm performs dynamic resource allocation and assumes the presence of a common task queue, which is used by a global dispatcher. The resource allocation process is executed on a particular processing unit, whose role is to send the processes to be executed to other processing units, putting them into the task queue of that core. The task dispatching, i.e., selecting the actual task to run, is also a part of the mapping algorithm and is carried out locally on each processor. It is assumed that task scheduling is performed in a non-preemptive first-in-first-out (FIFO) based manner for simplicity, but another scheduler can be used instead.</para>
</section>
<section class="lev1" id="sec3-5">
<title>3.5 Applying Controllers to Steer DVFS</title>
<para>In <link linkend="fig3_8">Figure 3.8</link>, a general view of the proposed architecture is presented, where dashed lines are used for steering P-States. We consider workflows of a particular structure. All tasks are assumed to be firm real-time, so certain number of missing deadlines is allowed, but the task executed after its deadline is invaluable to the user. There are no dependencies between tasks and all tasks have equal priorities. Further, tasks cannot be preempted during their execution.</para>
<para>After releasing task <emphasis>T<subscript>i</subscript></emphasis>, the role of the dispatcher is to decide which of the processors <emphasis>P rocessor<subscript>j</subscript></emphasis>, <emphasis>j</emphasis> = 1<emphasis>,...,m</emphasis>, is to execute the task. This decision can be made using various metrics. We measure processor core utilisation, which is the percentage of busy cores in the processors executing tasks in particular simulation time <emphasis>t</emphasis>, and choose the processor whose cores are currently the least utilized. If more than one processor have the same lowest utilisation, one of them is chosen randomly. The task <emphasis>T<subscript>i</subscript></emphasis> is then placed in the <emphasis>j</emphasis>-th external queue.</para>
<para>To control the admittance in the <emphasis>j</emphasis>-th processor, we use a discrete-time PI controller (i.e., a discrete-time PID controller without the derivative component) whose output value <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) depends on the difference between the current core utilisation and the setpoint. The output value of <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) is sent to admission control block <emphasis>AC<subscript>j</subscript></emphasis>, where it is used to perform a task admittance decision.</para>
<fig id="fig3_8" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.8</label>
<caption><title>Distributed feedback control real-time allocation with DVFS architecture.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_8.jpg" mime-subtype="jpeg"/>
</fig>
<para>The role of block <emphasis>AC<subscript>j</subscript></emphasis> is to decide whether a task <emphasis>T<subscript>i</subscript></emphasis>, fetched from the <emphasis>j</emphasis>-th external input queue, should be executed by the processor. The first condition of admittance is that the deadline of <emphasis>T<subscript>i</subscript></emphasis>, <emphasis>D<subscript>i</subscript></emphasis>, is not lower than the sum of its worst-case computation time, <emphasis>C<subscript>i</subscript></emphasis> and the current simulation time <emphasis>t</emphasis>. Then the output controller value, <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>), is checked and it influences the decision of the task rejection or admission as described in the next paragraph. The admitted tasks are placed in the internal processor queue. This queue shall be rather short to minimise the delay between decision about admittance and the execution of the task, and to keep the timeliness of the lateness input.</para>
<para>The additional role of block <emphasis>AC<subscript>j</subscript></emphasis> is to scale the voltage of the cores. The controller output value, <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>), is tested against two threshold values +<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> and &#x2212;<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>.If <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) <emphasis>&#x003E;</emphasis> +<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>, the processing cores are more utilised than the setpoint <emphasis>r</emphasis> for relatively long period (depending on the I-Window length and <emphasis>k<subscript>i</subscript></emphasis> value) and thus increasing the frequency (and voltage) of the set of cores is desirable. On the other hand, if <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) <emphasis>&#x003C;</emphasis> &#x2212;<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>, the processing cores are too idle for relatively long period and it is recommended to decrease the frequency (and voltage) of the cores to conserve energy. It is important to select the value of <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> wisely, taking into account that <emphasis>u<subscript>j</subscript></emphasis>(<emphasis>t</emphasis>) depends on the current error value (multiplied by <emphasis>k<subscript>p</subscript></emphasis>) and on the sum of the previous errors (multiplied by <emphasis>k<subscript>i</subscript></emphasis>) and the length of I-Window used during this sum calculation. After choosing these three values, it is possible to assign an appropriate value to this threshold. Identification of these values and the threshold is performed in Section 3.3.</para>
<para>Since in any core transferring between various voltage levels is penalised both in terms of switching time and energy [<link linkend="bib52">52</link>], some mechanism preventing too frequent transitions is needed. In our case, we decided to use threshold &#x0393;, which determines the minimal time between two consecutive voltage level alterations. Each P-State change request issued earlier than &#x0393; is ignored. This value should be determined by taking into account the hardware parameters as a trade-off between the system flexibility (lower parameter value) and efficiency (higher parameter value), which is presented in Section 3.3.</para>
<para>The proposed admission control algorithm is composed in two parts, described respectively by lines 1&#x2013;28 and 29&#x2013;36 in <link linkend="fig3_9">Figure 3.9</link>, which are executed concurrently. The first part consists of the following steps.</para>
<para><emphasis>Step 1. Invocation and initialization (lines 1&#x2013;3, 27)</emphasis>: The block functionality is executed in an infinite loop (line 1), activated every time interval &#x0394;<emphasis>t</emphasis> (line 27). The current P-State is set to the lowest value (i.e., the highest performance &#x2013; line 2), and the time of the previous P-State change, <emphasis>&#x03B3;</emphasis>, is set to 0 (line 3).</para>
<para><emphasis>Step 2. Task fetching and schedulability analysis (lines 4&#x2013;5)</emphasis>: The tasks input FIFO queue is checked if empty (line 4) and a task <emphasis>T<subscript>i</subscript></emphasis> is fetched (line 5).</para>
<fig id="fig3_9" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.9</label>
<caption><title>Pseudo-code of the proposed admission controller functionality.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_9.jpg" mime-subtype="jpeg"/>
</fig>
<para><emphasis>Step 3. Task conditional rejection (lines 6&#x2013;12)</emphasis>: If the output value of controller (<emphasis>u</emphasis>) is negative and the cores operate with the highest performance</para>
<para>(P-State set to P0) or the cores operate below the highest performance and the previous change of P-State (at time <emphasis>&#x03B3;</emphasis>) was done early enough (determined by condition <emphasis>current time &#x003E; &#x03B3;</emphasis> + &#x0393;), task <emphasis>T<subscript>i</subscript></emphasis> should be rejected (line 6). Moreover, if P-State is different from P0 and there was no recent change of P-State (line 7), P-State is decreased (line 8) and variable keeping the previous P-State change time, <emphasis>&#x03B3;</emphasis>, is set accordingly (line 9). The buffer storing the previous error values of the controller, I-Window, used by the integral component of the PID controller, is cleared (line 10), since the previous errors have been obtained in a different P-State and thus should not influence future admittance decisions.</para>
<para><emphasis>Step 4. Task conditional admittance (lines 14&#x2013;25)</emphasis>: If the controller output value is below threshold &#x2212;<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>, the processor performance is not the highest possible and the previous change of P-State was done early enough (line 14), P-State is decreased (line 15) and the <emphasis>current time</emphasis> is substituted to <emphasis>&#x03B3;</emphasis> (line 16). Similarly, provided the controller output value is above threshold +<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>, the processor performance is not the lowest possible (P-State is different from <emphasis>P<subscript>max</subscript></emphasis>, the highest P-State available in the processor) and the previous change of P-State was done early enough (line 18), the processor P-State is increased (line 19) and the current time is assigned to <emphasis>&#x03B3;</emphasis> (line 20). Task <emphasis>T<subscript>i</subscript></emphasis> is sent to the FIFO queue (line 24).</para>
<para>The second part of the algorithm consists of the following steps.</para>
<para><emphasis>Step 1. Invocation (lines 29, 35)</emphasis>: The block functionality is executed in an infinite loop (line 29), activated every time interval &#x0394;<emphasis>t</emphasis> (line 35).</para>
<para><emphasis>Step 2. P-State conditional increase (lines 30&#x2013;33)</emphasis>: If no new tasks have been fetched from the task queue for time &#x0393; and the processor performance is not the lowest possible (P-State is different from <emphasis>P<subscript>max</subscript></emphasis>), the processor P-State is increased (line 31) and the current time is assigned to <emphasis>&#x03B3;</emphasis> (line 33).</para>
</section>
<section class="lev1" id="sec3-6">
<title>3.6 Experimental Results</title>
<para>In order to check the efficiency of the proposed feedback-based admission control and real-time task allocation, we developed a simulation model using SystemC language.</para>
<section class="lev2" id="sec3-6-1">
<title>3.6.1 Controller Tuning</title>
<para>Firstly, the controller constant components <emphasis>k<subscript>p</subscript></emphasis>, <emphasis>k<subscript>i</subscript></emphasis> and <emphasis>k<subscript>d</subscript></emphasis> have to be tuned by analysing the corresponding open-loop system response to a bursty workload. Then random workloads of various weight have been tested to observe the system behaviour under different conditions and to find the most beneficial operating region.</para>
<para>To tune the parameters of the controller, the task slack growth after applying a step-input in the open-loop system (i.e., without any feedback) has been analysed, as mentioned earlier in this chapter. This is a typical way in control-theory-based approaches [<link linkend="bib7">7</link>]. The workload used for this case consists of 500 independent tasks. They are split into five groups. Tasks belonging to one group are released every 5 ms each. After this bursty activity, during the following 500 ms no task is released. Then the tasks of the next group are released at the same pace. This process is repeated until all tasks from all groups are released. The computation time of each task is equal to 50 ms and its deadline is set to the sum of computation time multiplied by an arbitrary constant (equal to 1.5) and the task release time. This constant has been introduced to provide some flexibility in task scheduling; otherwise, all tasks would be required to start execution at their release time to meet the timing constraints.</para>
<para>The obtained results have confirmed the accumulating (integrating) nature of the process, and thus the accumulating process version of Approximate M-constraint Integral Gain Optimization (AMIGO) tuning formulas have been applied to choose the proper values of the PID controller components [<link linkend="bib7">7</link>]. As a reference point, we executed a simulation without DVFS on a system comprised of one processor with three cores. As many as 140 tasks have been executed before the deadline, no task missed its deadline, and 360 tasks have been rejected by the dispatcher.</para>
<para>To use the DVFS features efficiently, it is crucial to find an appropriate value of threshold <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>. It should be large enough not to switch a core voltage too frequently &#x2013; the switching should be performed not only due to the high value of <emphasis>u</emphasis>(<emphasis>t</emphasis>) generated by the proportional component, but also with the relatively large value of the integral component, meaning that the error has been large for a longer interval. Simulations results for selected values of <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/>
are presented in <link linkend="tbl3_3">Table 3.3</link>. Form this table it follows that too high values of <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> result in keeping the current frequency too long at the beginning of a busy period, decreasing the performance of the system significantly (see the number of tasks executed before the deadline for <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> &#x2208; (30<emphasis>,</emphasis> 60)). Particularly, keeping the lowest frequency too long results in executing some tasks after their deadlines. At some point (<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> = 70 in the considered case), the threshold is too high for the given idle period and it does not manage to perform any voltage scaling before the next busy period. For further experiments, based on the above observations, we have chosen <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> = 10 as a trade-off between performance and flexibility of the voltage switching.</para>
<para>In order to determine the threshold &#x0393; of the task number that has to be processed by the dispatcher between subsequent alterations of the core voltage, we performed a series of simulation, where the threshold ranged from 25 ms to 400 ms. The highest number of tasks executed before their deadlines is observed with threshold &#x0393; &#x2208; {25 ms<emphasis>,</emphasis> 50 ms<emphasis>,</emphasis> 100 ms}. The threshold set to 350 ms or above leads to the behaviour not differentiated from the simulation without DVFS. Two values &#x0393; = 50 ms and &#x0393; = 300 ms have been used in the further experiments.</para>
<table-wrap id="tbl3_3">
<label>Table 3.3</label>
<caption><title>Total number of tasks executed before and after their deadlines and rejected tasks with various <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/y.jpg" mime-subtype="jpeg"/> threshold in the introductory experiment (1 processor with 3 cores)</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl3_3.jpg" mime-subtype="jpeg"/>
</table-wrap>
<para>To estimate the energy used by a processor, ACPI data for Pentium M processor (with Intel SpeedStep Technology) has been used, but with slight modification the proposed technique can be applied to any processor with ACPI implemented <footnote id="ch03fn2" label="2"><para>For example AMD Family 16h Series Processors ACPI parameters are provided in AMD Family 16h Models 00h &#x2013; 0Fh Processor Power and Thermal Data Sheet, AMD, 2013.</para></footnote>. In Pentium M, there are six levels of allowed frequency and voltage pairs, known as P-States. In P-State P0, a core works with 1.6 GHz and 1.484 V, whereas for P5 &#x2013; 600 MHz and 0.956 V, which uses 24.5 W and 6 W, respectively.</para>
</section>
<section class="lev2" id="sec3-6-2">
<title>3.6.2 Random Workloads</title>
<para>Having selected all the required constants, the efficiency of the system has been checked against 11 sets of 10 random workloads, whose release and execution time probability distributions are based on the grid workload of an engineering design department of a large aircraft manufacturer, as described in [<link linkend="bib22">22</link>]. Each workload is comprised of 100 tasks, including a random number (between 1 and 20) of independent jobs. The execution time of every job is selected randomly between 1 and 99 ms. All jobs of a task are released at the same instant, and the release time of the next task is selected randomly between <emphasis>r<subscript>i</subscript></emphasis> + <emphasis>range_min</emphasis> &#x00B7; <emphasis>C<subscript>i</subscript></emphasis> and <emphasis>r<subscript>i</subscript></emphasis> + <emphasis>range_max</emphasis> &#x00B7; <emphasis>C<subscript>i</subscript></emphasis>, where <emphasis>C<subscript>i</subscript></emphasis> is the total worst case computation time of the current tasks <emphasis>T<subscript>i</subscript></emphasis> released at <emphasis>r<subscript>i</subscript></emphasis>, and <emphasis>range_min, range_max</emphasis> &#x2208; (0<emphasis>,</emphasis> 1), <emphasis>range_min &#x003C; range_max</emphasis>. These values are inversely proportional to the workload weight.</para>
<para>We have measured the numbers of tasks computed before their deadlines and the number of tasks rejected by the admission controller block in a 3-processor system with 3 processing cores and 2-processor system with 4 processing cores each for systems with DVFS and without DVFS (i.e., with &#x0393; = &#x221E;) and presented it in Figures 3.10 and 3.11, respectively.</para>
<para>The number of tasks admitted with &#x0393; = 300 ms is, in total, 26% higher than with &#x0393; = 50 ms. The reason for this is that in case of &#x0393; = 50 ms, P-States are changed more often and thus it is more likely to have a processor with a lower frequency and voltage level while a task is fetched, and since decrease of P-States is performed gradually (lines 8, 15, 19 and 31 in the algorithm in <link linkend="fig3_9">Figure 3.9</link>), tasks are attempted to be executed with lower processor performance. It has been observed that this strategy leads to significant (about 39%) energy reduction. It may be, however, surprising, that the number of the executed tasks is higher with DVFS when &#x0393; = 300 ms than in the system without DVFS for lighter workloads. This phenomena is innate to the proposed technique and can be explained using the pseudo-code in <link linkend="fig3_9">Figure 3.9</link>. In a system without DVFS, each processor is always in its lowest P-State, P0. The admission controller has then no flexibility in decreasing the P-State while the Controller output is negative (checked in line 6) and then to clean the I-Window in the PID controller and, finally, admit the task (line 21).</para>
<fig id="fig3_10" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.10</label>
<caption><title>Tasks executed before their deadline in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_10.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig3_11" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.11</label>
<caption><title>Tasks rejected in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_11.jpg" mime-subtype="jpeg"/>
</fig>
<para>Different size of the systems does not influence the relationship between obtained results. The number of tasks executed before deadlines for assorted weights is almost linearly dependent between the two considered architectures (Pearson Correlation Coefficient <emphasis>&#x03C1;</emphasis> = 0<emphasis>.</emphasis>96; similarly for the number of rejected tasks <emphasis>&#x03C1;</emphasis> = 0<emphasis>.</emphasis>97, and for dissipated energy <emphasis>&#x03C1;</emphasis> = 0<emphasis>.</emphasis>98).</para>
<para>The dynamic energy dissipation, normalised with respect to the highest obtained value during the experiment, is presented in <link linkend="fig3_12">Figure 3.12</link>. In general, almost 58% of the dissipated dynamic energy have been saved via the DVFS approach. For heavier loads from the random workloads, choosing a lower &#x0393;
value leads to significant energy reduction, whereas for lighter loads the result difference between the two chosen &#x0393; values is almost negligible.</para>
<para>Looking at the normalized energy dissipation per task (<link linkend="fig3_13">Figure 3.13</link>), computed for the system with three processors, it can be concluded that parameter &#x0393; = 50 ms leads to more even energy per task usage in comparison with &#x0393; = 300 ms, which is slightly more beneficial for lighter workloads only, but leads to similar energy per task value than in the system without DVFS (i.e., &#x0393; = &#x221E;) for heavier loads.</para>
<fig id="fig3_12" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.12</label>
<caption><title>Normalized dynamic energy dissipation in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue) &#x2013; three processors with three cores (<emphasis>top</emphasis>) and two processors with four cores (<emphasis>bottom</emphasis>) systems.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_12.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig3_13" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 3.13</label>
<caption><title>Normalized dynamic energy dissipation per task meeting its deadline in random workload scenarios for DVFS with &#x0393; = 50 ms (red), &#x0393; = 300 ms (green) and &#x0393; = &#x221E; (blue).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig3_13.jpg" mime-subtype="jpeg"/>
</fig>
</section>
</section>
<section class="lev1" id="sec3-7">
<title>3.7 Related Work</title>
<para>Dynamic real-time scheduling (RTS) algorithms like EDF and rate monotonic support RTS characteristics (worst-case computation time, release rate, etc.), but they remain open-loop: once the schedule is built, it stays fixed [<link linkend="bib80">80</link>]. Such algorithms perform well in meeting QoS levels in predictable systems. However, their performance degrade when dealing with unpredictable workloads which cannot be modelled accurately a priori [<link linkend="bib2">2</link>]. In unpredictable systems, sophisticated schedulers like Spring depends on worst-case parameters which can result to resource under-utilisation based on pessimistic estimation of workloads [<link linkend="bib135">135</link>].</para>
<para>It is desired to feed the system states back to the scheduler [26, 121], so it can be aware of sudden/unpredicted changes and act accordingly in order to meet the QoS levels. A system state can be defined as the system performance with respect to service capacity, QoS levels etc. Real-time systems analysis includes observing how tasks&#x2019; RTS characteristics affect (1) meeting QoS levels e.g., high processor utilisation, and (2) compute resource availability. This can help adapting towards the varying system states by enforcing scheduling decisions [<link linkend="bib26">26</link>]. This variance can be considered as system error which is the deviance from the system output and the desired one (QoS level(s)). Some related work like [26, 78] show the lack of adaptivity to varying system states in traditional RTS algorithms.</para>
<para>In the realm of control-theoretic RTS algorithms, there are adaptive approaches that are cost-effective for performance guarantees in systems with varying system states [26, 80]. For instance, Lu offers regulating the workload of a single-CPU RTS system via a PID-based admission control (PID-AC) algorithm to reduce the deadline miss ratio [<link linkend="bib80">80</link>]. His algorithm guaranteed 95% CPU utilisation and 1% deadline miss ratio in comparison to an EDF algorithm with 100% and 52% respectively. PID-AC algorithms are plausible in some RTS systems where controlling tasks release rate is difficult, instead, the scheduler rejects specific tasks to meet QoS levels.</para>
<para>Also, in [<link linkend="bib81">81</link>], Lu uses two PID controllers to meet two QoS levels; maximum CPU utilisation and minimum deadline miss ratio. The results confirm the findings of [<link linkend="bib80">80</link>] in ensuring performance guarantees as opposed to basic EDF algorithm. The motivation behind Lu&#x2019;s 2-PID algorithm was to address the stability and transient response issues with the single PID algorithm due to PID control limitations handling multiple QoS levels. Our work, in this chapter, addresses minimising dependent tasks&#x2019; latency, not deadline miss ratio, via a PID-based admission control algorithm.</para>
<para>Control-theory-based voltage level selection of unicore portable devices has been firstly proposed in [<link linkend="bib106">106</link>]. Varma et al. in [<link linkend="bib147">147</link>] choose Proportional-Integral-Derivative (PID) controllers to determine voltage of systems dealing with the workload not accurately known in advance and interpreted the meaning of the discrete PID equation terms with regards to dynamic workloads. They proposed a heuristic to predict the future system load based on the workload rate of change, leading to significant energy reduction. They also demonstrated that the design space is not particularly sensitive to changes in the PID controller parameters. However, the controller is used to predict the future workload and does not use any feedback information from the system about the processing core status.</para>
<para>In [<link linkend="bib162">162</link>], a feedback-based approach to manage dynamic slack time for conserving energy in real-time systems has been proposed. A PID controller is used to predict a real execution time of a task, usually lower than its worst case execution time (WCET). Then each execution time slot for a task is split into two parts and the first part is executed with a lower voltage assuming the execution time predicted by the controller. If the task does not finish by this time, a core is switched to its highest voltage guaranteing that the task finishes its execution before its deadline.</para>
<para>In [<link linkend="bib153">153</link>] a formal analytic approach for DVFS dedicated to multiple clock domain processors benefits from the fact that the frequency and voltage in each functional block or domain can be chosen independently. A multiple clock domain processor is modelled as a queue-domain network where queue occupancies linking two clock domains are treated as feedback signals. A clock domain frequency is adapted to any workload changes by a proportional-integral (PI) controller.</para>
<para>The queue occupancy also drives PI controllers in [<link linkend="bib31">31</link>]. In contrast to previous research, the limitation of using single-input queues only have been lessened and multiple processing stages have been allowed, but a pipelined configuration is still required. A realistic cycle-accurate, energy-aware, multiprocessor virtual platform is used for demonstrating the superiority of feedback techniques over the local DVFS policies during simulation of signal processing streaming applications with soft real-time guarantees. It is assumed that as long as the queues are not empty, a sufficient number of deadlines is met and no further analysis or simulation of deadline misses are provided.</para>
<para>From the literature survey it follows that there is no previous work on mapping the task dynamically to an MPSoC system and using DVFS together with control-theory based algorithm.</para>
</section>
<section class="lev1" id="sec3-8">
<title>3.8 Summary</title>
<para>In this chapter, we have explored the possibility of applying feedback controlled values to dynamic task allocation and admission control for high-performance computing clusters executing real-time tasks. Two real-time metrics, task lateness and core utilisation, have been applied to perform admission control, whereas the former has been also used as a metric for dynamic task allocation. Two queue types (EDF and FIFO) have been used in the open-loop system. The P and PI controllers have been tuned using classic AMIGO and Ziegler-Nichols methods.</para>
<para>We have prepared simulation models in SystemC language and performed a number of experiments. In case of uniform periodic workload the closed-loop system has executed almost 5 times more tasks before their deadline in comparison with an adequate open-loop system. The queue type and controller value have slightly influenced the outcome. The metric-based dynamic allocation, in the best configuration, has been about 8.5 per cent better than the round-robin method.</para>
<para>In the case of bursty random workloads with large computation time variance, a closed-loop-based system has been about 16% better than the corresponding open-loop approach. However, to proper asses the difference between these systems in more accurate way, the differentiate between tasks of long and short execution time should be introduced.</para>
<para>We have also explored the possibility of applying feedback control values to dynamic task allocation and admission control for multi-core processors supporting DVFS while executing firm real-time tasks. Core utilisation has been applied as a run-time metric to perform admission control and dynamic task allocation. The proposed governor algorithm has been tested with various parameter values and some guidance for tuning has been provided.</para>
<para>Even in case of relatively difficult bursty scenarios a significant power reduction has been obtained in exchange for executing lower number of tasks before their deadlines. It is a role of a system designer to choose proper parameter values to obtain a satisfiable trade-off between energy consumption and performance. The proposed approach leads to similar results in two considered systems of different sizes, thus it may be viewed as quite robust to different system configurations.</para>
<para>The minimal interval allowed between two consecutive switchings of P-States (threshold &#x0393;) influences workloads of various weights in different, but predictable way. An adaptive choice of &#x0393; value can be then viewed as a simple yet effective improvement of the proposed technique.</para>
</section>
</chapter>
<chapter class="chapter" id="ch04" label="4" xreflabel="4">
<title>Feedback-Based Allocation and Optimisation Heuristics</title>
<para>The vast majority of existing research into hard real-time scheduling on many-core systems assumes workloads to be known in advance, so that traditional scheduling analysis can be applied to check statically whether a particular taskset is schedulable on a given platform [<link linkend="bib42">42</link>]. The hard real-time scheduling is desired in several time critical systems such as atomotive and aerospace domains [<link linkend="bib56">56</link>]. Under dynamic workloads, admitting and executing all hard real-time (HRT) tasks belonging to a taskset can jeopardise system timeliness. The decision of task admittance is made by <emphasis>admission control</emphasis>. Its role is to fetch a task from the task queue and check whether it can be executed by any core before its deadline and without forcing existing tasks to miss theirs. If the answer is positive, the task is admitted, and rejected otherwise. The benefits of this early task rejection are twofold: (<emphasis>i</emphasis>) the resource working time is not wasted with a task that will probably violate its deadline, and (<emphasis>ii</emphasis>) a possibility of early signalling the lack of admittance can be employed to perform an appropriate precaution measures in order to minimize the negative impact of the task rejection.</para>
<para>Dynamic workloads do not necessarily follow the relatively simple periodic or sporadic task models and it is rather difficult to find a many-core system scheduling analysis that relies on more sophisticated models [<link linkend="bib42">42</link>], [<link linkend="bib67">67</link>]. Computationally-intensive workloads not following these basic models are more often analysed in High Performance Computing (HPC) domain, for example in [<link linkend="bib35">35</link>]. The HPC community experience with these tasksets could help introducing novel workload models to many-core system schedulability analysis [<link linkend="bib42">42</link>]. In HPC systems, tasks allocation and scheduling heuristics based on feedback control proved to be valuable for dynamic workloads [<link linkend="bib82">82</link>], improving platform utilisation while maintaining timing constraints. Despite a number of successful implementations in HPC community, these heuristics are to the best of our knowledge never used in many-core embedded platforms with hard real-time constraints.</para>
<para>The Roadmap on Control of Real-Time Computing Systems [<link linkend="bib5">5</link>], one of the results of the EU/IST FP6 Network of Excellence ARTIST2 program, states clearly that feedback scheduling is not suitable for applications with hard real-time constraints, since feedback acts on errors. However, further research [140, 162] show that although the number of deadline misses must not be used as an observed value (since any positive error value would violate the hard real-time constraints), observing other system&#x2019;s parameters, such as dynamic slack, created when tasks are executed earlier than their worst-case execution time (WCET), or core utilisation, could help in allocating and scheduling tasks in a real-time system.</para>
<para>The feedback-based dynamic resource allocation heuristics impose some requirements on the target system. Usually, to perform resource allocation decision one can rely on various metrics provided by the monitoring infrastructure tools and services, such as utilization and the time latency between input and output timestamps [<link linkend="bib81">81</link>]. The system should also guarantee an appropriate level of responsiveness to the decisions made by the heuristics, as well as update the values of the metrics used as inputs in the algorithm. Moreover, it is important to provide the heuristic algorithm with realistic data about system workload, service capacity, worst-case execution time and average end-to-end response [<link linkend="bib84">84</link>].</para>
<para>In order to address the aforementioned issues, we present a novel task resource allocation process, which is comprised of the <emphasis>resource allocation</emphasis> and <emphasis>task scheduling</emphasis>. The <emphasis>resource allocation</emphasis> process is executed on a particular core. Its role is to send the processes to be executed to other processing cores, putting them into the task queue of a particular core. Task scheduling is carried out locally on each core and selects the actual process to run on the core. The proposed approach adopts control-theory based techniques to perform runtime admission control and load balancing to cope with dynamic workloads with hard real-time constraints. It is worth stressing that, to the best of our knowledge, no control theory based allocation and scheduling method aiming at hard real-time systems has been proposed to operate in an embedded system with dynamic workloads.</para>
<section class="lev1" id="sec4-1">
<title>4.1 System Model and Problem Formulation</title>
<para>In <link linkend="fig4_1">Figure 4.1</link> the consecutive stages of a task life cycle in the proposed system are presented. The task <emphasis>&#x03C4;<subscript>l</subscript></emphasis> is released at an arbitrary instant. Then an approximate schedulability analysis is performed, which can return either fail or pass. If the approximate test is passed, the exact schedulability, characterised with a relatively high computational complexity [<link linkend="bib42">42</link>], is performed. If this test is also passed, the task is assigned to the appropriate core, selected during the schedulability tests, where it is executed before its deadline.</para>
<fig id="fig4_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.1</label>
<caption><title>Building blocks of the proposed approach.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_1.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig4_2" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.2</label>
<caption><title>A proposed many-core system architecture.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_2.jpg" mime-subtype="jpeg"/>
</fig>
<section class="lev2" id="sec4-1-1">
<title>4.1.1 Application Model</title>
<para>A taskset &#x0393; is comprised of an arbitrary number of tasks, &#x0393; = {<emphasis>&#x03C4;</emphasis><subscript>1</subscript><emphasis>,&#x03C4;</emphasis><subscript>2</subscript><emphasis>,&#x03C4;</emphasis><subscript>3</subscript><emphasis>,...</emphasis>}
with hard real-time constraints. The <emphasis>j</emphasis>-th job of task <emphasis>&#x03C4;<subscript>i</subscript></emphasis> is denoted with <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis>. If a <emphasis>task</emphasis> is comprised of only one <emphasis>job</emphasis>, these terms are used interchangeably in this chapter. In case of tasks with job dependencies it is assumed that all jobs of a task are submitted at the same time, thus it is possible to identify the critical path at the instant of the task release. Periodic or sporadic tasks can be modelled with an infinite series of job. The taskset is not known in advance, thus the tasks can be released at any instant.</para>
</section>
<section class="lev2" id="sec4-1-2">
<title>4.1.2 Platform Model</title>
<para>The general architecture of the proposed solution is depicted in <link linkend="fig5_3">Figure 5.3</link>. The system is comprised of <emphasis>n</emphasis> cores, whose dynamic slacks (slack vector whose length |slack| = <emphasis>n</emphasis>) and busyness (vector U, |U| = <emphasis>n</emphasis>) are observed constantly by the Monitor block.</para>
<para>In the Controllers block, one discrete-time PID controller for each core is invoked every <emphasis>dt</emphasis> time. The controllers use dynamic slacks of the corresponding cores as the observed values.</para>
<para>The Admission controller block receives a vector of controllers&#x2019; outputs, Y = [<emphasis>y</emphasis><subscript>1</subscript>(<emphasis>t</emphasis>)<emphasis>,...,y<subscript>n</subscript></emphasis>(<emphasis>t</emphasis>)], from the Controllers block. Based on its elements&#x2019; values it performs, as shown in <link linkend="fig4_1">Figure 4.1</link>, <emphasis>(i) approximate schedulability analysis</emphasis> of a task admittance or rejection decision. If the decision is positive, an <emphasis>(ii) exact schedulability analysis</emphasis> is performed by the Design Space Exploration (DSE) block. If at the second stage the result of the task schedulability analysis is negative, the task is rejected. Otherwise it is <emphasis>(iii) allocated to a core where the execution before the deadline is guaranteed</emphasis> based on the schedulability analysis performed in block DSE.</para>
</section>
<section class="lev2" id="sec4-1-3">
<title>4.1.3 Problem Formulation</title>
<para>Given an application and platform models, the problem is to quickly identify tasks whose hard timing constraints would be violated by the processing cores and then to reject such tasks without performing costy exact schedulability analysis. The number of rejected tasks should be reasonably close to the number of tasks rejected in a corresponding open-loop system, i.e., the system without the early rejection prediction. Meeting the deadlines for all admitted tasks shall be guaranteed.</para>
</section>
</section>
<section class="lev1" id="sec4-2">
<title>4.2 Performing Runtime Admission Control and Load Balancing to Cope with Dynamic Workloads</title>
<para>In dynamic workloads, admitting and executing all hard real-time (HRT) tasks belonging to a taskset <emphasis>G</emphasis> can jeopardise system timeliness. The role of the admission control is to detect the potential deadline violation of a released task, <emphasis>&#x03C4;<subscript>l</subscript></emphasis>, and to reject it in such the case. Then the resource working time is not wasted for a task that would probably violate its deadline and early signaling of the rejection could be used for minimizing its negative impact.</para>
<para>The <emphasis>j</emphasis>-th job of task <emphasis>&#x03C4;<subscript>i</subscript></emphasis>, <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis>, is released at <emphasis>r<subscript>i,j</subscript></emphasis>, with the deadline <emphasis>d<subscript>i,j</subscript></emphasis> and the relative deadline <emphasis>D<subscript>i,j</subscript></emphasis> = <emphasis>d<subscript>i,j</subscript></emphasis> &#x2212; <emphasis>r<subscript>i,j</subscript></emphasis>. The slack for <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis> executed on core <emphasis>&#x03C0;<subscript>a</subscript></emphasis>, where <emphasis>&#x03C4;<subscript>p,k</subscript></emphasis> was the immediate previous job executed by this core, is computed as follows:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq4-1.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>r<subscript>i,j</subscript></emphasis> is release time of <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis>, <emphasis>I<subscript>p,k</subscript></emphasis> &#x2013; initiation time of <emphasis>&#x03C4;<subscript>p,k</subscript></emphasis> (also known as the job execution starting time), <emphasis>c<subscript>p,k</subscript></emphasis> and <emphasis>C<subscript>p</subscript></emphasis> &#x2013; computation time and worst-case execution time (WCET) of <emphasis>&#x03C4;<subscript>p,k</subscript></emphasis>, and <emphasis>F<subscript>p,k</subscript></emphasis> &#x2013; its worst-case completion time. A similar slack calculation approach is employed in [<link linkend="bib162">162</link>]. The three possible slack cases (Equation (4.1)) are illustrated in <link linkend="fig4_3">Figure 4.3</link> (top, centre, bottom, respectively). In these figures the solid rectangle illustrates execution time (ET) of <emphasis>&#x03C4;<subscript>p,k</subscript></emphasis>, whereas the striped rectangle shows the difference between WCET and ET of this task.</para>
<fig id="fig4_3" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.3</label>
<caption><title>Illustration of task <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis> slack in three cases from Equation (4.1).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_3.jpg" mime-subtype="jpeg"/>
</fig>
<para>The normalised value of slack of currently executed job <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis> on core <emphasis>&#x03C0;<subscript>a</subscript></emphasis> is computed as follows:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq4-2.jpg" mime-subtype="jpeg"/></para>
<para>This value is returned by a monitor and compared by a controller with setpoint <emphasis>slack_setpoint</emphasis>. An error <emphasis>e<subscript>a</subscript></emphasis>(<emphasis>t</emphasis>) = <emphasis>slack<subscript>a</subscript></emphasis> &#x2212; <emphasis>slack_setpoint</emphasis> is computed for core <emphasis>&#x03C0;<subscript>a</subscript></emphasis>, as schematically shown in <link linkend="fig5_3">Figure 5.3</link>. Then the <emphasis>a</emphasis>-th output of the Controllers block, reflecting the past and previous dynamic slack values in core <emphasis>&#x03C0;<subscript>a</subscript></emphasis>, is computed with formula</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq4-3.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>K<subscript>P</subscript></emphasis> , <emphasis>K<subscript>I</subscript></emphasis> and <emphasis>K<subscript>D</subscript></emphasis> are positive constant components of the proportional, integral and derivative terms of a PID controller. Their values are usually determined using one of the well-known control theory methods, such as root locus technique, Ziegler-Nichols tuning method or many others, to obtain the desired control response and preserve the stability. In our research, we have applied Approximate M-constrained Integral Gain Optimisation (AMIGO), as it enables a reasonable compromise between load disturbance rejection and robustness [<link linkend="bib8">8</link>]. This method has been outlined in <link linkend="chapter3">Chapter 3</link>.</para>
<para>The value of <emphasis>slack_setpoint</emphasis> is bounded between values: <emphasis>min_slack_setpoint</emphasis> and <emphasis>max_slack_setpoint</emphasis>, which should be chosen appropriately during simulation of a particular system. Similarly, the initial value of <emphasis>slack_setpoint</emphasis> can influence (slightly, according to our experiments) the final results. In this chapter, it is initialised with the average between its minimal and maximal allowed values to converge quickly with any value from the whole spectrum of possible controller responses.</para>
<para>The slacks of the tasks executed by a particular processing core accumulate as long as the release times of each task are lower than the worst-time completion time of the previous task, which correspond to the first two cases in Equation (4.1) and are illustrated in <link linkend="fig4_3">Figure 4.3</link> (top and centre). It means that the slacks of subsequent tasks executed on a given core can be used as a controller input value. However, previous values of dynamic slack are of no importance when the core becomes idle, i.e., the core finishes execution of a task and there is no more tasks in the queue to be processed, which corresponds to the third case in Equation (4.1) illustrated in <link linkend="fig4_3">Figure 4.3</link> (bottom). To reflect this situation, the current value of <emphasis>slack_setpoint</emphasis> is provided as an error <emphasis>e<subscript>a</subscript></emphasis>(<emphasis>t</emphasis>), to enhance the task assignment to this idle core (since it corresponds with the situation that the normalised slack would be twice as large as the current setpoint value, i.e., behaves in the way the task would finish its execution two times earlier than expected). Substituting this value not only positively estimates the task schedulability at the given time instant, but also influences future computation of the controller output, as it appears as a prior error value in the integral part in Equation (4.3).</para>
<para>The Controllers block output value Y = [<emphasis>y</emphasis><subscript>1</subscript>(<emphasis>t</emphasis>)<emphasis>,...,y<subscript>n</subscript></emphasis>(<emphasis>t</emphasis>)] is provided as an input to the Admission controller block, where it is used to perform a task admittance decision. If all Controllers&#x2019; outputs (errors) <emphasis>y<subscript>a</subscript></emphasis>(<emphasis>t</emphasis>)<emphasis>,a</emphasis> &#x2208; {1<emphasis>,...,n</emphasis>}
are negative, the task <emphasis>&#x03C4;<subscript>l</subscript></emphasis> fetched from the Task queue is rejected. Otherwise, a further analysis is conducted by the Design Space Exploration (DSE) block to perform exact schedulability analysis. The available resources are there checked according to any exact schedulability test (e.g., from [<link linkend="bib42">42</link>]), which is performed for each core with task <emphasis>&#x03C4;<subscript>l</subscript></emphasis> added to its taskset as long as a schedulable assignment is not found. In our implementation, this analysis has been carried out using the interval algebra described in <link linkend="chapter2">Chapter 2</link>. If no resource is found that guarantees the task execution before its deadline, it is rejected.</para>
<para>The pseudo-code of the control strategy is presented in <link linkend="alg3_9">Algorithm 3.9</link>. This algorithm is comprised of two parts, described respectively by lines 1&#x2013;18 and 19&#x2013;24, which are executed concurrently. The first part consists of the following steps.</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para><emphasis role="strong">Step 1. Invocation (lines 1, 17).</emphasis></para>
<para>The block functionality is executed in an infinite loop (line 1), activated every time interval <emphasis>dt</emphasis> (line 17).</para>
<fig id="alg4_1">
<label>Algorithm 4.1</label>
<caption><title>Pseudo-code of Admission controller involving DSE algorithm</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg4_1.jpg" mime-subtype="jpeg"/>
</fig>
</listitem>
<listitem><para><emphasis role="strong">Step 2. Task fetching and schedulability analysis (lines 2&#x2013;8).</emphasis></para>
<para>All tasks present in the Task queue are fetched sequentially (lines 2&#x2013;3). For each task, the Controllers&#x2019;outputs are browsed to find positive values, which are treated as an early estimation of schedulability (line 4). If such value is found in an <emphasis>a</emphasis>-th output, an exact schedulability test checks the schedulability of the taskset &#x0393;<subscript>a</subscript> of the corresponding core <emphasis>&#x03C0;<subscript>a</subscript></emphasis> extended with task <emphasis>&#x03C4;<subscript>l</subscript></emphasis> using any exact schedulability test (line 5), e.g., from [<link linkend="bib42">42</link>]. If the analysis proves that the taskset is schedulable, <emphasis>&#x03C4;<subscript>l</subscript></emphasis> is assigned to <emphasis>&#x03C0;<subscript>a</subscript></emphasis> (line 6). Otherwise, the next core with the corresponding positive output value is looked for.</para></listitem>
<listitem><para><emphasis role="strong">Step 3. Task rejection and setpoint increase (lines 9&#x2013;15).</emphasis></para>
<para>If all cores have been browsed and none of them can admit <emphasis>&#x03C4;<subscript>l</subscript></emphasis> due to either a negative controller output value or the exact schedulability test failure, the task <emphasis>&#x03C4;<subscript>l</subscript></emphasis> is rejected (line 10). In this case, if there exists at least one positive value in the Controllers&#x2019; output vector, the <emphasis>slack_setpoint</emphasis> is increased by constant <emphasis>slack_setpoint_add</emphasis> provided that it is lower than constant <emphasis>max_slack_setpoint</emphasis> (lines 11&#x2013;12) to improve the schedulability estimation in future.</para></listitem></itemizedlist><para>The second part consists of two steps.</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para><emphasis role="strong">Step 1. Invocation (lines 19, 23).</emphasis></para>
<para>The block functionality is executed in an infinite loop (line 19), activated every time interval <emphasis>dt</emphasis><subscript>1</subscript>, <emphasis>dt</emphasis><subscript>1</subscript> <emphasis>&#x003E; dt</emphasis> (line 23).</para></listitem>
<listitem><para><emphasis role="strong">Step 2. Setpoint decrease (lines 20, 21).</emphasis></para>
<para>The value of <emphasis>slack_setpoint</emphasis> is decreased by constant <emphasis>slack setpoint sub</emphasis> (provided that it is higher than constant <emphasis>min_slack_setpoint</emphasis>), which encourages a higher number of tasks to be admitted in future.</para></listitem></itemizedlist>
</section>
<section class="lev1" id="sec4-3">
<title>4.3 Experimental Results</title>
<para>In order to check the efficiency of the proposed feedback-based admission control and real-time task allocation process, a simple Transaction-Level Modelling (TLM) simulation model has been developed in SystemC language. Firstly, the controller components <emphasis>K<subscript>P</subscript></emphasis> , <emphasis>K<subscript>I</subscript></emphasis> and <emphasis>K<subscript>D</subscript></emphasis> have to be tuned by analysing the corresponding open-loop system response to a bursty workload. Then three series of experiments have been performed. Firstly, a heavy periodic workload has been used to observe the behaviour of the overloaded system. Due to the regularity in the workload, some convergence of the setpoint has been expected. In the second series, workloads of various weight have been tested to observe the system behaviour under different conditions and to find the most beneficial operating region. Then industrial workloads with dependent jobs have been used to determine the applicability of the proposed approach in real-life scenarios.</para>
<para>To tune the parameters of the controller, the task slack growth response on a step-input in the open-loop system (i.e., without any feedback) has been analysed. This is a typical way in control-theory-based approaches [<link linkend="bib8">8</link>]. As an input, a burst release of 500 tasks (with execution time equal to 50 &#x03BC;s each) has been chosen. The modelled system has been comprised of 3 computing (homogeneous) cores. However, any number of tasks can be released, their execution time may vary and the number of cores can be higher, which is shown in further experiments. The obtained results have confirmed the accumulating (integrating) nature of the process, and thus the accumulating process version of AMIGO tuning formulas have been applied to choose the proper values of PID controller components [<link linkend="bib8">8</link>], similarly as it has been presented in <link linkend="chapter3">Chapter 3</link>. With a series of trial-and-error processes, the following constant values have been selected: <emphasis>min_slack_setpoint</emphasis> = 5, <emphasis>max_slack_setpoint</emphasis> = 95, <emphasis>slack setpoint add</emphasis> = 1, <emphasis>slack setpoint sub</emphasis> = 5, the first part of the proposed algorithm (<link linkend="alg3_9">Algorithm 3.9</link>) is executed five times more often than the second one.</para>
<para>During the first experiment, the system with the chosen parameters has been experimentally evaluated under a periodic workload, consisting of 900 independent jobs (i.e., each task is comprised of a single job only), one released every 5 &#x03BC;s, whose WCET equals to 50 &#x03BC;s and the relative deadline is equal to 60 &#x03BC;s. These parameters have been chosen appropriately to make the taskset heavy enough to saturate the system. The exact schedulability test has been performed for each task passing the early estimation based on the controller&#x2019;s output value. The systems with the number of processing cores ranging from 1 to 11 have been considered. The real execution time (ET) of each task varies randomly between 60% and 100% of its WCET, which results in creation of a dynamic slack. In the schedulability analysis, since the already executed tasks may influence the execution of the task whose schedulability is being tested, it is less pessimistic but still safe to provide the ET of these tasks instead of their WCET.</para>
<para>The regularity of the workload should cause convergence of the setpoint and decrease the variance of the normalised slack time. If the dynamic slack time normalised to task deadlines is close to 0%, it can be treated as an indication of well-chosen admission controller algorithm and the controller parameters, since it implies that the controller managed to minimize the steady-state error. The time needed to obtain this steady state indicates the responsiveness of the system, which should not be too long.</para>
<para>To check the system response to tasksets of various heaviness, nine sets of 10 random workloads have been generated. Each workload is comprised of 100 tasks, including a random number (between 1 and 20) of independent jobs. The execution time of every job is selected randomly between 1 and 99 &#x03BC;s. All jobs of a task are released at the same instant, and the release time of the subsequent task is selected randomly between <emphasis>r<subscript>i</subscript></emphasis> + <emphasis>range_min</emphasis> &#x00B7; <emphasis>C<subscript>i</subscript></emphasis> and <emphasis>r<subscript>i</subscript></emphasis> + <emphasis>range_max</emphasis> &#x00B7; <emphasis>C<subscript>i</subscript></emphasis>, where <emphasis>C<subscript>i</subscript></emphasis> is the total worst-case computation time of the current tasks <emphasis>&#x03C4;<subscript>i</subscript></emphasis> released at <emphasis>r<subscript>i</subscript></emphasis>, and <emphasis>range_min, range_max</emphasis> &#x2208; (0<emphasis>,</emphasis> 1), <emphasis>range_min &#x003C; range_max</emphasis>. These values influence the workload heaviness which can be described with <emphasis>Param</emphasis> parameter, which we define as the total execution time of all jobs divided by the latest deadline of these jobs. For example, for pair <emphasis>range_min</emphasis> = 0<emphasis>.</emphasis>001, <emphasis>range_max</emphasis> = 0<emphasis>.</emphasis>01, ten random workloads have been generated with <emphasis>Param</emphasis> ranging from 208.65 to 237.62, with the average value <emphasis><emphasis role="tline">Param</emphasis></emphasis> = 224<emphasis>.</emphasis>52. The average <emphasis>Param</emphasis> values for the generated workloads are given in <link linkend="tbl4_1">Table 4.1</link>. The value of  <emphasis>Param</emphasis>  can be viewed as a lower bound of the number of cores needed for computing all tasks in the workload before their deadlines. It is a rather optimistic value due to the bursty nature of the workloads and their deadlines. For example, only 71% of tasks are executed before their deadlines from a certain generated workload with <emphasis>Param</emphasis> = 4<emphasis>.</emphasis>58 in an open-loop 5-core system, whereas to execute all these tasks as many as 13 cores are needed.</para>
<section class="lev2" id="sec4-3-1">
<title>4.3.1 Number of Executed Tasks, Rejected Tasks and Schedulability Tests</title>
<section class="lev3" id="sec4-3-1-1">
<title>4.3.1.1 Periodic workload</title>
<para>The number of tasks executed before their deadlines while using both ET and WCET for schedulability analysis has been compared with the corresponding open-loop system in <link linkend="fig4_4">Figure 4.4</link> (top). As expected, by using actual execution time (ET), the number of tasks executed before their deadlines is slightly increased. On average, an improvement of 3.7% is achieved. The results obtained by closed-loop approaches are clearly worse than those obtained with the open-loop approach, where schedulability of each task is analysed with an exact schedulability test only. The open-loop approach admits about 7.6% and 10.9% higher number of tasks than the closed-loop ET and WCET case, respectively. However, this improvement is achieved with a significant timing overhead. In an extreme case of one core system, 117 schedulability tests are to be conducted for the closed-loop ET case (and 233 for WCET) in comparison with 900 test executions in the open-loop system. It is important to note that only 21 exact schedulability tests for the ET case (and 143 for WCET) returned negative results, which demonstrates high accuracy of the proposed estimation scheme for open loop system. For higher number of cores, the differences are lower since each admitted task is to be checked by the exact schedulability test to ensure its hard deadlines compliance. On average, more than 38% and 34% of the schedulability tests can be omitted for the estimation based on ET and WCET, respectively. This difference is caused by the number of tasks rejected by the exact schedulability test, which is illustrated in <link linkend="fig4_4">Figure 4.4</link> (bottom).</para>
<table-wrap id="tbl4_1">
<label>Table 4.1</label>
<caption><title>Average <emphasis>Param</emphasis> values for random workloads generated with different <emphasis>range_min</emphasis> and <emphasis>range_max</emphasis> parameters</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl4_1.jpg" mime-subtype="jpeg"/>
</table-wrap>
<fig id="fig4_4" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.4</label>
<caption><title>Number of executed tasks (<emphasis>top</emphasis>) and number of tasks rejected by the exact schedulability test (<emphasis>bottom</emphasis>) in closed-loop WCET, closed-loop ET and open-loop systems for the periodic task workload simulation scenario.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_4.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev3" id="sec4-3-1-2">
<title>4.3.1.2 Random workload</title>
<para>Figures 4.5 and 4.6 present the number of tasks computed before their deadlines, rejected tasks and the number of the exact schedulability test executions with respect to the number of processing cores (ranging from 1 to 9) and average values of <emphasis>Param</emphasis>, respectively, for open-loop and closed-loop (ET) systems.</para>
<para>The numbers of executed tasks with respect to <emphasis>Param</emphasis>, both for the open-loop and closed-loop systems, are approximated better with power than linear regression (residual sum of squares is lower by one order of magnitude in case of power regression; logarithmic and exponential regression approximations were even more inaccurate). This regression model can be then used to determine the trend of executed task number with respect to different workload weights. Similarly, the difference between the number of admitted tasks by open and closed loop systems can be relatively accurate approximated with a power function (power regression result: <emphasis>y</emphasis> = 960<emphasis>.</emphasis>87<emphasis>x</emphasis><superscript>&#x2212;1.18</superscript>, residual sum of squares <emphasis>rss</emphasis> = 3646<emphasis>.</emphasis>06). This relation implies that the closed-loop system admits relatively low number of tasks when the workload is light. In such lightweight condition, the number of schedulability tests to be performed is only 12% lower in the extreme case of the set with <emphasis><emphasis role="tline">Param</emphasis></emphasis> = 4<emphasis>.</emphasis>60. Thus, there is no reasonable benefits of using controllers and schedulability estimations. In heavier loaded systems, however, the number of admitted tasks in both configurations are more balanced, and the number of schedulability test executions is significantly varied. For example, for the two heaviest considered workload sets (i.e., with <emphasis><emphasis role="tline">Param</emphasis></emphasis> equal to 224.52 and 77.07) the schedulability tests are executed about 65% rarer in the closed-loop system.</para>
<para>The number of executed tasks grows almost linearly with the number of processing cores in both configurations and the slopes of their linear regression approximations (both with correlation coefficients higher than 0<emphasis>.</emphasis>99) are almost equal. This implies that both configurations are scalable in a similar way and the difference between the number of executing tasks in open-loop and closed-loop systems is rather unvarying. The number of schedulability test executions is almost constant in the open-loop system regardless the number of cores. However, for the closed-loop configuration, it changes in a way relatively good approximated with a power regression model (power regression result: <emphasis>y</emphasis> = 1476.29<emphasis>x</emphasis><superscript>&#x2212;0.30</superscript>, residual sum of squares <emphasis>rss</emphasis> = 14216.21). Since the growing number of processing cores corresponds to less computation on each of them, the conclusion is similar as in the <emphasis>Param</emphasis> variation case: the higher the load for the cores, the more beneficial is applying of the proposed scheme.</para>
<para>The number of tasks rejected in the open-loop systems using the exact schedulability test is considerably higher for heavier random workloads and lower number of cores, whereas for lighter random workloads or higher number of cores it is similar to the closed-loop ET system. For the closed-loop ET systems these figures illustrate the number of false positive errors of the approximate schedulability analysis, whereas for the open-loop systems it complements the number of tasks executed before deadlines.</para>
<fig id="fig4_5" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.5</label>
<caption><title>Number of tasks executed before their deadlines (<emphasis>top</emphasis>), the number of rejected tasks (<emphasis>centre</emphasis>) and number of the exact schedulability test executions (<emphasis>bottom</emphasis>) in baseline open-loop and proposed closed-loop ET systems for the random workloads simulation scenario with different weight of workloads.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_5.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig4_6" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.6</label>
<caption><title>Number of tasks executed before their deadlines (<emphasis>top</emphasis>), the number of rejected tasks (<emphasis>centre</emphasis>) and number of the exact schedulability test executions (<emphasis>bottom</emphasis>) in baseline open-loop and proposed closed-loop ET systems with different number of processing cores for the random workloads simulation scenario.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_6.jpg" mime-subtype="jpeg"/>
</fig>
</section>
</section>
<section class="lev2" id="sec4-3-2">
<title>4.3.2 Dynamic Slack, Setpoint and Controller Output</title>
<section class="lev3" id="sec4-3-2-1">
<title>4.3.2.1 Periodic workload</title>
<para>Figures 4.7 shows dynamic slack, setpoint and controller outputs during the simulation for the periodic task workload executed on a system with 3 cores. In <link linkend="fig4_7">Figure 4.7</link> (top), the initial relative large values of the slack of three cores (plotted with three different colors), normalised to task deadlines, equal to 46%, 42.8%, and 39.9% (the difference is caused with the random ET). The slack values decrease fast and after 530 ms none of them is higher than 5% of the task deadlines. This implies that tasks are executed relatively close to their deadlines, but never miss them. This behavior is obtained due to the exact schedulability test performed in the Design Space Exploration block and also indicates minimization of the steady-state errors by controllers. Taking into account the initial high values of the setpoint, the time of reaching the low normalised slack time can be treated as rather short. However, in random and industrial workloads reaching any steady state is very rare due to the lack of strict periodic behaviour of the workloads, as shown later in this chapter.</para>
<fig id="fig4_7" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.7</label>
<caption><title>Dynamic slack (<emphasis>top</emphasis>), setpoint (<emphasis>centre</emphasis>) and controller output (<emphasis>bottom</emphasis>) during the simulation for the periodic task workload simulation scenario executed by a 3 core system.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_7.jpg" mime-subtype="jpeg"/>
</fig>
<para>The early estimation based on controller outputs does not admit too many unschedulable tasks (in this experiment only 19 such tasks have been detected by the schedulability test). It is visible in <link linkend="fig4_7">Figure 4.7</link> (centre), where the value of setpoint decreases from the initial value to the minimum (by the functionality of the 2nd part of the algorithm presented in <link linkend="alg3_9">Algorithm 3.9</link>), and after 650 ms no increase is observed. It means that after this time not a single unschedulable task has been wrongly identified as schedulable by the early estimation. The initial high values of normalised slack and setpoint are also reflected in Controllers&#x2019; output values (<link linkend="fig4_7">Figure 4.7</link> (bottom)). Every time the value of an appropriate controller output is negative, a released task cannot be executed on the corresponding processing core. Despite only a sign of the controller output is important for the task admittance, relative large values of the controller outputs denote significant variance over observed normalised slack, which may be caused with not yet stabilised value of the controller setpoint. After about 750 ms the absolute value of the controller outputs are rather low, which means that the task slacks observed in the corresponding cores are low and the workload is rather predictable as compared to the random workload (next experiment).</para>
</section>
<section class="lev3" id="sec4-3-2-2">
<title>4.3.2.2 Light workload</title>
<para>In <link linkend="fig4_8">Figure 4.8</link>, the observed run-time metrics of the closed-loop 3-core system simulation of one selected light workload (with <emphasis>Param</emphasis> = 7.89), taken from [<link linkend="bib23">23</link>], is presented. From this particular workload, 53 tasks have been executed, 569 tasks rejected by the early estimation, and 293 tasks rejected by the exact schedulability test. In comparison with the periodic workload run-time characteristics, presented in <link linkend="fig4_7">Figure 4.7</link>, more false positive early estimations can be observed, which is reflected in higher values in the curve depicting the setpoint value (<link linkend="fig4_8">Figure 4.8</link> (centre)). Since the execution time of the tasks assigned to the cores vary significantly (from 1 ms to 95 ms), the normalised slack times and consequently controller outputs differ considerably for each system core (<link linkend="fig4_8">Figure 4.8</link> (top, bottom)), but overall decrease trend in the normalised slack time can be noticed.</para>
</section>
</section>
<section class="lev2" id="sec4-3-3">
<title>4.3.3 Core Utilization</title>
<para>For the periodic workload, <link linkend="fig4_9">Figure 4.9</link> (top) presents the total utilisation of the three cores (100% core utilisation means that all cores are busy at a particular instant). Except for the system initialisation, there is no situation that all three cores are idle. On average, the core utilisation for this simulation is equal to 83%. All three cores are balanced as the difference in their utilisations does not exceed more than 2 per mile. Similar utilisation and balance have been observed for other system configurations.</para>
<fig id="fig4_8" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.8</label>
<caption><title>Dynamic slack (<emphasis>top</emphasis>), setpoint (<emphasis>centre</emphasis>) and controller output (<emphasis>bottom</emphasis>) during the simulation for the selected light workload simulation scenario executed by a 3 core system.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_8.jpg" mime-subtype="jpeg"/>
</fig>
<para>For the light workload, used also as an example in the previous subsection, a relatively long idle period of all cores can be observed (<link linkend="fig4_9">Figure 4.9</link> (bottom)). It is caused with the lack of task release between 10 ms and 490 ms in this particular workload. Except for this interval, it is rather difficult to observe any controller steady state, which is due to the changeable nature of the workload.</para>
<fig id="fig4_9" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.9</label>
<caption><title>Core utilisation during the simulation for the periodic (<emphasis>top</emphasis>) and light (<emphasis>bottom</emphasis>) workload simulation scenario with 3 core system.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_9.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec4-3-4">
<title>4.3.4 Case Study: Industrial Workload Having Dependent Jobs</title>
<para>To analyse industrial workloads, 90 workloads have been generated based on the grid workload of an engineering design department of a large aircraft manufacturer, as described in [<link linkend="bib23">23</link>]. These workloads include 100 tasks of 827 to 962 jobs in total. The job execution time varies from 1ms to 99 ms. Since the original workloads have no deadlines provided explicitly, relative deadline of each task has been set to its WCET increased by a certain constant (100 ms).</para>
<para>In these workloads all jobs of any task are submitted at the same time, thus it is possible at the first stage to identify the critical path of each task and admit the task if there exists a core that is capable of executing the jobs belonging to the critical path before their deadlines. At the second stage, the remaining jobs of the task can be assigned to other cores so that the deadline of the critical path is not violated. The outputs from controllers can be used for choosing the core for the critical path jobs (during the first stage) or the cores for the remaining jobs (during the second stage). Four configurations, summarised in <link linkend="tbl4_2">Table 4.2</link>, can be then applied.</para>
<table-wrap id="tbl4_2">
<label>Table 4.2</label>
<caption><title>Four configuration possibilities with respect to controllers&#x2019; output usage (OL and CL stands for open-loop and closed-loop, respectively)</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl4_2.jpg" mime-subtype="jpeg"/>
</table-wrap>
<para><link linkend="fig4_10">Figure 4.10</link> (<emphasis>top</emphasis>) shows the number of jobs executed before their deadlines. The OLOL configuration can be treated as the baseline, since no control theory elements have been applied (only exact schedulability tests are used to select a core for a job execution). The cores are scanned in a lexicographical order as long as the first one capable of executing the job satisfying its timing constraints is not found, whereas in the closed-loop configurations the tasks are checked with regards to the decreasing value of the corresponding controller outputs.</para>
<fig id="fig4_10" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 4.10</label>
<caption><title>Number of executed jobs (<emphasis>top</emphasis>) and number of schedulability test executions (<emphasis>bottom</emphasis>) for systems configured in four different ways for the industrial workloads simulation scenario.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig4_10.jpg" mime-subtype="jpeg"/>
</fig>
<para>The OLOL configuration approach seems to be particularly beneficial in the systems with lower number of cores (heavier loaded with tasks). However, in the systems with more than two cores, the OLCL configuration leads to the best results. Its superiority in comparison with CLCL stems from the fact that an over-pessimistic rejection of critical path jobs leads to fast rejection of the whole task. Thus the cost of a false negative estimation is rather high. Wrong estimation at the second stage usually results in choosing an idler core. The OLCL configuration admits 11% more jobs than OLOL, whereas CLCL is only slightly (about 1.5%) better than the baseline OLOL.</para>
<para>The main reason for introducing the control-theory based admittance is, however, decreasing the number of costly exact schedulability testing. The number of the exact test executions is presented in <link linkend="fig4_10">Figure 4.10</link> (bottom). Not surprisingly, the wider the usage of controller outputs, the lower is the cost of schedulability testing. The difference between OLOL and OLCL is almost unnoticeable, but the configurations with control-theory-aided selection of a core for the critical path jobs leads to significant, over 30% reduction.</para>
<para>From the results it follows that two configurations OLCL and CLCL dominate the others: the former in terms of number of executed jobs, the latter in terms of number of schedulability tests. Depending upon which goal is more important, one of them is advised to be selected. Interestingly, only in case of low number of processing cores, the baseline OLOL approach is slightly better than the remaining ones. For larger systems, applying PID controllers for task admissions seems to be quite beneficial.</para>
</section>
</section>
<section class="lev1" id="sec4-4">
<title>4.4 Related Work</title>
<para>A majority of works that apply techniques originated from control-theory to map tasks to cores offers soft real-time guarantees only, which cannot be applied to time-critical systems [<link linkend="bib82">82</link>]. Relatively little work is related to the hard real-time systems, where the task dispatching should ensure admission control and guaranteed resource provisions, i.e., start a task&#x2019;s job, only when the system can allocate a necessary resource budget to meet its timing requirements and guarantee that no access of a job being executed to its allocated resources is denied or blocked by any other jobs [<link linkend="bib95">95</link>]. Providing such kind of guarantee facilitates to fulfill the requirements of time critical systems, e.g., avionic and automotive systems, where timing constraints must be satisfied [56, 75].</para>
<para>Usually hard real-time scheduling requires a priori knowledge of the worst-case execution time (WCET) of each task to guarantee the schedulability of the whole system [<link linkend="bib42">42</link>]. However, according to a number of experimental results [<link linkend="bib48">48</link>], the difference between WCET and observed execution time (ET) can be rather substantial. Consequently, underutilization of resources can often be observed during hard real-time system run-time. The emerging dynamic slack can be used for various purposes, including energy conservation by means of dynamic voltage and frequency scaling (DVFS) or switching off the unused cores with clock or power gating and slack reclamation protocol [<link linkend="bib140">140</link>].</para>
<para>In [<link linkend="bib162">162</link>], the authors claim that numerous existing hard real-time schemes are not capable of adapting to dynamically changing workloads in a satisfactory manner and thus do not scale well in the average case, whereas substantial energy dissipation savings are possible. An idea of splitting each task&#x2019;s WCET into two intervals is presented, where the length of the first interval is equal to the predicted execution time and the remaining part is the second interval. The entire dynamic slack, accumulated from previously executed tasks, is meant to be consumed during the first interval, by executing the task with lower voltage and frequency and, consequently, lower performance. The length of this interval is determined with a proportional-integral-derivative (PID) controller. Similar approaches have been applied in [<link linkend="bib3">3</link>] and [<link linkend="bib140">140</link>].</para>
<para>In [<link linkend="bib45">45</link>], a response time analysis (RTA) has been used to check the schedulability of real-time tasksets. This ensures meeting all hard deadlines despite assigning various execution frequencies to all real-time tasks to minimise energy consumption. In the approach proposed in this chapter, RTAis also performed, but it is executed far less frequent due to the fast schedulability estimation based on controllers and thus is characterised with shorter total execution time.</para>
<para>Some researchers highlight the role of a real-time manager (RTM) in scheduling hard real-time systems. In [<link linkend="bib74">74</link>], an RTM is used together with computing resources monitoring, while schedule information are precomputed from an SDF graph statically to help guaranteeing the real-time constraints. We have extended basic ideas from their scheme to work with dynamic workloads using information gathered by the monitor. The role of RTM is also highlighted in [<link linkend="bib72">72</link>]. They described that after receiving a new allocation request, it checks the resource availability using a simple predictor. Then the manager periodically monitors the progress of all running tasks and allocates more resources to the tasks with endangered deadlines. However, it is rather difficult to guarantee hard real-time requirements when no proper schedulability test is applied. In [<link linkend="bib131">131</link>], an RTM exploits information about the probability of task execution time to predict the slack available for power management. It is assumed that the execution time of a task in terms of its worst-case execution time is given by a known cumulative distribution function. The stochastic nature of this approach prevents it from application in hard real-time systems if even tiny probability (e.g., 10<superscript>&#x2212;12</superscript> [<link linkend="bib16">16</link>]) of missing any deadline is not allowed.</para>
<para>From the literature survey it follows that applying feedback-based controllers in hard real-time systems has been limited to determining the appropriate frequency benefiting from DVFS. According to the authors&#x2019; knowledge, the feedback controller has not been yet used by an RTM to perform hard real-time task allocation under dynamic workload on many-core systems.</para>
</section>
<section class="lev1" id="sec4-5">
<title>4.5 Summary</title>
<para>In this chapter we presented a novel scheme for dynamic workload task allocation to many-cores using a control-theory-based approach. Unlike the majority of similar existing approaches, we deal with workloads having hard real-time constraints that is desired in time critical systems. Thus, we are forced to perform exact schedulability tests, whereas PID controllers are used for early estimation of schedulability.</para>
<para>We achieved an improved performance due to reduced number of costly scheduling test executions, slightly limiting the number of admitted tasks in the majority of cases. The controllers observe dynamic slack of executed tasks and aim to select the core with the lowest load.</para>
<para>For heavy workloads the proposed scheme achieves a better performance than using the typical open-loop approach. Up to 65% lower number of schedulability tests are to be performed, whereas the number of admitted tasks is almost equal for the heavy-loaded system and lower up to 19% with lightweight scenarios, for which the proposed scheme is less appropriate. For industrial workloads with dependent jobs executed on larger systems, the number of executed tasks using the proposed approach was even higher than the open-loop baseline system due to the selection of more idle cores for computing jobs belonging to the critical path.</para>
<para>Since schedulability analysis requires relatively long computation time, decreasing the number of its executions should lead to considerable computation time and energy reduction. The exact gain depends on a particular system configuration and will be evaluated in our future work. We also plan to consider heterogeneous many-core system and extend the proposed approach for mixed criticality workloads.</para>
</section>
</chapter>
<chapter class="chapter" id="ch05" label="5" xreflabel="5">
<title>Search-Based Heuristics for Modal Application</title>
<para>Due to the growing number of electronic control units (ECUs) in contemporary cars, sometimes reaching even 100, the automotive industry gradually resigns from their paradigm of using a separate unit for each functionality [<link linkend="bib99">99</link>]. The requirement of placing a number of ever more sophisticated functionalities in one chip resulted in appearance of multi-core ECUs [<link linkend="bib158">158</link>]. The AUTOSAR (AUTomotive Open System ARchitecture) standard [<link linkend="bib1">1</link>] assumes a static (i.e., compile-time) mapping of atomic software components, named <emphasis>runnables</emphasis>, into cores since it is less complex and more predictable than dynamic resource allocation [<link linkend="bib94">94</link>].</para>
<para>Due to the hard real-time constraint in automotive systems, the cores have to execute all the tasks on time even for their worst-case execution behavior, where they take worst-case execution time (WCET), which is usually much higher than the average execution time [<link linkend="bib152">152</link>]. One possibility of decreasing the difference between the worst and average task execution times stems from the modal nature of such applications, i.e., from the fact that they can behave in a limited, known at design-time, number of ways, named <emphasis>modes</emphasis>. If each mode is analysed independently, the average execution time may be closer to the WCET determined for that mode [<link linkend="bib118">118</link>]. In [<link linkend="bib104">104</link>], six modes have been identified in a 4 cylinder gasoline torque based system, for example Cranking, Idle and Wide Open Throttle. It has been stressed there that execution times of particular runnables differ significantly for various modes of an ECU and thus applying different mappings for each operating mode may be beneficial. This way a lower number of cores could be needed than that of the corresponding system design not considering operating modes. However, introducing different mapping for modes imposes significant design complications, which have not been analysed in [<link linkend="bib104">104</link>].</para>
<para>The contexts of runnables that are executed on different cores in different modes have to be migrated from one core to another, setting additional requirements for the available communication bandwidth. The process of mode switching usually incurs overhead (both in execution time and energy), which is to be taken into account at run-time to decide whether to switch to a different mode or not. In hard real-time systems, it is essential to satisfy all the timing constraints even during the mode switching process, i.e., the migration time of tasks must be time bounded [<link linkend="bib146">146</link>]. Therefore, the worst case switching time has to be assumed to provide the timing guarantees.</para>
<para>During the migration process, the taskset schedulability must not be violated. To guarantee this property, we propose to treat a migration process as any other asynchronous process in schedulability analysis, i.e., to use so-called <emphasis>periodic servers</emphasis>, which are periodic tasks executing aperiodic jobs. When a periodic server is executed, it processes pending task migration. If there is no pending migration, the server simply holds its capacity. To reduce the migration time, a recursive greedy algorithm for reducing the amount of data transferred during a mode change is proposed. It aims to decrease the number of periodic server instances used during a single mode switching. The proposed approach can be applied to any hard real-time systems, where different operating modes can be identified, and automotive systems in particular.</para>
<para>As an example, throughout this chapter we will analyse an engine ECU code named <emphasis>DemoCar</emphasis>. We will identify its operating modes and apply clustering to decrease their number and to eliminate task migration between neighbouring mode pairs (i.e., two modes from which at least one mode can be directly transferred to the second one) if the mode change is to be finished rapidly. The mappings for each mode will be determined using a genetic algorithm. This algorithm applies two optimizing criteria: runnable schedulability in terms of a number of deadline violations and migration cost in terms of the context length of the transmitted runnables. The typical schedulability analysis is used to determine the necessary network bandwidth to guarantee that the mode switching migration finishes in the required time.</para>
<para>In the next section, the state-of-the-art solutions are described followed by the proposed approach and a discussion on providing performance guarantees during mode changes.</para>
<section class="lev1" id="sec5-1">
<title>5.1 System Model and Problem Formulation</title>
<section class="lev2" id="sec5-1-1">
<title>5.1.1 Application Model</title>
<para>In this work we assume application model is consistent with the AUTOSAR standard [<link linkend="bib1">1</link>]. A taskset &#x0393; is comprised of an arbitrary number of periodic runnables, &#x0393; = {<emphasis>&#x03C4;</emphasis><subscript>1</subscript><emphasis>,&#x03C4;</emphasis><subscript>2</subscript><emphasis>,&#x03C4;</emphasis><subscript>3</subscript><emphasis>,...</emphasis>}, grouped in tasks with hard real-time constraints. The <emphasis>j</emphasis>-th occurrence (<emphasis>j</emphasis>-th job) of runnable <emphasis>&#x03C4;<subscript>i</subscript></emphasis> is denoted with <emphasis>&#x03C4;<subscript>i,j</subscript></emphasis>. The taskset is known in advance, including the WCET of each runnable, <emphasis>C<subscript>i</subscript></emphasis>, its period <emphasis>T<subscript>i</subscript></emphasis>, priority <emphasis>P<subscript>i</subscript></emphasis> and its relative deadline <emphasis>D<subscript>i</subscript></emphasis> equal to this period. Runnables are atomic schedulable units communicating each other with so called <emphasis>labels</emphasis>, <emphasis>N</emphasis> = {<emphasis>&#x03BD;<subscript>l</subscript>,...,&#x03BD;<subscript>r</subscript></emphasis>}, which are memory locations of a particular length. The order of read and write operations to labels denotes the runnable dependencies, as the write operation to a particular label should be completed before its reading. Deadlines for mode changing time between each neighbouring pair of modes are also provided. We assume that the labels are stored in the same node that the runnable that reads these labels. If more than one runnable mapped to different cores read from the same label, its content is to be replicated to all the reading nodes and the writer should update the label value at all the locations. It means that the writer is aware of all its readers and knows their locations in all the possible modes.</para>
<para><emphasis role="strong">Example 1</emphasis> <emphasis>Throughout this chapter, we consider a lightweight engine control system named DemoCar as an example application. The flow graph of this application is depicted in <link linkend="fig5_1">Figure 5.1</link>. It consists of 18 runnables and 61 labels. All runnables are periodic: 8 runnables (highlighted in green) are to be executed every 10 ms, whereas period of 6 runnables (red, blue and yellow) equals 5 ms, two (violet) runnables are executed every 20 ms and the period of two (orange) runnables is 100 ms. In <link linkend="fig5_2">Figure 5.2</link> (upper part), 11 identified modes of this application are presented. These modes have been identified by inspecting the code of the runnable named</emphasis> OperatingModeSWC<emphasis>, which computes values of transaction and output functions of the Finite State Machine steering this engine. For example, label</emphasis> FuelEnabled <emphasis>is read by two runnables:</emphasis> TransFuelMassSWC <emphasis>and</emphasis> ThrottleChangeSWC<emphasis>. If these runnables are mapped to different cores, the label is to be replicated and kept in both the cores where these runnables were mapped to. It is a role of the writer,</emphasis> OperatingModeSWC<emphasis>, to update these values coherently not violating any timing constraints.</emphasis></para>
</section>
<section class="lev2" id="sec5-1-2">
<title>5.1.2 Platform Model</title>
<para>The hardware platform assumed in this chapter is a mesh Network on Chip (NoC) with a certain number of cores <emphasis>&#x03C0;</emphasis> &#x2208; &#x03A0; and routers <emphasis>&#x03C8;</emphasis> &#x2208; &#x03A8;, as shown in <link linkend="fig5_3">Figure 5.3</link>. Each link is modelled as a single resource, so, for example, to transfer a portion of data from <emphasis>&#x03C0;</emphasis><subscript>0,1</subscript> to appropriate sink <emphasis>&#x03C0;</emphasis><subscript>2,0</subscript> we need such resources allocated simultaneously: <emphasis>&#x03C0;</emphasis><subscript>0,1</subscript> &#x2212; <emphasis>&#x03C8;</emphasis><subscript>0,1</subscript>, <emphasis>&#x03C8;</emphasis><subscript>0,1</subscript> &#x2212; <emphasis>&#x03C8;</emphasis><subscript>1,1</subscript>, <emphasis>&#x03C8;</emphasis><subscript>1,1</subscript> &#x2212; <emphasis>&#x03C8;</emphasis><subscript>2,1</subscript>, <emphasis>&#x03C8;</emphasis><subscript>2,1</subscript> &#x2212; <emphasis>&#x03C8;</emphasis><subscript>2,0</subscript> , <emphasis>&#x03C8;</emphasis><subscript>2,0</subscript> &#x2212; <emphasis>&#x03C0;</emphasis><subscript>2,0</subscript>. In every mode, each runnable is mapped to one core and a label is stored in local memories of the cores requesting that label. Data transfer overhead is taken into consideration, assuming constant time for transferring a single flit (Flow control digIT, a piece of a network package whose length usually equals the data width of a single link) between two neighbouring cores if no contentions are present. Timing constants for packet latencies while traversing one router and one link are denoted as <emphasis>d<subscript>R</subscript></emphasis> and <emphasis>d<subscript>L</subscript></emphasis>, respectively. The priority of data transfer packets are assumed to be equal to the priority of the runnable sending them.</para>
<fig id="fig5_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.1</label>
<caption><title>Flow graph of the DemoCar example; the runnables belonging to the same task are highlighted with the same colour, labels are not highlighted. Some flows are drawn in different colours for readability.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_1.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig5_2" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.2</label>
<caption><title>Finite State Machine describing mode changes in DemoCar use case: before (<emphasis>upper part</emphasis>) and after (<emphasis>lower part</emphasis>) the clustering step.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_2.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig5_3" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.3</label>
<caption><title>An example many-core system platform.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_3.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec5-1-3">
<title>5.1.3 Problem Formulation</title>
<para>Given a platform and an application model with a defined set of operating modes, the problem is to determine schedulable mappings for each mode so that the amount of data to be migrated during the allowed mode changes is minimized. During mode changing, the taskset should be still schedulable despite the additional network traffic generated by the task migrations. The neighbouring modes (i.e., the modes connected with a link in the FSM describing the allowed mode transitions) with similar runnables&#x2019; execution time can be clustered to decrease the frequency of task migrations. The deadlines for mode changing time between each neighbouring pair of modes must not be violated.</para>
</section>
</section>
<section class="lev1" id="sec5-2">
<title>5.2 Proposed Approach</title>
<para>In this section, steps of the proposed design flow are described. Since it has been assumed that the tasksets of the considered application are known in advance, it is possible to perform some preliminary computations statically. Consequently, the mapping problem can be split into two stages: off-line (static) and on-line (dynamic), as shown in <link linkend="fig5_4">Figure 5.4</link>. The computation time of the off-line part is not crucial and thus heuristics with even high complexity may be used for runnable and label mappings. It seems promising to combine the most effective approaches, such as multi-objective simulating annealing or genetic algorithms. The possibility of extending genetic operators benefiting from the full knowledge of the system domain, such as mutation in a way similar to [<link linkend="bib109">109</link>], makes the genetic approach the first choice at this step.</para>
<para>During run time, detection of the current mode is assumed to be done by observing certain variable. (In DemoCar such variable is named <emphasis>&#x2013;sm</emphasis> and is stored in runnable <emphasis>OperatingModeSWC</emphasis>.) When a value of this variable has been changed, the current runnable and label mapping might have to be switched. The mappings have been chosen during the design time with respect to minimize the amount of data to be migrated. Schedulability analysis guarantees that even the worst case switching time does not violate the deadline required for mode changes. If such violation is unavoidable, either the states can be clustered, or the network bandwidth is to be increased.</para>
<para>The off-line part of the proposed approach is comprised of five steps, which are covered in the following subsections.</para>
<section class="lev2" id="sec5-2-1">
<title>5.2.1 Mode Detection/Clustering</title>
<para>The reasons for introducing the <emphasis>mode detection &#x0026; clustering</emphasis> step are twofold. Firstly, some neighbouring modes can be characterized with similar runtime and resource consumption. Then there is little benefit in preparing different mappings for such modes and migrating the runnables when a transition between these neighbouring modes is made. Moreover, some transitions are required to be done immediately, whereas others can be less time tight. If a runnable migration is to be performed quickly, for example between two consecutive runnable occurrences, the bandwidth needed to transfer the appropriate amount of data in that time may be unreasonably high. Therefore, it may be more sensible to merge two modes with such rapid task switching time and generate only one mapping for them.</para>
<fig id="fig5_4" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.4</label>
<caption><title>Steps of dynamic resource allocation method benefiting from modal nature of applications.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_4.jpg" mime-subtype="jpeg"/>
</fig>
<para><emphasis role="strong">Example 2</emphasis> <emphasis>(continuation of Example 1) In DemoCar, transitions between modes:</emphasis> Stalled<emphasis>,</emphasis> Cranking<emphasis>,</emphasis> IdleOpenLoop<emphasis>,</emphasis> IdleClosedLoop<emphasis>,</emphasis> Drive<emphasis>,</emphasis> Wait-ForOverrun<emphasis>,</emphasis> Overrun<emphasis>,</emphasis> WaitForAFRFeedback <emphasis>and</emphasis> WaitForPowerDownDelay <emphasis>are to be performed between two consecutive executions of their runnable occurrences, which is upperbounded with 5 ms for 9 runnables. Since performing task migration during such short time window would require a bandwidth of considerable size, these modes have been clustered into</emphasis> Cluster 1<emphasis>. Finally, three modes can be identified after the clustering step:</emphasis> PowerDown<emphasis>,</emphasis> PowerUp <emphasis>and</emphasis> Cluster 1<emphasis>, as presented in <link linkend="fig5_2">Figure 5.2</link> (lower part).</emphasis></para>
</section>
<section class="lev2" id="sec5-2-2">
<title>5.2.2 Spanning Tree Construction</title>
<para>To minimize the amount of data to be migrated between two consecutive modes with the technique proposed in this chapter, the FSM describing mode changes should include weights denoting state transition probabilities. Since probabilities of staying in the current mode are not relevant at this step, they can be omitted for simplicity. The probabilities can be given or determined during long simulation of the modal system. The FSM has also to have all its cycles removed to guarantee halting of the <emphasis>Static mapping for non-initial modes</emphasis> step. In this regard, for an FSM treated as a weighted connected graph <emphasis>G</emphasis>(<emphasis>V, E</emphasis>), where <emphasis>V</emphasis> is the set of vertices and <emphasis>E</emphasis> denotes the set of edges, a maximum spanning tree can be constructed. We recollect that a spanning tree of a graph <emphasis>G</emphasis> is its subgraph <emphasis>T</emphasis> (<emphasis>V, E</emphasis> <superscript>&#x02CA;</superscript>), which is connected and whose number of edges is equal to the number of vertices minus 1, |<emphasis>E</emphasis> <superscript>&#x02CA;</superscript>| = |<emphasis>V</emphasis> |&#x2212;1.If T denotes the set of all spanning trees of <emphasis>G</emphasis>, a maximum spanning tree <emphasis>T<subscript>max</subscript></emphasis>(<emphasis>V, E<subscript>max</subscript></emphasis>)
of <emphasis>G</emphasis> is a spanning tree iff:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/ueq5-1.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>w</emphasis>(<emphasis>v, z</emphasis>) is the weight value assigned to the edge from a vertex <emphasis>v</emphasis> to <emphasis>z</emphasis>. A maximum spanning tree can be constructed in time <emphasis>O</emphasis>(|<emphasis>E</emphasis>|log|<emphasis>V</emphasis> |), e.g., by the classic Prim&#x2019;s algorithm [<link linkend="bib108">108</link>].</para>
<para>The operation performed in this step neither influences the application behaviour nor limit the possible mode transitions. It only makes the least frequent transitions not optimized during stage <emphasis>Static mapping for not initial modes minimizing amount of data to be migrated</emphasis> (<link linkend="fig5_4">Figure 5.4</link>).</para>
<para><emphasis role="strong">Example 3</emphasis> <emphasis>(continuation of Example 2) For DemoCar, probabilities of mode changing have been shown in <link linkend="fig5_5">Figure 5.5</link> (left). The maximum spanning tree, constructed with the Prim&#x2019;s algorithm, is presented in <link linkend="fig5_5">Figure 5.5</link> (right).</emphasis></para>
</section>
<section class="lev2" id="sec5-2-3">
<title>5.2.3 Static Mapping for Initial Mode</title>
<para>Since mapping for each mode is performed off-line, even heuristics known from their high computational cost, such as genetic algorithms, can be applied. A genetic algorithm used for hard real-time systems shall guarantee that under the chosen schedule all timing constraints are satisfied. This can be performed in several ways. For example, each missed deadline can impose a certain penalty to the fitness function value, and thus each schedule with unsatisfied constraints should be eliminated during the evolutionary process. A particular mapping is portrayed as a chromosome, stored as a bit string, representing on each gene the processing core where the task would be mapped to, similarly to [<link linkend="bib61">61</link>]. The bit string one-point crossover operator and flip bit mutation have been applied together with the tournament selection of the individuals.</para>
<para>Below, an algorithm encompassing the aforementioned properties is described.</para>
<para>In <link linkend="alg5_1">Algorithm 5.1</link>, it is presented a pseudo-code of a genetic algorithm that can be used during <emphasis>Static mapping for initial mode</emphasis> step, the third off-line step of the proposed approach, as depicted schematically in <link linkend="fig5_4">Figure 5.4</link>. We propose to use two fitness functions &#x2013; measuring (i) the number of deadline violations and (ii) makespan (also known as response time). Both these functions apply the interval algebra described in <link linkend="chapter2">Chapter 2</link>. The first fitness function value is of primary importance, as in a hard real-time system no deadline violation is allowed. But among fully schedulable mappings, the one leading to a lower makespan is chosen, since idle intervals can be used to decrease energy consumption or execute tasks of lower criticality levels.</para>
<fig id="fig5_5" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.5</label>
<caption><title>Spanning tree construction for DemoCar.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_5.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="alg5_1">
<label>Algorithm 5.1</label>
<caption><title>Pseudo-code of no deadline violation with makespan minimisation algorithm for the initial mode mapping</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg5_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>In the algorithm, the following steps can be singled out.</para>
<para><emphasis>Step 1</emphasis>. Initial population initialisation (line 1). An arbitrary number of random task mappings (individuals) is created.</para>
<para><emphasis>Step 2</emphasis>. Creating a new population (lines 3&#x2013;10). For each individual, values of two fitness functions are computed &#x2013; the number of deadline violations and the makespan (lines 3&#x2013;4). Individuals with the same number of deadline misses are grouped together (line 5). The groups are then sorted with respect to the number of deadline violations in the ascending order (line 6). Inside each group, individuals are sorted according to their growing makespan (line 7). The tournament selection is then performed &#x2013; individuals from a group with lower number of deadline violations are always preferred, whereas among individuals from one group the one with the lowest makespan is to be chosen (line 8). The individuals winning the tournament are then combined using a typical crossover operation and mutated (line 9). A new population is created (line 10). Step 2 is repeated in a loop as long as a termination condition is not fulfilled, which can be a maximal number of generated populations or lack of improvement in a number of subsequent generations.</para>
<para><emphasis role="strong">Example 4</emphasis> <emphasis>(continuation of Example 3) For the</emphasis> PowerUp <emphasis>(initial) mode of DemoCar to be executed on a multi-core embedded system, we evaluate makespan and number of violated deadlines during one hyperperiod (i.e., the least common multiple of all runnables&#x2019; periods) by allocating runnables and labels to different cores.</emphasis></para>
<para><emphasis>The size of the NoC mesh has been initially configured as 2x2 with no idle cores, since this size has been earlier checked (also using <link linkend="alg5_1">Algorithm 5.1</link>) and is large enough to execute DemoCar in the most computational intensive mode,</emphasis> Cluster 1<emphasis>, not violating any of its timing constraints. The genetic algorithm is executed again to perform assignment of tasks to cores with timing characteristics for the initial</emphasis> PowerUp <emphasis>mode. The genetic algorithm has been configured to generate 100 generations of 20 individuals each. The first fully schedulable allocation has been found in the 1st generation, which suggests that it might be possible to allocate the taskset to a lower number of cores.</emphasis></para>
<para><emphasis>After performing further search it has appeared that the taskset in the initial mode is schedulable even when mapped to one (out of four) active core. The lowest makespan for the NoC with three idle cores is equal to 8622</emphasis> &#x03BC;<emphasis>s.</emphasis></para>
</section>
<section class="lev2" id="sec5-2-4">
<title>5.2.4 Static Mapping for Non-Initial Modes</title>
<para>It is of primary importance to migrate as little data as possible during mode changes to minimise the migration time.</para>
<para>Each application A includes a set of tasks and can be represented with a vector comprised of <emphasis>p</emphasis> runnables and <emphasis>r</emphasis> shared memory locations (labels) of these tasks, A = [<emphasis>&#x03C4;</emphasis><subscript>1</subscript><emphasis>,...,&#x03C4;<subscript>p</subscript></emphasis><emphasis>,&#x03BD;</emphasis><subscript>1</subscript><emphasis>,...,&#x03BD;<subscript>r</subscript></emphasis>], and platform &#x03A0; is composed of <emphasis>s</emphasis> processing cores, &#x03A0; = {<emphasis>&#x03C0;</emphasis><subscript>1</subscript><emphasis>,...,&#x03C0;<subscript>s</subscript></emphasis>}. A mapping M is a vector of <emphasis>p</emphasis> core locations, M = [<emphasis>&#x03C0;<subscript>&#x03C4;<subscript>1</subscript></subscript></emphasis>,...,<emphasis>&#x03C0;<subscript>&#x03C4;<subscript>p</subscript></subscript></emphasis>], where each element corresponds with the appropriate element of A and can be substituted with any element of set &#x03A0;. Each element of weight vector W, W = [<emphasis>w</emphasis><subscript>&#x03C4;<subscript>1</subscript></subscript><emphasis>,...,w</emphasis><subscript>&#x03C4;<subscript>p</subscript></subscript>], is equal to the amount of data that has to be transferred when a particular runnable is migrated, including the labels to be read.</para>
<para>Let <emphasis>M</emphasis><subscript>&#x03B1;</subscript> and <emphasis>M</emphasis><subscript>&#x03B2;</subscript> be sets of mappings that are fully schedulable in a given system in state <emphasis>&#x03B1;</emphasis> and <emphasis>&#x03B2;</emphasis>, respectively. The elements of the difference vector <emphasis>D<subscript>m&#x03B1;,m&#x03B2;</subscript></emphasis> = [<emphasis>d<subscript>&#x03C4;<subscript>1</subscript></subscript></emphasis>,...,<emphasis>d<subscript>&#x03C4;<subscript>p</subscript></subscript></emphasis>] indicate which runnables are to be migrated when the mode is changed from <emphasis>&#x03B1;</emphasis> to <emphasis>&#x03B2;</emphasis>. Each element <emphasis>d</emphasis><subscript>&#x03B4;</subscript>, <emphasis>&#x03B4;</emphasis> &#x2208; {<emphasis>&#x03C4;</emphasis><subscript>1</subscript><emphasis>,...,&#x03C4;<subscript>p</subscript></emphasis>}, takes value 1 if the particular runnable/label is allocated to different cores in mappings <emphasis>m</emphasis><subscript>&#x03B1;</subscript> &#x2208; <emphasis>M</emphasis><subscript>&#x03B1;</subscript> and <emphasis>m<subscript>&#x03B2;</subscript></emphasis> &#x2208; <emphasis>M<subscript>&#x03B2;</subscript></emphasis>, and 0 otherwise:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-1.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>m<subscript>&#x03B1;,&#x03B4;</subscript></emphasis> and <emphasis>m<subscript>&#x03B2;,&#x03B4;</subscript></emphasis> denote the <emphasis>&#x03B4;</emphasis>-th element of vectors <emphasis>m</emphasis><subscript>&#x03B1;</subscript> and <emphasis>m<subscript>&#x03B2;</subscript></emphasis>, respectively. The migration cost <emphasis>c</emphasis> between two states <emphasis>&#x03B1;</emphasis> and <emphasis>&#x03B2;</emphasis> is then computed in the following way:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-2.jpg" mime-subtype="jpeg"/></para>
<para>A recursive greedy algorithm for reducing an amount of data transferred during mode changes is presented in <link linkend="alg5_2">Algorithm 5.2</link>.</para>
<para>Since some cycles are likely to occur in a graph representing the Finite State Machine describing transitions between modes, a spanning tree (ST) is to be built, as described in the previous subsection. Then the mode corresponding to the initial state of the FSM is selected as the current mode (line 1). For this mode, a set of schedulable mappings is generated, e.g., with <link linkend="alg5_2">Algorithm 5.2</link> (line 2). If more than one schedulable mapping is found, an additional criterion <emphasis>crit</emphasis> (e.g., minimum makespan value) is used to select one of them (line 3). Then for each direct successor of the ST node corresponding to FSM initial state, the <emphasis>FindMappingMin</emphasis> procedure is executed (lines 4 and 5).</para>
<para>In the <emphasis>FindMappingMin</emphasis> procedure, a set of schedulable mappings for that successor node is found using minimal migration cost criterion (5.2) (line 8). If more than one schedulable mapping is equally evaluated by this criterion, an additional criterion, <emphasis>crit</emphasis>, is used (line 9). The <emphasis>FindMappingMin</emphasis> procedure is then recursively run for each direct successor of the ST node provided as the function parameter (lines 10 and 11). More mappings could be delivered to the <emphasis>FindMappingMin</emphasis> procedure to browse a larger search space by skipping lines 4 and 9 in the algorithm and providing all elements of <emphasis>M</emphasis><subscript>&#x03B1;</subscript> instead of just one.</para>
<fig id="alg5_2">
<label>Algorithm 5.2</label>
<caption><title>Pseudo-code of a migration data transfer minimisation algorithm</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg5_2.jpg" mime-subtype="jpeg"/>
</fig>
<para><emphasis role="strong">Example 5</emphasis> <emphasis>(continuation of Example 4) Regardless of the mode, the application has been mapped in a 2</emphasis> &#x00D7; <emphasis>2 mesh Network on Chip without deadline violations. For the</emphasis> PowerUp <emphasis>mode, schedulable mappings have been found even if three of the four NoC cores remains idle, as shown in Example 4. It means that in this mode three cores can be switched off, leading to considerable energy savings. Similarly, two cores can remain idle in the</emphasis> PowerDown <emphasis>mode.</emphasis> (PowerDown <emphasis>requires more computations than</emphasis> PowerUp <emphasis>since some maintenance procedures are to be consistently performed.</emphasis>) <emphasis>However, despite intensive search using a genetic algorithm, all four cores are needed in the</emphasis> Cluster_1 <emphasis>mode to have the taskset fully schedulable. Thus, when the current mode changes from</emphasis> PowerUp <emphasis>to</emphasis> Cluster 1<emphasis>, three cores have to be activated, whereas two cores can be switched off after leaving the</emphasis> Cluster_1 <emphasis>mode.</emphasis></para>
<para><emphasis>Let us focus on the transition between the</emphasis> PowerUp <emphasis>and</emphasis> Cluster_1 <emphasis>modes. For</emphasis> PowerUp<emphasis>, only one core is active and thus all runnables are to be mapped to the only active core. However, in other cases a larger set of mappings that are fully schedulable on active NoC cores would have been identified. From these mappings, the one with the lowest makespan (an additional criterion) is chosen. This mapping has been used as a parameter of the</emphasis> FindMappingMin <emphasis>procedure (from the algorithm presented in <link linkend="alg5_2">Algorithm 5.2</link>). The set of schedulable mappings following the minimum criterion (Equation (5.2)) is identified using a genetic algorithm. By the applied criterion</emphasis> (<emphasis>min</emphasis>(<emphasis>c<subscript>m<subscript>&#x03B1;</subscript>,m<subscript>&#x03B2;</subscript></subscript></emphasis> )), <emphasis>a significantly lower amount of data has to be migrated during the mode change. In the best found case, 3 runnables have to be migrated, whose total</emphasis> <emphasis>c<subscript>PowerUp,Cluster_1</subscript></emphasis> = 261968 <emphasis>bytes. However, by not using this criterion, but the minimal makespan instead, the lowest number of runnables to be migrated equals 13, which results in</emphasis> <emphasis>c<subscript>PowerUp<subscript>2</subscript>,Cluster_1</subscript></emphasis> = 890162 <emphasis>bytes. In the second case, the amount of data to be transferred using a periodic server is about 240% higher than in the first mapping pair. Since periodic servers offer equal throughput during the system execution, the mode change between the latter mappings would last more than three times as long as between the former pair.</emphasis></para>
<para><emphasis>During mode change from</emphasis> Cluster_1 <emphasis>to</emphasis> PowerDown<emphasis>, 2 runnables have to be migrated and</emphasis> <emphasis>c<subscript>Cluster_1,PowerDown</subscript></emphasis> = 113568 <emphasis>bytes. Although the transition between modes</emphasis> PowerDown <emphasis>and</emphasis> PowerUp <emphasis>are not optimized, in this case only 2 runnables have to be migrated with</emphasis> <emphasis>c<subscript>PowerDown,PowerUp</subscript></emphasis> = 113536 <emphasis>bytes.</emphasis></para>
</section>
<section class="lev2" id="sec5-2-5">
<title>5.2.5 Schedulability Analysis for Taskset During Mode Changes</title>
<para>Since some runnables and labels are expected to be located at different cores in two different modes, their migration is to be performed during mode changes. A runnable migration process is schematically depicted in <link linkend="fig5_6">Figure 5.6</link>. Two mappings <emphasis>m</emphasis><subscript>&#x03B1;</subscript> and <emphasis>m<subscript>&#x03B2;</subscript></emphasis> of runnables <emphasis>&#x03C4;<subscript>i</subscript></emphasis>, <emphasis>&#x03C4;<subscript>j</subscript></emphasis>, <emphasis>&#x03C4;<subscript>k</subscript></emphasis> into nodes <emphasis>&#x03C0;<subscript>a</subscript></emphasis> and <emphasis>&#x03C0;<subscript>b</subscript></emphasis> are used in two different system modes: <emphasis>&#x03B1;</emphasis> and <emphasis>&#x03B2;</emphasis>, respectively. The difference between these mappings is the assignment of runnable <emphasis>&#x03C4;<subscript>j</subscript></emphasis>. We assume no deadline violations for both mappings <emphasis>m</emphasis><subscript>&#x03B1;</subscript> and <emphasis>m<subscript>&#x03B2;</subscript></emphasis>. During hyperperiods involved in the migration process between <emphasis>&#x03B1;</emphasis> and <emphasis>&#x03B2;</emphasis>, the schedulability analysis for communication resources should take into consideration not only all the transfers between <emphasis>&#x03C0;<subscript>a</subscript></emphasis> and <emphasis>&#x03C0;<subscript>b</subscript></emphasis> described in the workload, but also an additional periodic job, i.e., the periodic server of certain policy (polling, sporadic, deferrable, etc.) with a certain execution time in each period. A technique for determining this time is presented in this subsection.</para>
<fig id="fig5_6" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.6</label>
<caption><title>Example of two different mappings (<emphasis>m</emphasis><subscript>&#x03B1;</subscript>, <emphasis>m<subscript>&#x03B2;</subscript></emphasis>) of runnables <emphasis>&#x03C4;<subscript>i</subscript></emphasis>, <emphasis>&#x03C4;<subscript>j</subscript></emphasis>, <emphasis>&#x03C4;<subscript>k</subscript></emphasis> into cores <emphasis>&#x03C0;<subscript>a</subscript></emphasis> and <emphasis>&#x03C0;<subscript>b</subscript></emphasis>.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_6.jpg" mime-subtype="jpeg"/>
</fig>
<para>When the mode changes from <emphasis>&#x03B1;</emphasis> to <emphasis>&#x03B2;</emphasis>, runnable <emphasis>&#x03C4;<subscript>j</subscript></emphasis> is to be copied from <emphasis>&#x03C0;<subscript>a</subscript></emphasis> to <emphasis>&#x03C0;<subscript>b</subscript></emphasis>. Since the precopy strategy is applied, <emphasis>&#x03C4;<subscript>j</subscript></emphasis> is still executed on core <emphasis>&#x03C0;<subscript>a</subscript></emphasis> during the migration. To migrate runnable <emphasis>&#x03C4;<subscript>j</subscript></emphasis>, the periodic server is used. The whole context of the runnable is transferred during a number of subsequent hyperperiods. It is worth stressing that the maximal migration time can be computed statically, since the runnable context size and the periodic server time slot length and period are known. After this time, it is safe to start executing <emphasis>&#x03C4;<subscript>j</subscript></emphasis> on <emphasis>&#x03C0;<subscript>b</subscript></emphasis> and remove its copy in <emphasis>&#x03C0;<subscript>a</subscript></emphasis>.</para>
<para>To guarantee schedulability of runnables, one of the schedulability tests, described for example in [<link linkend="bib42">42</link>], shall be applied. It is possible to calculate the longest possible time interval between the release of runnable <emphasis>&#x03C4;<subscript>i</subscript></emphasis> and its termination, which is referred as <emphasis>&#x03C4;<subscript>i</subscript></emphasis>&#x2019;s worst case response time (WCRT) and is represented by <emphasis>R<subscript>i</subscript></emphasis>. The schedulability analysis is performed in the way described in [<link linkend="bib9">9</link>], i.e., by checking whether WCRTs of all runnables do not exceed their deadlines. WCRT of runnable <emphasis>&#x03C4;<subscript>i</subscript></emphasis> can be computed using equation:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-3.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>hp</emphasis>(<emphasis>&#x03C4;<subscript>i</subscript></emphasis>) denotes the set of all runnables that can preempt <emphasis>&#x03C4;<subscript>i</subscript></emphasis>, <emphasis>C<subscript>i</subscript></emphasis> and <emphasis>C<subscript>j</subscript></emphasis> are the worst case execution time of <emphasis>&#x03C4;<subscript>i</subscript></emphasis> and <emphasis>&#x03C4;<subscript>j</subscript></emphasis>, respectively, and <emphasis>T<subscript>j</subscript></emphasis> denotes the period of <emphasis>&#x03C4;<subscript>j</subscript></emphasis>. Similarly, the worst case latency <emphasis>r<subscript>k</subscript></emphasis> of packet <emphasis>&#x03D5;<subscript>k</subscript></emphasis> transmitted over a link in a mesh NoC with wormhole switching, issued periodically every <emphasis>t<subscript>k</subscript></emphasis>, can be formulated in a similar manner as that of [61, 100, 122]:</para>
<fig id="fig5_7" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 5.7</label>
<caption><title>Tasks&#x2019; stages in DemoCar: green &#x2013; runnable execution, red &#x2013; write to labels; release times and deadlines are provided in ms.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig5_7.jpg" mime-subtype="jpeg"/>
</fig>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-4.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>c<subscript>k</subscript></emphasis> is a basic network latency, <emphasis>b<subscript>k</subscript></emphasis> is the maximal blocking time from lower-priority packages, and <emphasis>l<subscript>k</subscript></emphasis> is the maximal blocking time due to interference with higher-priority packets. The basic network latency can be computed with the following equation [61, 100]:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-5.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>d<subscript>R</subscript></emphasis> and <emphasis>d<subscript>L</subscript></emphasis> denote the constant packet latencies while traversing one router and one link, respectively, <emphasis>PS</emphasis> is the number of bits in the package, and <emphasis>FS</emphasis> is the flit length in bits. <emphasis>H</emphasis> is the hop number between source and destination cores. The remaining terms of Equation (5.4) can be computed with equations [61, 100]:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-6.jpg" mime-subtype="jpeg"/></para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-7.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>interf</emphasis>(<emphasis>&#x03D5;<subscript>k</subscript></emphasis>) denotes the direct interference set of <emphasis>&#x03D5;<subscript>k</subscript></emphasis>, which is the set of all packets that can preempt <emphasis>&#x03D5;<subscript>k</subscript></emphasis>, i.e., have a higher priority and share at least one link with <emphasis>&#x03D5;<subscript>k</subscript></emphasis>. The response time of task <emphasis>&#x03C4;<subscript>i</subscript></emphasis> that releases <emphasis>&#x03D5;<subscript>k</subscript></emphasis>, <emphasis>R<subscript>i</subscript></emphasis>, has been substituted as a maximum release jitter. The term (<emphasis>r<subscript>l</subscript></emphasis> &#x2212; <emphasis>c<subscript>l</subscript></emphasis>) is an upper bound of indirect interference [<link linkend="bib61">61</link>].</para>
<para>By applying Equations (5.3) and (5.4), both schedulabilities of independent runnables executed on processing cores and packet transmissions can be verified. However, jobs in the considered applications, possibly executed on different cores, are characterised with various dependency patterns. Typically, to start a job execution it is required to have all its parent jobs executed (which contributes to so-called <emphasis>computation latency</emphasis>) and all the necessary data transferred to the core where this job is assigned to (<emphasis>communication latency</emphasis>).</para>
<para>The goal is thus to establish whether all task-chains of an application have their end-to-end deadlines met in a particular platform, and this assessment is referred as <emphasis>end-to-end schedulability test</emphasis>. Such test must consider the endto-end latency of each task of a <emphasis>task-chain</emphasis>. To check schedulability of a task chain, it is sufficient and necessary to test the individual end-to-end response times of all tasks belonging to that chain [<link linkend="bib73">73</link>]. In [<link linkend="bib73">73</link>], a technique for endto-end schedulability analysis is proposed, but it assumes a pipelined task execution pattern, where multiple jobs of the same task chain are executed simultaneously over different cores, but the simultaneous execution of more than one job of the same task is not allowed. When the execution pattern does not follow this scheme, meeting end-to-end deadlines can be checked by assigning an appropriate local deadline for each job in every chain. These local deadlines shall be chosen in a way that all the jobs on every core are schedulable and the local deadlines at the chain last stage do not exceed the respective end-to-end deadline [<link linkend="bib59">59</link>].</para>
<para><emphasis role="strong">Example 6</emphasis> <emphasis>(continuation of Example 5) In DemoCar, each task is composed with series of three subsequent stages: read from labels, runnable execution, write to labels. Since the labels are always located in the same core as that of runnable reading these labels, the read stage can be omitted and two remaining stages are presented in <link linkend="fig5_7">Figure 5.7</link> for all tasks, highlighted in green and red. Runnables belonging to one task and drawn one above the other can be executed in parallel, whereas the execution order of the runnables follows dependencies defined by label write and read operations so that each label is to be written by a runnable prior to be read by another runnable. The endto-end deadline has been divided into number of stages in each task and in that way deadlines for each stage have been determined</emphasis> (<emphasis>in <link linkend="fig5_7">Figure 5.7</link> these deadlines are written beneath the end point of each stage</emphasis>)<emphasis>.</emphasis></para>
<para><emphasis>For example, the release time of runnable</emphasis> ThrottleCtrl <emphasis>is 2ms. By this time, all the packets with label values required by this runnable are assumed to arrive at the node executing</emphasis> ThrottleCtrl<emphasis>. The deadline for this runnable execution is 3 ms, so the WCRT (</emphasis><emphasis>R<subscript>i</subscript></emphasis><emphasis>) must not be higher than this value. The packages with data are then issued between 2 ms (the runnable release time) and</emphasis> <emphasis>R<subscript>i</subscript></emphasis><emphasis>. They have to reach their destination nodes earlier than 4 ms.</emphasis></para>
<para><emphasis>To check schedulability of DemoCar, it is then sufficient to check schedulability for runnables executed in all (green) stages and also data transfers to and from labels performed in the appropriate (red) stages.</emphasis></para>
<para>Since the earliest execution starting time of each runnable is limited by the starting time of the stage including particular runnable, this stage starting time can be treated as an offset <emphasis>O<subscript>i</subscript></emphasis> as described in [<link linkend="bib143">143</link>]:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-8.jpg" mime-subtype="jpeg"/></para>
<para>Using similar rationale, Equations (5.4) and (5.7) can be rewritten in the following way:</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-9.jpg" mime-subtype="jpeg"/></para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq5-10.jpg" mime-subtype="jpeg"/></para>
<para>where term (<emphasis>r<subscript>k</subscript></emphasis> &#x2212; <emphasis>O<subscript>i</subscript></emphasis>) reflects an additional jitter imposed by the response time of task <emphasis>R<subscript>i</subscript></emphasis> that initiates this transfer and <emphasis>O</emphasis><subscript>i&#x2032;</subscript> denotes an offset of the task that releases <emphasis>&#x03D5;<subscript>l</subscript></emphasis>. One more requirement has to be added to set <emphasis>inter f</emphasis>(<emphasis>&#x03D5;<subscript>k</subscript></emphasis>). It includes not only packets having a higher priority and transferred via a path sharing at least one link, but also timing boundaries of both their sender executions or traffic stages have to overlap.</para>
<para>As mentioned earlier, the proposed task mapping technique aims to benefit from a modal nature of applications, but it also possess new challenges. If the modes are treated independently from each other, the end-to-end schedulability of runnables and packet transmission in each mode can be analysed using Equations (5.8) and (5.9). It is the instant of transition between these modes that requires special attention. The task migration time can be computed with Equations (5.5), (5.6), (5.9), (5.10), where the packet size, <emphasis>PS</emphasis>, is equal to the sum of the header length and the size of the payload including the whole context of runnables and labels to be migrated. If a relatively large runnable is to be migrated in a highly utilised platform, performing the migration when the next job of the runnable is due to start could require rather high bandwidth in order not to violate any deadlines. Thus we assume to use the precopy strategy, as described in [<link linkend="bib109">109</link>]. The job is executed in its current (source) location during the mode switching, until all the runnables have been migrated to their new (destination) locations. Then the migrated runnables are removed from the source location, and their next execution will be performed in their destination locations. If a runnable is of combinational nature (its outputs depend solely on input values; all DemoCar runnables have this property), only the runnable code section is to be migrated. In case of a sequential nature of a runnable, the whole context is to be migrated.</para>
<para>Similarly to [<link linkend="bib98">98</link>], we split a runnable context intro two parts: invariant, which is not modified at runtime, and dynamic, including all volatile memory locations. We assume that an upper bound of the dynamic part size of all runnables is known in advance. This part shall be migrated at once using the last instance of the periodic server. It means that the local memory locations that can be modified by the runnable must not be precopied, but migrated after the last execution of the runnable in the old location. This requirement can influence the minimum periodic server size and, consequently, the network bandwidth, as it must be then wide enough to guarantee migration of dynamic part before the next runnable execution (in the new location). This property shall be checked using (5.9).</para>
<para>In the proposed approach, any kind of periodic servers can be used, however, the trade-off between implementation complexity and ability to guarantee the deadlines of hard real-time tasks, as described for example in [<link linkend="bib40">40</link>], shall be considered.</para>
<para> The number of the hyperperiods required for performing task migration depends on the size of runnables and labels to be transferred, mappings, and network bandwidth, in particular flit size <emphasis>FS</emphasis> and timing constants for packet latencies while traversing one router and one link <emphasis>d<subscript>R</subscript></emphasis> and <emphasis>d<subscript>L</subscript></emphasis>.</para>
<para><emphasis role="strong">Example 7</emphasis> <emphasis>(continuation of Example 6) The flit size,</emphasis> <emphasis>FS</emphasis><emphasis>, has been fixed to 16 bits. A few examples of the number of hyperperiods required to migrate tasks from</emphasis> PowerUp <emphasis>to</emphasis> Cluster_1<emphasis>, depending on constants</emphasis> <emphasis>d<subscript>R</subscript></emphasis> <emphasis>and</emphasis> <emphasis>d<subscript>L</subscript></emphasis> <emphasis>are presented in <link linkend="tbl5_1">Table 5.1</link>. The hyperperiod length for DemoCar equals 100 ms and this time is enough to migrate all data when the router and link latencies are equal to 50 and 100 ns, respectively.</emphasis></para>
</section>
<section class="lev2" id="sec5-2-6">
<title>5.2.6 On-Line Steps</title>
<para>In the proposed approach, only two steps are performed on-line: <emphasis>Detection of current mode</emphasis> and <emphasis>Mapping switching</emphasis>. Both of these steps are characterised with low computational complexity and thus they impose low overhead for the system during run time.</para>
<para>We assume that the system states are defined explicitly and there is a possibility of determining the current state by observing some system model variables, similarly to [<link linkend="bib104">104</link>]. Otherwise, the most efficient multi-choice knapsack problem (MMKP) heuristics, listed in the brief survey earlier, have to be applied to identify the current mode on-line, as proposed in [<link linkend="bib73">73</link>].</para>
<para>When the mode change is requested, an agent residing in each core prepares a set of packages with runnables to be migrated via the network. This agent is configured statically and is equipped with a table with information which runnables have to be migrated during a particular mode change. Then the precopy of these runnables is performed. In the following hyperperiods, runnables are transported using periodic servers of the length determined statically in step <emphasis>Schedulability analysis for taskset during mode change</emphasis>. The agent is aware of the number of periodic server instances that have to be used during the whole migration process (as in example in <link linkend="tbl5_1">Table 5.1</link>), and have the volatile portion of the context identified. If this instance number elapses, the runnables that have been migrated are killed.</para>
<table-wrap id="tbl5_1">
<label>Table 5.1</label>
<caption><title>Number of hyperperiods (100 ms) required for switching between states <emphasis>PowerUp</emphasis> to <emphasis>Cluster 1</emphasis> in DemoCar depending on router (<emphasis>d<subscript>R</subscript></emphasis>) and one link latencies (<emphasis>d<subscript>L</subscript></emphasis>)</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl5_1.jpg" mime-subtype="jpeg"/>
</table-wrap>
<para>Simultaneously, the same agent can receive migration data from other agents in the network. After the appropriate number of hyperperiods, the contexts of these runnables are fully migrated and are ready to be executed by the operating system.</para>
<para>The details of the agent depend on the underlying operating system.</para>
</section>
</section>
<section class="lev1" id="sec5-3">
<title>5.3 Related Works</title>
<para>Systems with distinguishable operating modes are increasingly popular in research. A number of research activity aims at developing design-time (off-line) heuristics to reduce the number of operating points, since the amount of possible scenarios is typically prohibitively high [<link linkend="bib89">89</link>]. This Design Space Exploration (DSE) process can be carried out using classic heuristic techniques (including genetic algorithms [73, 89, 116], tabu search [<link linkend="bib115">115</link>], simulated annealing [<link linkend="bib160">160</link>], particle swarm optimization [<link linkend="bib103">103</link>], etc.), or with techniques for pruning the design space [<link linkend="bib107">107</link>], performing statistical analysis for identifying potentially benefiting operating points, or use a priori knowledge of the target platform [<link linkend="bib14">14</link>]. Then during run-time of that system, a run-time manager (RTM) chooses an appropriate operating point according to the available platform resources by solving an instance of multi-dimensional multi-choice knapsack problem (MMKP). Despite MMKP belongs to the NP-hard complexity class, there exists a number of light-weight greedy heuristics facilitating finding a quasi-optimal mapping during run-time [<link linkend="bib73">73</link>]. Alternatively, in [<link linkend="bib104">104</link>], there is a possibility of determining the current mode out of explicitly given set by observing some variables of the model. In our work, the current mode is determined in a similar way.</para>
<para>Two different mapping approaches are proposed in [<link linkend="bib119">119</link>]. In the first one, named global static power-aware mapping, each task is assigned to one particular processing element independently from the actual scenario. This approach reduces the amount of memory required for storing the configurations and increases the efficiency of run-time management. However, it results in increased power consumption in comparison with the second approach, dynamic power-aware scenario-mapping, where this assumption is relaxed and different mappings for scenarios are stored. These approaches do not allow task migration &#x2013; once a task is assigned to a processing element, it remains there until finishing its computation. In contrast, Benini et al. [<link linkend="bib15">15</link>] allowed tasks to migrate between processing elements when the envisaged performance increase is higher than the precomputed migration cost. This analysis is performed at each instance of configuration change.</para>
<para>In order to analyse the worst case switching time between two modes, it is helpful to show the possible modes and transition between them in a formal way, using for example Finite State Machines (FSMs), as proposed in [<link linkend="bib118">118</link>]. In this way it is possible to enumerate all allowed modes and transitions, and to check the cost of mode switchings. In [<link linkend="bib55">55</link>], an average switching time overhead for H.264 decoder has been measured to be equal to 0.2% of the total system time. This sligh value has been caused by a low number of existing modes, obtained due to the clustering, and thus relatively rare switches. In hard real-time systems such decrease of modes by clustering is even more crucial and thus it is incorporated in the proposed design flow. In [<link linkend="bib137">137</link>], the authors suggest to map as many tasks as possible to the same core in various modes to avoid the data or code items to be moved between different resources when switching between modes. In the proposed approach, we use a genetic algorithm to minimize the amount of data to be migrated.</para>
<para>To perform a schedulability analysis during mode changes, the data migration work is performed during time slots allocated to a periodic server. There exist different kinds of such servers, including <emphasis>polling servers</emphasis>, <emphasis>sporadic servers</emphasis> and <emphasis>deferrable servers</emphasis>, with different replenish policies of server execution time [<link linkend="bib40">40</link>]. Despite these differences, their period and maximum execution time during one period are selected in a way that the chosen endto-end scheduling test proves that no deadline is violated. To decrease the timing of best-effort (i.e., migration) task execution, the <emphasis>best-effort bandwidth server</emphasis> includes a slack reclaiming procedure and an algorithm for determining appropriate server parameters [<link linkend="bib11">11</link>]. An example of a direct application of <emphasis>synchronized deferrable servers</emphasis> for multi-core systems has been demonstrated in [<link linkend="bib159">159</link>], but its authors assumed the migration cost to be either negligible, or added to the worst-case execution time of each task, which is difficult to be applied in systems with network architecture prone to contentions. In the proposed approach, more realistic migration time is evaluated, taking into account network parameters and interference from other flows.</para>
<para>In [<link linkend="bib20">20</link>], it was experimentally shown that even a total freezing task migration strategy, i.e., where the migrated task is stalled while all its code and data are transferred through links to the target core, can be used in a NoC-based environment and still improve the fulfilment of task deadlines in soft real-time systems. To guarantee hard timing constraints, freeze time should be bounded and possibly short. One of the possible techniques is a precopy strategy, where code and data of some tasks are copied before the actual switching. However, this technique is more complicated than total freezing and has higher migration time, as some data portions may be required to be copied more than once due to their modifications [<link linkend="bib93">93</link>]. Storing task code in a few cores and transferring only the necessary data is another possibility. However, in doing so, the storage overhead at each core can increase by a large amount.</para>
<para>A method to guarantee hard real-time for task migration is proposed in [<link linkend="bib98">98</link>]. However, a costly schedulability analysis is performed during runtime. No experiments supporting their proposed approach is provided, but one may predict that the overload of that dynamics could be considerable.</para>
<para>The research described in [<link linkend="bib104">104</link>] is the closest to the approach proposed in this chapter. Its authors have identified mode transition points in an engine management system, and shown that a load distribution by mode-dependent task allocation is better balanced in comparison with a static task allocation. The performance has been evaluated by simulation, but, contrary to our approach, the task migration costs have not been considered.</para>
<para>From the literature survey it follows that designing real-time systems with distinguishable operating modes has been mainly limited to soft timing constraints. According to the authors&#x2019; knowledge, there is no proposal of any method guaranteing no hard deadline violation during task migrations. In particular, schedulability analysis has not been applied to check the feasibility of task migration process or to determine the worst case switching time between two operating modes except of the positional paper [<link linkend="bib98">98</link>].</para>
</section>
<section class="lev1" id="sec5-4">
<title>5.4 Summary</title>
<para>An approach of task migration in a multi-core network-based embedded system has been proposed as a way to decrease the number of cores needed for guaranteing safe execution of a hard real-time software. The steps to be performed statically have been described in details using illustrative examples based on a lightweight engine control unit. A Finite State Machine describing mode changes has been extracted from the software code and transaction probabilities have been identified during simulation. The closely related modes have been merged into clusters. The most frequent transactions have been identified with the classic Prim&#x2019;s algorithm, and a genetic algorithm has been used to determine the runnable-to-core mapping for the initial mode. Similarly, a genetic algorithm minimizing the number of migrated data has been used for selecting the runnables to be migrated when a change of the current mode is requested. The migration time has been evaluated using schedulability analysis depending on the network bandwidth.</para>
<para>The proposed approach requires development of an agent realising the migration process. Since its architecture details depend on the underlying operating system, its implementation and evaluation in real embedded environments are planned as a future work.</para>
</section>
</chapter>
<chapter class="chapter" id="ch06" label="6" xreflabel="6">
<title>Swarm Intelligence Algorithms for Dynamic Task Reallocation</title>
<para>The resource allocation mechanisms discussed so far in this book have some features in common: they have (some) a priori knowledge about the application load they are managing, and they are executed in a centralised or hierarchical manner. In this chapter, we explore an approach that does not require explicit information about application load, and that is able to make decisions about resource allocation in a distributed fashion. To better motivate such an approach, let us consider a concrete case study.</para>
<para>Multimedia applications such as video and audio processing are among the most communication and computation-intensive tasks performed by current embedded, high-performance and cloud systems. Hardware platforms with hundreds of cores are now becoming a preferred target for such applications [<link linkend="bib138">138</link>], as the computational load in video decoding can be parallelised and distributed across the different processing elements on the chip to minimise metrics such as overall execution time, power or even temperature.</para>
<para>An important design constraint in such systems is performance predictability. There is plenty of evidence showing that inconsistent performance in video decoding applications can lead to reduced user engagement [<link linkend="bib46">46</link>]. However, the task of predictably manage multimedia load is not trivial. Video decoding execution times vary greatly depending on the spatial and temporal attributes of the video [<link linkend="bib63">63</link>]. Furthermore, when decoding multiple streams of live video (e.g., multipoint video conferencing, multi-camera real-time video surveil-lance, multiple view object detection), the workload characteristics became increasingly dynamic and thus difficult to model. Thus, efficient resource allocation is critical in achieving load balance, power/energy minimisation and latency reduction [<link linkend="bib43">43</link>].</para>
<para>Centralised resource management with a master-slave approach, for instance, is a straightforward way to approach this problem, and is probably good enough for small systems, but there are many issues that appear as one scales up the amount of load to be handled [4, 127]. Cluster based resource management techniques have been introduced (e.g., [<link linkend="bib69">69</link>]) to overcome the limitations of centralised systems by partitioning the system resources and employing multiple cluster managers. Despite those efforts, the complexity of dynamic applications and the avaliability of distributed large-scale multiprocessor systems motivate the investigation of fully-distributed, autonomous self-organising/optimising mechanisms [21, 97, 145]. Such systems should be able to adapt or optimize itself to changing workload and internal conditions and to recover from faults. Many of these systems implement self-management features by autonomously controlling and adapting task allocation and resource management at runtime.</para>
<para>As a basis for a distributed resource allocation approach, this chapter focuses on the behaviour of biological systems. More specifically, we study the swarm intelligence phenomenon, where the individual decisions made by the members of a swarm in a distributed manner can result in a global behaviour that is beneficial to the whole group. By applying such approach to the management of multi-stream video processing load, we hope to show its potential and to hint on its applicability to similar kinds of resource management problems.</para>
<section class="lev1" id="sec6-1">
<title>6.1 System Model and Problem Formulation</title>
<section class="lev2" id="sec6-1-1">
<title>6.1.1 Load Model</title>
<para>We consider a load model (<link linkend="fig6_1">Figure 6.1</link>) consisting of workflows which resemble a container for parallel video stream decoding requests that may arrive at arbitrary times, but respecting a specified inter-arrival time. Such load model is general enough to describe systems handling a time-varying number of parallel video decoding streams. A video stream consists of an arbitrary number of <emphasis>N</emphasis> independent jobs. Each job (<emphasis>J</emphasis><subscript>i</subscript>) represents a MPEG group of pictures (GoP), and is modelled via a fixed dependency task-graph, and takes the structure defined in <link linkend="fig6_1">Figure 6.1</link>. Each node in the task-graph is a MPEG-2 frame-level decoder task, and has fixed precedence constraint and communication flow shown via the graph edges. A decoder task can only start execution <emphasis>iff</emphasis> its predecessor(s) have completed execution and their output data is available. A decoder task <emphasis>&#x03C4;</emphasis><subscript>i</subscript> is characterised by the following tuple: (<emphasis>p</emphasis><subscript>i</subscript>, <emphasis>t</emphasis><subscript>i</subscript>, <emphasis>x</emphasis><subscript>i</subscript>, <emphasis>c</emphasis><subscript>i</subscript>, <emphasis>a</emphasis><subscript>i</subscript>); where <emphasis>p</emphasis><subscript>i</subscript> is the fixed priority, <emphasis>t</emphasis><subscript>i</subscript> is the period, <emphasis>x</emphasis><subscript>i</subscript> is the actual execution time, <emphasis>c</emphasis><subscript>i</subscript> is the worst-case computation cost and <emphasis>a</emphasis><subscript>i</subscript> is the arrival time of the decoder task <emphasis>&#x03C4;</emphasis><subscript>i</subscript>. Decoder tasks are preemptive and have a fixed priority. Tasks within a job are assigned fixed mapping and priorities at the start of the video stream; these exact assignments are used for all tasks of all subsequent jobs in a video stream. Tasks of low resolution video streams are given higher priority over high-resolution video streams, to ensure low-resolution video streams have a lower response-time.</para>
<fig id="fig6_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.1</label>
<caption><title>System overview diagram.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>The spatial resolution of a video stream will correspond directly to the computation cost of the task and the payload of the message flows generated by those tasks. The exact execution time of the tasks are unknown in advance; however, it is assumed that the worst-case computation cost can be estimated. Subtask deadlines are unknown but each job is considered schedulable if it completes execution within its end-to-end deadline (<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/j.jpg" mime-subtype="jpeg"/> &#x2264; <emphasis>D</emphasis><subscript>e2e</subscript>). The response-time of a job (denoted <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/j.jpg" mime-subtype="jpeg"/>) is the arrival time of the job to the point in time which all of its subtasks have completed execution. A job is considered late when (<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/j.jpg" mime-subtype="jpeg"/> &#x2212; <emphasis>D</emphasis><subscript>e2e</subscript>) <emphasis>&#x003E;</emphasis> 0 and late jobs impact the viewing quality of experience (QoE) of the real-time video stream. We assume that the arrival rate of jobs are sporadic, and the arrival pattern of new video decoding streams are aperiodic.</para>
<para>Once a task has completed execution, its output (i.e., the decoded frame data) is immediately sent as a message flow to the processing element executing its successor child tasks, as well as to a buffer in main memory. Message flows inherit the priority of their source tasks, with an added offset to maintain unique message flow priorities.Amessage flow, denoted by <emphasis>Msg</emphasis><subscript>i</subscript> is characterised by the following tuple: (<emphasis>P</emphasis><subscript>i</subscript>, <emphasis>T</emphasis><subscript>i</subscript>, <emphasis>PL</emphasis><subscript>i</subscript>, <emphasis>C</emphasis><subscript>i</subscript>); where <emphasis>P</emphasis><subscript>i</subscript> is the priority, <emphasis>T</emphasis><subscript>i</subscript> is the period, <emphasis>PL</emphasis><subscript>i</subscript> is the size of the message payload and <emphasis>C</emphasis><subscript>i</subscript> is the maximum no-load latency of message flow <emphasis>Msg</emphasis><subscript>i</subscript>, which can be calculated a priori and usually depends on the topology of the multiprocessor interconnect and on the total size of the message (i.e., payload plus headers and other overheads).</para>
</section>
<section class="lev2" id="sec6-1-2">
<title>6.1.2 Platform Model</title>
<para>The multiprocessor platform we target in this chapter is composed of <emphasis>P</emphasis> homogeneous processing elements (PEs) connected by a Network-on-Chip (NoC) interconnect. Each PE has a local scheduler that handles a task-queue which is contained within its local memory. The PEs are directly connected to the NoC switches which route data packets towards any destination PE. We assume the NoC in our platform model uses fixed priority preemptive arbitration, has a 2D mesh topology and uses a deterministic routing algorithm such as in [<link linkend="bib19">19</link>].</para>
<para>In such a platform, the no-load latency <emphasis>C</emphasis><subscript>i</subscript> of a message flow as given in Equation (6.1) includes the hop-distance and the number of data units (i.e., header and payload flits).</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq6-1.jpg" mime-subtype="jpeg"/></para>
<para>We assume that the NoC link arbiters can preempt packets when higher-priority packets request the output link they are using. This makes it easier to predict the outcome of network contention for specific scenarios. We assume all inter-PE communication occurs via the NoC by passing messages. Once a task is released from a global input buffer, it is sent to the task queue of the assigned PE. The PE upon completing a tasks execution, transmits its output to the appropriate PEs dependency buffer. Once a task has completed, the local scheduler picks the next task with the highest priority with dependencies fulfilled, to be executed next. The resource manager (RM) of the system (<link linkend="fig6_1">Figure 6.1</link>), performs <emphasis>initial task mapping</emphasis> and priority assignment and <emphasis>task dispatching</emphasis> to the PEs. It also maintains a task-to-PE mapping table of the jobs of every admitted and active video stream in the system. The mapping table is essentially a hash-table where keys are task-identifiers and values are node-identifiers. In this chapter, the terms <emphasis>RM</emphasis> and <emphasis>dispatcher</emphasis> are interchangeable as task dispatching is a functionality of the RM. The main responsibility of the RM is to make initial mapping decisions for new video streams, and to dispatch tasks to the mapped PEs according to the task-to-PE mapping table. Most importantly, the system is open-loop as the RM does not gather monitoring information from the PEs.</para>
</section>
<section class="lev2" id="sec6-1-3">
<title>6.1.3 Problem Statement</title>
<para>In a centralised closed-loop system, PEs would continuously feedback the state of the tasks they were allocated (e.g., their completion time) to a central manager via status message flows. The central manager would then have global knowledge of the system in order to make efficient resource management decisions for future workloads. As discussed in [4, 127], these advantages come at the price of higher communication traffic, congestion hot-spots, higher probability of failure, and bottlenecks around the centralised manager. Furthermore, such issues are made worse as the NoC size and workload increase.</para>
<para>Cluster-based distributed management approaches can offer a certain degree of redundancy and scalability by varying the number of clusters and respectively local cluster managers. However, appropriate cluster size selection is vital to balance communication-overhead/performance; for example, cluster monitoring message flow routes and the cluster manager processing overhead will increase as the cluster size increases. Furthermore, the local cluster managers are still points of failure in the system, where if one of them fails the respective cluster of nodes will severely degrade in performance.</para>
<para>Fully distributed approaches offer higher levels of redundancy and scalability over cluster based approaches for large scale systems, due to not having any central management nodes. However, due to the lack of global knowledge and no monitoring being performed by a centralised authority, the system may be load-unbalanced, and cause jobs to miss their deadlines and become late. To reduce this job lateness of the admitted dynamic varying workload, we follow a bio-inspired distributed task-remapping technique with self-organising properties. This technique builds upon existing bio-inspired load balancing approaches by Caliskanelli et al. [<link linkend="bib30">30</link>] and Mendis et al. [<link linkend="bib91">91</link>].</para>
</section>
</section>
<section class="lev1" id="sec6-2">
<title>6.2 Swarm Intelligence for Resource Management</title>
<section class="lev2" id="sec6-2-1">
<title>6.2.1 Ps &#x2013; Pheromone Signalling Algorithm</title>
<para>A distributed load-balancing algorithm based on the pheromone signalling mechanism used by honey bees has been introduced in [<link linkend="bib30">30</link>]. That algorithm, henceforth referred to as the <emphasis>PS algorithm</emphasis>, was originally developed to improve availability in wireless sensor networks but has features that make it attractive as a general load balancing approach. It is based on the concept of queen nodes (QN) and regular nodes (WN) in a network, drawing inspiration from queen bees and worker bees. The algorithm mimics the process of pheromone propagation by queen bees, which by doing so prevent the birth of new queens. If a queen dies or leaves the hive, the pheromone levels decay and worker bees are then triggered to feed larvae with royal jelly and thus differentiate one of them into becoming the new queen. Perhaps counter-intuitively, the PS algorithm uses the pheromone signalling process to select queen nodes that will be allocated workload (there can be many queens in a system), while worker nodes are not allocated any load unless they become queens themselves (which is a completely different behaviour from the biological system that inspired the approach). QNs are dynamically differentiated from other nodes to indicate they are ready to handle a workload, and the aim of the algorithm is to produces sufficient QNs to handle all the required system functionality.</para>
<para>The algorithm is based on the periodic transmission of pheromone by QNs, and its retransmission by receipients to their neighbours. The pheromone level at each node decays with time and with distance to the source. All nodes accumulate pheromone received from QNs, and if at a particular time the pheromone level of a node is below a given threshold this node will differentiate itself into a QN. This typically happens when this node is too far from other QNs. The PS algorithm consists of three phases, which are executed asynchronously on every node of the network: two of them are time-triggered (differentiation cycle and decay of pheromone) and one of them is event-triggered (propagation of received pheromone).</para>
<para>The first time-triggered phase, referred to as the differentiation cycle (<link linkend="alg6_1">Algorithm 6.1</link>), is executed by every node of the network every <emphasis>T</emphasis><subscript>QN</subscript> time units. On each execution, the node checks its current pheromone level <emphasis>h</emphasis><subscript>i</subscript> against a predefined level <emphasis>Q</emphasis><subscript>TH</subscript>. The node will differentiate itself into QN (or maintain its QN status) if <emphasis>h</emphasis><subscript>i</subscript> <emphasis>&#x003C; Q</emphasis><subscript>TH</subscript>, otherwise it will become a WN. If the node is a QN, it then transmits pheromone to its network neighbourhood to make its presence felt. Each pheromone dose <emphasis>hd</emphasis> is represented as a two-position vector. The first element of the vector denotes the distance in hops to the QN that has produced it (and therefore is initialised as 0 in line 4 of <link linkend="alg6_1">Algorithm 6.1</link>). The second element is the actual dosage of the pheromone that will be absorbed by the neighbours.</para>
<fig id="alg6_1">
<label>Algorithm 6.1</label>
<caption><title>Ps Differentiation Cycle</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg6_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>The event-triggered phase of PS deals with the propagation of the pheromone released by QNs (as described above in the differentiation cycle) and received at neighbouring nodes. The purpose of propagation is to extend the influence of QNs to nodes other than their directly connected neighbours. Propagation is not a periodic activity, and happens every time a node receives a pheromone dose. Its pseudocode appears in <link linkend="alg6_2">Algorithm 6.2</link>. Upon receiving a pheromone dose, a node checks whether the QN that has produced it is sufficiently near for the pheromone to be effective. It does that by comparing the first element of the vector <emphasis>hd</emphasis> with a predefined <emphasis>threshold</emphasis><emphasis>hopcount</emphasis>. If the <emphasis>hd</emphasis> has travelled more hops than the threshold, the node simply discards it. If not, it adds the received dosage of the pheromone to its own pheromone level <emphasis>h</emphasis><subscript>i</subscript> and propagates the pheromone to its neighbourhood. Before forwarding it, the node updates the <emphasis>hd</emphasis> vector element by incrementing the hop count, and by multiplying the dosage by a decay factor 0 <emphasis>&#x003C; K</emphasis><emphasis>hopdecay</emphasis> <emphasis>&#x003C;</emphasis> 1. This represents pheromone transmission decaying with distance from the source. <link linkend="fig6_2">Figure 6.2</link> shows four WNs connected to a QN and retransmitting a lower dose of pheromone to their neighbours.</para>
<para>The second time-triggered phase of the algorithm, shown in <link linkend="alg6_3">Algorithm 6.3</link> is a simple periodic decay of the local pheromone level of each node. Every <emphasis>T</emphasis><emphasis>decay</emphasis> time units, <emphasis>h</emphasis><subscript>i</subscript> is multiplied by a decay factor 0 <emphasis>&#x003C; K</emphasis><emphasis>timedecay</emphasis> <emphasis>&#x003C;</emphasis> 1. It can be easily inferred from the PS differentiation cycle that each node makes its own decision on whether and when it becomes a QN by referring to local information only: its own pheromone level <emphasis>h</emphasis><subscript>i</subscript>. This follows the principles of swarm intelligence, where decisions are based on local information and interactions within a small neighbourhood.</para>
<para>The computational complexity of the PS algorithm is very low, as each of the phases is a short sequence of simple ALU operations. The communication complexity, which in turn determines how often the PS propagation step is executed, depends on the connectivity of the network and on the <emphasis>T</emphasis><emphasis>decay</emphasis> parameter. The protocol also provides a stability property, in that a lone node with no peers will become and always remain a queen node after a given delay, unlike in other distributed resource management approaches where nodes may be probabilistically deactivated for some intervals.</para>
<fig id="alg6_2">
<label>Algorithm 6.2</label>
<caption><title>Ps Propagation Cycle</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg6_2.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig6_2" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.2</label>
<caption><title>Ps Pheromone Propagation</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_2.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="alg6_3">
<label>Algorithm 6.3</label>
<caption><title>Ps Decay Cycle</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg6_3.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec6-2-2">
<title>6.2.2 Psrm &#x2013; Pheromone Signalling Supporting Load Remapping</title>
<para>The PS algorithm described in the previous subsection can be used as a general-purpose load balancing approach. Given a set of parameters, it will converge to a set of QNs that will then serve the system workload as it arrives. Once a QN becomes fully utilized, it can simply decide not to be a QN anymore. By stopping pheromone propagation, its neighbours&#x2019; pheromone levels will reduce over time due to the decay phase of the algorithm, until one or more will have their levels below the threshold and will differentiate themselves into QNs. The new QNs will then be ready to handle new workload as it arrives.</para>
<para>In this subsection, we explore another possibility: using the PS algorithm to handle load remapping. In this case, it enables distributed resource allocation to optimise a centralised allocation mechanism which may not be fully aware of the state of each resource. Such variation of the PS algorithm has been applied to the problem of dynamically allocating video streams to a NoC-based platform, as described in Section 6.1.</para>
<para><link linkend="alg6_4">Algorithm 6.4</link> shows extensions made to the original PS differentiation cycle, aiming to support the remapping functionality. In the original algorithm, <emphasis>Q</emphasis><subscript>TH</subscript> is fixed as a parameter of the algorithm. In this case, <emphasis>Q</emphasis><subscript>TH</subscript> is dynamically adjusted depending on the workload mapped on the resource (namely, the PE connected to the NoC). The <emphasis>cumulative slack</emphasis> of the tasks mapped on the PE is used to vary the QN threshold <emphasis>Q</emphasis><subscript>TH</subscript>, such that a node will differentiate itself into a QN if it has enough slack to accommodate additional tasks (line 4). The slack of a task is calculated as the difference between the relative deadline (<emphasis>d</emphasis><subscript>i</subscript>) and the observed response-time of the task <emphasis>r</emphasis><subscript>i</subscript>. A negative cumulative slack value indicates the PE does not have any spare capacity to take additional tasks, and hence the node is converted or remains a worker node. Line 2 in <link linkend="alg6_4">Algorithm 6.4</link> shows the calculation of the task queue (TQ) cumulative slack (<emphasis>TQ</emphasis><emphasis><subscript>Slack</subscript></emphasis>) of the mapped tasks. If <emphasis>TQ<subscript>Slack</subscript></emphasis> is positive, <emphasis>Q</emphasis><subscript>TH</subscript> is incremented by a ratio defined by <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/qt.jpg" mime-subtype="jpeg"/>; where <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/qa.jpg" mime-subtype="jpeg"/> is a parameter of the algorithm. If <emphasis>TQ</emphasis><emphasis><subscript>Slack</subscript></emphasis> is negative, then the algorithm ensures the node does not become a QN in this differentiation cycle, by setting <emphasis>Q</emphasis><subscript>TH</subscript> as a proportion of <emphasis>h</emphasis><subscript>i</subscript> as given in Line 6; here <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/qb.jpg" mime-subtype="jpeg"/> is also a parameter of the algorithm. The self-organising behaviour of the distributed algorithm (specifically the Differentiation cycle in <link linkend="alg6_4">Algorithm 6.4</link>), stabilises the number and position of the QNs in the NoC, as time progresses and depending on the workload. A node propagates pheromones immediately after it becomes a queen (line 10). We represent the pheromone dose (<emphasis>hd</emphasis>) as a four position vector containing the distance from the QN, the initial dosage (<emphasis>h</emphasis><subscript>QN</subscript> ), the position of the QN in the network (<emphasis>QN</emphasis><subscript>xy</subscript>) and a data structure (<emphasis>PE<subscript>MPTinfo</subscript></emphasis>) containing the <emphasis>p</emphasis><subscript>i</subscript> and <emphasis>c</emphasis><subscript>i</subscript> of the tasks mapped on the QN. The worker nodes will receive and store this information as the pheromones traverse through the network.</para>
<fig id="alg6_4">
<label>Algorithm 6.4</label>
<caption><title>Psrm Differentiation Cycle</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg6_4.jpg" mime-subtype="jpeg"/>
</fig>
<para>Now that the extension to PS has been introduced, let us focus on its integration to a centralised mapping of video stream tasks. We assume the centralised mapping is performed according to a lowest worst-case utilisation heuristic. Once mapped, a task within a job may be late due to the PE or network route being over-utilised and/or due to the heavy blocking incurred by higher-priority tasks and flows. We then aim to change the task-to-PE mapping of late tasks, such that these causes of lateness can be mitigated. The task-remapping procedure (<link linkend="alg6_5">Algorithm 6.5</link>) is executed by each PE periodically, using only its local knowledge gathered via the pheromone doses.</para>
<para><link linkend="alg6_5">Algorithm 6.5</link> illustrates the proposed remapping procedure that utilises the adapted PS algorithm, denoted as <emphasis>PSRM</emphasis>. The following steps occur at each remapping cycle (seen in <link linkend="fig6_3">Figure 6.3</link>). Firstly the task with the maximum lateness <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tl.jpg" mime-subtype="jpeg"/> from the PE task queue, is selected as the task that needs to be remapped to a different PE (line 1). The deadline of a task (<emphasis>d</emphasis><subscript>i</subscript>) is calculated as a ratio of the end-to-end job deadline (<emphasis>D</emphasis><subscript>e2e</subscript>), as given in [<link linkend="bib65">65</link>]. Each node is aware of the nearest QNs (<emphasis>Q</emphasis><subscript>List</subscript>), and their mapped tasks, by storing the information received from each pheromone dose <emphasis>hd</emphasis>. In Lines 3&#x2013;10, the algorithm evaluates the worse-case blocking that will be experienced for the target task <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tl.jpg" mime-subtype="jpeg"/> and the number of lower priority tasks that will be blocked, by mapping it onto each <emphasis>Q</emphasis><subscript>i</subscript> &#x2208; <emphasis>Q</emphasis><subscript>List</subscript>. Once a list of QNs with lower blocking than the current blocking is obtained (lines 7&#x2013;9), they are requested (RQ) for their <emphasis>availability</emphasis> (line 11) via a low payload, high priority message flow. The QNs reply (REP) with its availability (i.e., if other worker nodes have been remapped to a QN in that remapping cycle, then the QNs&#x2019; availability is set to <emphasis>false</emphasis>). This avoids unnecessary overloading of QNs. <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tl.jpg" mime-subtype="jpeg"/> will then be remapped to the QN with the least number of lower priority tasks (denoted <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/qi.jpg" mime-subtype="jpeg"/>) from the available QN list <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/avl.jpg" mime-subtype="jpeg"/> (line 12). Finally, the task dispatcher is notified via message flow to update the task mapping table; the dispatcher looks up the task-id in the table and updates the corresponding node-id with the new remapped node-id. When the tasks of the next job of the video stream arrives into the system they will be dispatched to the node-id indicated by the updated mapping table. Therefore, remapping will only take effect from the subsequent arrival of the next job in the video stream. Even though there is an update message sent to the dispatcher at a remapping event, the remapping decision is achieved purely using local information at each PE, based on the PSRM algorithm.</para>
<fig id="alg6_5">
<label>Algorithm 6.5</label>
<caption><title>PSRM Remapping</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg6_5.jpg" mime-subtype="jpeg"/>
</fig>
<para><link linkend="fig6_4">Figure 6.4</link> illustrates an example of the remapping procedure in a 4 &#x00D7; 4 NoC. The (<emphasis>x, y</emphasis>) coordinates refer to the processing node in column x and row y. In step 1 of <link linkend="fig6_4">Figure 6.4</link>, at each remapping interval (<emphasis>T</emphasis><subscript>RM</subscript> ) each PE identifies the late tasks in their task queues; they are also aware of the position of any nearby QNs due to the pheromone signals. <emphasis>&#x03C4;</emphasis><subscript>1</subscript> and <emphasis>&#x03C4;</emphasis><subscript>2</subscript> on PE(1,0) and PE(2,2) are tasks that are late, at that time instant. In step 2, they determine the suitability of each QN to remap the late tasks to. <emphasis>&#x03C4;</emphasis><subscript>1</subscript> can either be remapped to Q(1,1) or Q(3,0); and <emphasis>&#x03C4;</emphasis><subscript>2</subscript> can be remapped on to either Q(3,2) or Q(1,1) but Q(3,2) is not suitable due to the task blocking behaviour and Q(0,3) is not in the <emphasis>Q</emphasis><subscript>List</subscript> due to distance. In step 2, the nodes request for the suitable QNs&#x2019; availability; in this instance PE(1,0) obtained a lock on Q(1,1) first. Hence, <emphasis>&#x03C4;</emphasis><subscript>1</subscript> will be remapped onto Q(1,1) and <emphasis>&#x03C4;</emphasis><subscript>2</subscript> will be remapped to Q(2,3). In step 3 the PEs notify the dispatcher via a message flow regarding the remapping. In step 4 the next job arrives and <emphasis>&#x03C4;</emphasis><subscript>2</subscript> and <emphasis>&#x03C4;</emphasis><subscript>3</subscript> are now dispatched to the new processing elements &#x2013; PE(1,1) and PE(2,3) respectively.</para>
<fig id="fig6_3" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.3</label>
<caption><title>Sequence diagram of PSRM algorithm related events. Time triggered (periodic): <emphasis>PSDifferentiation</emphasis>, <emphasis>PSDecay</emphasis> and <emphasis>Remapping</emphasis> cycles; Event triggered: <emphasis>PSPropagation</emphasis>.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_3.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig6_4" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.4</label>
<caption><title>Task remapping example. (Q = queen nodes; D = Dispatcher; [<emphasis>&#x03C4;</emphasis><subscript>1</subscript><emphasis>,&#x03C4;</emphasis><subscript>2</subscript>] are late tasks; Blue lines represent communication.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_4.jpg" mime-subtype="jpeg"/>
</fig>
<para>The performance of adaptive algorithms such as PSRM is highly dependent on the selection of a good set of parameters. Manual selection of parameters is not feasible due to the size of the search space. <link linkend="tbl6_1">Table 6.1</link> shows several important parameters obtained via a search-based parameter selection method inspired by [<link linkend="bib29">29</link>]. The parameters <emphasis>T</emphasis><subscript>QN</subscript> , <emphasis>T</emphasis><subscript>DECAY</subscript> and <emphasis>T</emphasis><subscript>RM</subscript> and their ratios play a key role in obtaining a good performance from the algorithm. The experimental results during the parameter search process show that the remapping frequency has a significant impact in accuracy and communication overhead. The relationship between these parameters have been investigated extensively in previous work [29, 30]. As a general guideline, to keep the communication overhead low, the event cycles (<emphasis>T</emphasis><subscript>QN</subscript> and <emphasis>T</emphasis><subscript>RM</subscript> ) and the QN hormone propagation range must be kept relatively low.</para>
<table-wrap id="tbl6_1">
<label>Table 6.1</label>
<caption><title>Psrm Algorithm Parameters Differenciation Cycle (<Emphasis>T</Emphasis><Subscript>Qn</Subscript> ) 0.22</title></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups" width="60%">
<tbody>
<tr>
<td>Differenciation cycle (TQ<subscript>N</subscript> )</td>
<td align="right">0.22</td>
</tr>
<tr>
<td>Decay cycle (<emphasis>T<subscript>DECAY</subscript></emphasis>)</td>
<td align="right">0.055</td>
</tr>
<tr>
<td>Remapping period (<emphasis>T<subscript>RM</subscript></emphasis> )</td>
<td align="right">6.9</td>
</tr>
<tr>
<td>Default QN threshold (Q<subscript>TH</subscript>)</td>
<td align="right">20</td>
</tr>
<tr>
<td>QN threshold inc./dec. factors <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/qab.jpg" mime-subtype="jpeg"/></td>
<td align="right">0.107, 0.01</td>
</tr>
<tr>
<td>Pheromone time and hop decay factors</td>
<td align="right">0.3,0.15</td>
</tr>
<tr>
<td>Pheromone propagation range</td>
<td align="right">3</td>
</tr>
</tbody>
</table>
</table-wrap>
<para>The platform model used in this case study has fixed priority preemptive NoC arbiters and local schedulers. Hence, tasks and flows can be blocked by higher priority tasks and flows. The remapping heuristic takes into account the new tasks&#x2019; blocking incurred by a possible remapping (lines 4&#x2013;10 of <link linkend="alg6_5">Algorithm 6.5</link>). However, since the processing nodes lack a global view of the communication flows, the remapping heuristic cannot take into account the change in the overall network <emphasis>communication interference pattern</emphasis> caused by the reallocation of the tasks. Therefore, there are situations where remapping a task can result in an actual lateness increase. As shown in <link linkend="fig6_3">Figure 6.3</link> and Algorithm. 6.4, every <emphasis>T</emphasis><subscript>QN</subscript> time units the worker nodes get updates from all QNs in close proximity to them. However, between subsequent <emphasis>PSDifferentiation</emphasis> events, the workload of the QN can change rapidly when the system is heavily utilised, which may lead to inaccurate local knowledge regarding the nearby QNs. Furthermore, late tasks should be remapped ideally before the next job invocation. However, the remapping event is periodic (i.e., every <emphasis>T</emphasis><subscript>RM</subscript> seconds) which allows the remapping overhead to be kept at a minimum, but does not guarantee synchronisation with the workload arrival pattern. Longer periodic events may lead to inconsistency in data and states, but are used to keep the communication overhead at a minimum.</para>
</section>
</section>
<section class="lev1" id="sec6-3">
<title>6.3 Evaluation</title>
<section class="lev2" id="sec6-3-1">
<title>6.3.1 Experiment Design</title>
<para>To evaluate the resource allocation approach described in this chapter, we performed a number of simulations of realistic load patterns allocated over a 100-core Network-on-Chip platform. A discrete-event, abstract simulator described in [<link linkend="bib92">92</link>] has been adopted. The volume of load was configured such that there would be an upper limit of 103 parallel video streams at any given time in the simulation. Experiments were performed under 30 unique workload situations, where the number of videos per workflow, their resolutions and arrival patterns vary based on the randomiser seed used in each simulation run. The computation to communication ratio of the workload was approximately 2:1. The resolution of the video streams were selected at random from a list of low to high resolutions (e.g., from 144p to 720p). The inter-arrival time of jobs in a video stream were set to be between 1 to 1.5 times the <emphasis>D</emphasis><subscript>e2e</subscript>. Tasks were initially mapped to the lowest utilised PE (according to worst-case utilisation) and priority assignment of the tasks followed a scheme were the lowest-resolution tasks get the highest priority. This initial mapping and assignment scheme were constant variables for all evaluations.</para>
<section class="lev3" id="sec6-3-1-1">
<title>6.3.1.1 Metrics</title>
<para>The experiments have multiple dependent variables as described below:</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para><emphasis>Total number of fully schedulable video streams</emphasis> is the number of all admitted video streams that have no late jobs (i.e., <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/j.jpg" mime-subtype="jpeg"/> &#x2264; <emphasis>D</emphasis><subscript>e2e</subscript>).</para></listitem>
<listitem><para><emphasis>Cumulative job lateness</emphasis> (<inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/cl.jpg" mime-subtype="jpeg"/>) is calculated as the summation of lateness of all the late jobs from every video stream (<emphasis>v</emphasis><subscript>i</subscript>) admitted to the system (Equation ( 6.2)). In Equation ( 6.2), <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/jl.jpg" mime-subtype="jpeg"/> is a late job and <emphasis>VS</emphasis> denotes all the video streams admitted to the system. We measure the job lateness with remapping enabled/disabled, hence a reduced <emphasis>C</emphasis><sup>J</sup><emphasis>obs</emphasis> <emphasis>L</emphasis> , when remapping is enabled is considered an improvement to the system. This metric gives us a notion of how the remapping technique reduced the lateness of the unschedulable video streams, which directly affects the QoE of the video stream.</para></listitem>
<listitem><para><emphasis>Communication overhead</emphasis> is calculated as the sum of the basic latencies (<emphasis>C</emphasis><subscript>i</subscript>) of every control signal in the respective remapping technique. In the PSRM algorithm these are the pheromone broadcast and QN availability request signals. In the cluster-based technique the PE status update traffic and the inter-cluster communication traffic contributes to the overhead. Furthermore, the task dispatcher notification messages in all the remapping techniques are included in the overhead. Lower communication overheads lead to less congested networks as well as lower communication energy consumption [<link linkend="bib39">39</link>].</para></listitem>
<listitem><para><emphasis>Distribution of PE utilisation</emphasis> is calculated by the measured total busy time for every PE on the network during a simulation run. PE utilisation gives a notion of the workload and a lower variation in workload distribution is desirable. Overloading a single resource and/or having a high number of idle PEs, are undesirable properties which may lead to reduced reliability and increased wear-and-tear.</para></listitem></itemizedlist><para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq6-2.jpg" mime-subtype="jpeg"/></para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq6-3.jpg" mime-subtype="jpeg"/></para>
</section>
<section class="lev3" id="sec6-3-1-2">
<title>6.3.1.2 Baseline Remapping Techniques</title>
<para>The PSRM resource manager was evaluated against the following baselines:</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem> <para><emphasis>CCP RM</emphasis><subscript>V2</subscript> &#x2013; is a cluster-based management proposed in [<link linkend="bib91">91</link>] as an improvement of the original work by Castilhos et al. [<link linkend="bib33">33</link>]. It is configured with a cluster size of 2 &#x00D7; 5 (i.e., 10 clusters).</para></listitem>
<listitem><para><emphasis>Centralised management</emphasis> &#x2013; is essentially CCPRM<subscript>V2</subscript> with only one 10 &#x00D7; 10 cluster. A single centralised resource manager receives status updated from every slave PE in the network and performs periodic remapping as described in [<link linkend="bib91">91</link>]. The manager notifies the task dispatcher of any remapping decisions.</para></listitem>
<listitem><para>A <emphasis>random remapper</emphasis> &#x2013; is a remapping scheme where, every remapping interval each PE selects the most late task in its task queue and randomly selects another node on the network to remap to. The task dispatcher is notified of the remapping event.</para></listitem></itemizedlist>
</section>
</section>
<section class="lev2" id="sec6-3-2">
<title>6.3.2 Experimental Results</title>
<section class="lev3" id="sec6-3-2-1">
<title>6.3.2.1 Comparison between clustered approaches</title>
<para>The comparison of CCPRM<subscript>V1</subscript> and CCPRM<subscript>V2</subscript> for the <inline-graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/cl.jpg" mime-subtype="jpeg"/> metric is shown in <link linkend="fig6_5">Figure 6.5</link>(a). In this plot a positive improvement indicates that task remapping has helped to reduce the cumulative job lateness in the admitted video streams. Anegative improvement indicates that the remapping has instead worsened the lateness of the jobs. Each sample in the distribution corresponds to a simulation run with a unique workload. It is clear that the modifications made to the original CCPRM<subscript>V1</subscript> technique has resulted in an improvement in reducing job lateness. In CCPRM<subscript>V1</subscript> a majority of the data shows negative improvement, while CCPRM<subscript>V2</subscript> shows more positive job lateness improvement. However, this improvement has costed a 4% increase in communication cost. Certain constraints in the local remapping decisions in CCPRM<subscript>V2</subscript> would result in more communication with neighbouring clusters which might explain the increased overhead.</para>
<fig id="fig6_5" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.5</label>
<caption><title>Comparison of CCPRM<subscript>V1</subscript> (original) and CCPRM<subscript>V2</subscript> (improved). (a) Cumulative job lateness improvement. (b) Communication overhead.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_5.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev3" id="sec6-3-2-2">
<title>6.3.2.2 Comparison regarding video processing performance</title>
<para><link linkend="fig6_6">Figure 6.6</link> shows the distribution of cumulative job lateness improvement for each of the remapping techniques. Firstly, all the techniques show both negative and positive improvements; hence, under certain workload situations the remapping techniques have failed to improve the lateness of the jobs. However, a majority of the distribution in both PSRM and CCPRM<subscript>V2</subscript> are in the positive improvement region. PSRM has a smaller spread in lateness compared to the baselines. The upper quartile and a significantly large proportion of the inter-quartile range (IQR) falls in the positive improvement area, which is not seen in any of the baselines. In over 60% of the workload scenarios PSRM will produce positive improvement to the job lateness of the video streams but the actual improvement is small (up to 3%&#x2013;4%). Futhermore, in <link linkend="fig6_7">Figure 6.7</link>, we can see PSRM is marginally better than the CCPRM<subscript>V2</subscript> in the number of fully schedulable video streams. CCPRM<subscript>V2</subscript> shows a better job lateness improvement over the centralised management, because the monitoring traffic is shorter in route-length and hence is less disruptive to the data communication. We can see that the centralised management has the highest number of schedulable video streams out of the evaluated remappers. This could indicate that CCPRM<subscript>V2</subscript> and PSRM gave significant job lateness improvements only to a few video streams while the centralised management was able to make minor improvements to multiple video streams. The random remapper shows the worst results with a majority of the experiments resulting in negative improvements and produces the lowest number of fully schedulable video streams. It was interesting to note that there were a few scenarios where random remapping produced significant job lateness improvements, which is seen by the high upper whisker in the box plot (<link linkend="fig6_6">Figure 6.6</link>).</para>
<fig id="fig6_6" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.6</label>
<caption><title>Distribution of cumulative job lateness improvement after applying remapping.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_6.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig6_7" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.7</label>
<caption><title>Comparison of fully schedulable video streams for each remapping technique.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_7.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev3" id="sec6-3-2-3">
<title>6.3.2.3 Comparison regarding communication overhead</title>
<para>PSRM shows a significant communication overhead reduction when compared to the baselines (<link linkend="fig6_8">Figure 6.8</link>). The mean and IQR of PSRM communication overhead is lower than the baselines but the larger variance of the results is due to the different range of workloads and their effect on the QN differentiation cycle in each experimental run. The maximum overhead is comparable to that of CCPRM<subscript>V2</subscript>. Both the CCPRM<subscript>V2</subscript> and centralised management show a higher and narrower distribution of communication overhead than PSRM. A higher upper whisker in PSRM shows that under certain workload scenarios the overhead can be costly and similar to the CCPRM<subscript>V2</subscript> baseline. The lower communication overhead distribution of the centralised manager when compared with CCPRM<subscript>V2</subscript>, is due to the lack of inter-cluster communication. In the centralised management scheme communicating tasks mapped at the middle of the NoC will suffer due to the network congestion caused by the incoming monitoring traffic. Furthermore, these traffic flows will occupy longer routes than CCPRM<subscript>V2</subscript>. Furthermore, we are shown in [<link linkend="bib69">69</link>], that the centralised managers&#x2019; communication overhead issues become severe after the NoC size exceeds 12 &#x00D7; 12. The random mappers&#x2019; communication overhead is many orders of magnitude lower than the others as it only incurs overhead when notifying the task dispatcher regarding remapping decisions.</para>
<fig id="fig6_8" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.8</label>
<caption><title>Communication overhead of the remapping approaches.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_8.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev3" id="sec6-3-2-4">
<title>6.3.2.4 Comparison regarding processor utilisation</title>
<para>The PE utilisation distribution shown in <link linkend="fig6_9">Figure 6.9</link>(a), indicates the PEs with higher utilisation using lighter shade, while the darker shades show PEs with low utilisation levels. The data shown in this plot are normalised such that each remapping technique is relative to each other. PSRM shows a slightly similar variation in the workload distribution to CCPRM<subscript>V2</subscript> with only a single PE with extremely high utilisation and a few with very low utilisation. The curves fitted to the histogram data shown in <link linkend="fig6_9">Figure 6.9</link>(b) indicates that all four remapping techniques have a similar spread of workload distribution. However, closer examination to the statistical properties of the distributions (given in <link linkend="tbl6_2">Table 6.2</link>), indicate that centralised management has the lowest variance and the mean utilisation. The random remapper has the highest variance and mean utilisation. The frequency spikes of the centralised and random remappers in <link linkend="fig6_9">Figure 6.9</link>(b) at 0.8, 0.4 and 0.7 probably give rise to these statistical properties. PSRM shows a higher mean utilisation and lower distribution variance when compared with CCPRM<subscript>V2</subscript>.</para>
<fig id="fig6_9" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 6.9</label>
<caption><title>Comparison of PE utilisation for all remapping techniques. (a) Distribution of PE utilisation across a 10 &#x00D7; 10 NoC. (b) Histogram of PE busy time (normalised; 20 bins).</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig6_9.jpg" mime-subtype="jpeg"/>
</fig>
</section>
</section>
<section class="lev2" id="sec6-3-3">
<title>6.3.3 Outlook</title>
<para>Overall the results indicate the PSRM technique helps to reduce lateness in the video stream jobs and to increase the number of schedulable video streams when compared with the CCPRM<subscript>V2</subscript> remapper. It is important to note that this improvement, even though is marginal, comes at a much lower communication overhead (up to 30% lower than the cluster-based and centralised approaches). A higher maximum lateness improvement can be obtained using CCPRM<subscript>V2</subscript>, but only in 40%&#x2013;50% of the workload scenarios. Communication overhead of CCPRM<subscript>V2</subscript> may grow as the cluster sizes increase, however in the PSRM technique this overhead will vary depending on the distribution of QNs in the network. Also, unlike in the baseline approaches, in PSRM the pheromone signalling message paths are usually short (only a few hops) regardless of the NoC size increases. A centralised resource manager can help to evenly distribute the workload much better than PSRM, because of its global knowledge of the PE status and the mapped tasks. However, PSRM shows better workload distribution when compared with a cluster-based approach. Unlike in the cluster-based management, in PSRM, there are no resource managers in the network; each node executes a simple set of rules using only local knowledge to collectively improve the performance. The execution cost of the remapping event (<link linkend="alg6_5">Algorithm 6.5</link>) is bounded by the number of QNs in the local vicinity and the number of tasks mapped on the node. In the cluster based approach each local processor&#x2019;s execution overhead for management functions (such as remapping, inter-core communication, monitoring etc.) would increase as the cluster size increases. Unlike in the centralised approach, PSRM is decentralised hence has no single point of failure or an isolated communication congestion area. Each PE has the capability of performing remapping and becoming a QN, hence the level of redundancy in the system is greater than in the baseline remappers.</para>
<table-wrap id="tbl6_2">
<label>Table 6.2</label>
<caption><title>Pe Utilisation Distribution Statistics. Lower Variance (Var.) = Better Workload Distribution</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl6_2.jpg" mime-subtype="jpeg"/>
</table-wrap>
<para>One of the identified limitations in PSRM is the sensitivity of the parameters. The parameters need to be tuned for a specific network size and can produce varying results based on the nature of the workload. Parameters that are suitable for a smaller NoC size may not necessarily produce favourable results for a larger NoC. The experimental results during the tuning of the parameters for the PSRM and CCPRM<subscript>V2</subscript> techniques show that the remapping frequency has a significant impact on the performance and communication overhead. Furthermore, depending on the value of <emphasis>T</emphasis><subscript>QN</subscript> and <emphasis>T</emphasis><subscript>DECAY</subscript> , PSRM will vary in the time it takes to identify suitable QNs in the network, and hence better performance results can be seen after longer runs of the algorithm.</para>
</section>
</section>
<section class="lev1" id="sec6-4">
<title>6.4 Summary</title>
<para>This chapter presented extensions to a fully distributed resource management technique based on swarm intelligence. We have shown how such an approach can be applied to a multiple video stream decoding application with several unknown dynamic workload characteristics, on a NoC-based multicore. With low communication overhead, it relies on task-remapping strategies to progressively distribute the workload in the network and to reduce the overall job lateness.</para>
<para>The experimental results have shown that the bio-inspired remapper gives a marginal (2%&#x2013;4%) improvement in lateness reduction but incurs 10%&#x2013;30% lower communication overhead and minor improvement to workload distribution than the baseline cluster-based and centralised management schemes. The centralised management allows the system to increase the number of total schedulable video streams, but the improvement to the cumulative job lateness of the late video streams is poor and the communication overhead is higher than in the proposed technique. The benefits of the centralised management degrade as the scale of the network and workload increase [<link linkend="bib4">4</link>]. Results show that the proposed PSRM approach give a marginal benefit in reducing the cumulative job lateness of the video streams when compared against the CCPRM<subscript>V2</subscript> cluster based resource management approach; however it is important to note that the improvement is obtained using a significantly less (up to 30% lower) communication overhead than the cluster based approach.</para>
<para>A reduced communication overhead may lead to lower energy consumption [<link linkend="bib39">39</link>] and less congested communication network, making PSRM more efficient than the cluster-based approach. Furthermore, unlike in the centralised or cluster-based approaches the proposed PSRM remapping technique does not depend on a single or group of management entities. Each node is independent and capable of relocating late tasks to improve the overall job latency, hence adopting this technique introduces a high degree of redundancy for NoC-based multi/many-cores that require reliable and timely operation.</para>
</section>
</chapter>
<chapter class="chapter" id="ch07" label="7" xreflabel="7">
<title>Value-Based Allocation</title>
<para>In a many-core HPC data centers, jobs arrive at different moments of time and they need to be serviced by allocating on the available system cores at run-time. In doing so, the value (utility) achieved by servicing the jobs should be maximized while trying to minimize the overall energy consumption during system operation as mentioned earlier. A job may contain a number of dependent/independent tasks or processes to be allocated on the system cores. The allocation results for each job determine the value to be achieved and also energy consumption, and thus allocation process needs to optimize both the metrics (value and energy). Optimizing of energy of large scale HPC data centers is of paramount importance as there is a huge concern about the energy required to operate such systems [<link linkend="bib112">112</link>]. The reports indicate the energy consumption of data centers to be between 1.1% and 1.5% of the worldwide electricity consumption [<link linkend="bib70">70</link>]. Thus, both the value and energy consumption need to be optimized during resource allocation process.</para>
<para>Previous researchers have introduced notion of values (economic or otherwise) of the jobs to define their importance level [<link linkend="bib66">66</link>]. In overload situations where demand for available resources is higher than the supply, such a notion facilitates in deciding to hold the low value jobs for late allocation and allocating limited resources to the high value jobs. The value of a job can change over time to reflect the impact of the computation over the business processes, which adds complexity to the allocation process.</para>
<para>Existing dynamic resource allocation approaches allocate dynamically arriving jobs to the platform resources by employing light-weight heuristics that can find an allocation quickly. There have also been efforts to utilize design-time profiled results to facilitate efficient resource allocation and reduce the computations at run-time [<link linkend="bib125">125</link>]. These efforts seem promising to design job-specific-clouds, where the clients (or customers) and their jobs to be submitted for execution are pre-defined, which can be realized from the historical data. However, they optimize only for value. Further, existing approaches optimizing for both value and energy cannot be applied to dependent tasks. Since an HPC job may contain a set of dependent tasks, there is a need to devise resource allocation approaches to be applied on dependent tasks while optimizing both value and energy.</para>
<section class="lev1" id="sec7-1">
<title>7.1 System Model and Problem Formulation</title>
<para><link linkend="fig7_1">Figure 7.1</link> shows our target system model, which is based on typical industrial HPC scenario. The system contains a <emphasis>many-core HPC platform</emphasis> that executes a set of <emphasis>jobs</emphasis> submitted by various <emphasis>users</emphasis> at different moments of time. The jobs are submitted to the <emphasis>platform resource manager</emphasis> that allocates resources to them. This section provides a brief overview of the platform and workload model along with the problem formulation.</para>
<section class="lev2" id="sec7-1-1">
<title>7.1.1 Many-Core HPC Platform Model</title>
<para>The HPC platform <emphasis>HP</emphasis> contains a set of nodes (<emphasis>PG</emphasis><subscript>1</subscript><emphasis>,...,PG<subscript>N</subscript></emphasis> ), where each node (server) contains a set of homogeneous cores, referred to as processing elements (PEs), as shown in the bottom part of <link linkend="fig7_1">Figure 7.1</link>. Similar to a typical data center, each node represents a physical server. A node <emphasis>n</emphasis> is represented as a set of cores <emphasis>C<subscript>n</subscript></emphasis>, which communicate via an interconnect. Each core is assumed to support DVFS (as briefly described in <link linkend="chapter3">Chapter 3</link>) and thus its voltage and frequency can be independently adjusted in order to achieve a balance between energy consumption and job execution time. A <emphasis>platform resource manager</emphasis> controls access of platform resources and coordinates the execution of jobs submitted by the users, which facilitates efficient management of resources and incoming requests.</para>
<fig id="fig7_1" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.1</label>
<caption><title>System model adopted in this chapter. A cloud data center containing different nodes (servers) with dedicated cores (PEs) to execute jobs submitted by multiple users.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_1.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec7-1-2">
<title>7.1.2 Job Model</title>
<para>Each job <emphasis>j</emphasis> in the HPC workload is modelled as a directed graph <emphasis>TG</emphasis> = (<emphasis>T, E</emphasis>), where <emphasis>T</emphasis> is the set of tasks of the job and <emphasis>E</emphasis> is the set of directed edges representing dependencies amongst the tasks. <link linkend="fig7_2">Figure 7.2</link>(a) shows an example job that contains 7 tasks (<emphasis>t</emphasis><subscript>1</subscript>, . . ., <emphasis>t</emphasis><subscript>7</subscript>) connected by a set of edges. Each task <emphasis>t</emphasis> &#x2208; <emphasis>T</emphasis> is associated with its execution time (<emphasis>ExecTime</emphasis>, measured as worst-case execution time (WCET)), when allocated on a core operating at a particular voltage level. Such information can be obtained from previous executions of the tasks in the job from historical data. Each edge <emphasis>e</emphasis> &#x2208; <emphasis>E</emphasis> represents data that is communicated between the dependent tasks. A job <emphasis>j</emphasis> is also associated with its arrival time <emphasis>AT<subscript>j</subscript></emphasis>.</para>
</section>
<section class="lev2" id="sec7-1-3">
<title>7.1.3 Value Curve of a Job</title>
<para>For each job <emphasis>j</emphasis>, the value curve <emphasis>VC<subscript>j</subscript></emphasis> is a function of the value of the job to the user depending on the completion time of the job [<link linkend="bib66">66</link>]. The value curve is usually a monotonically-decreasing function and trends towards zero with the increasing completion time, as shown in <link linkend="fig7_2">Figure 7.2</link>(b). We assume a value curve is given for each job, as this reflects its business importance as assessed by the end user (i.e., domain specific economic model). The description of the economic model is orthogonal to our approach and out of scope of this chapter.</para>
<fig id="fig7_2" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.2</label>
<caption><title>An example job model and its value curve.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_2.jpg" mime-subtype="jpeg"/>
</fig>
<para>Each job is considered to have a soft deadline [<link linkend="bib28">28</link>]. This implies that the violation of deadline does not make the computation irrelevant, but reduces its value for the user [34, 62, 66]. The reduction in value due to delay can be determined by observing the value in the value curve at the delayed completion time. Deadlines missed by large margins may result in zero value and thus the computation becomes useless for the user. Further, the energy spent on such computation can be considered as wasted. Therefore, the job request should be rejected if no (zero) value can be obtained by executing it.</para>
</section>
<section class="lev2" id="sec7-1-4">
<title>7.1.4 Energy Consumption of a Job</title>
<para>The total energy consumption (<emphasis>E<subscript>total</subscript></emphasis>) of a job is computed as the sum of dynamic and static energy as follows.</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq7-1.jpg" mime-subtype="jpeg"/></para>
<para>The dynamic energy consumption for all the tasks in the job is estimated from Equation (7.2).</para>
<para><graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/eq7-2.jpg" mime-subtype="jpeg"/></para>
<para>where <emphasis>ExecT ime</emphasis>[<emphasis>t</emphasis>] &#x2192; <emphasis>c<subscript>v</subscript></emphasis> and <emphasis>pow</emphasis> &#x2192; <emphasis>c<subscript>v</subscript></emphasis> are the execution time of task <emphasis>t</emphasis> mapped on core <emphasis>c</emphasis> operating at voltage <emphasis>v</emphasis>, and respective power consumption, respectively. The <emphasis>ExecT ime</emphasis> measures are provided in the job model. It is assumed that the power consumption at different operating voltages is known in advance and taken from chip manufacturer&#x2019;s data sheet.</para>
<para>The <emphasis>E<subscript>static</subscript></emphasis> for each core is computed as the product of overall execution time of the job and static power consumption of the used cores. For <emphasis>p</emphasis> used cores, total static energy is computed as <emphasis>p</emphasis> &#x00B7; <emphasis>E<subscript>static</subscript></emphasis>, and unused cores are considered as power gated so that they do not contribute to the overall energy consumption.</para>
</section>
<section class="lev2" id="sec7-1-5">
<title>7.1.5 Problem Formulation</title>
<para>In an HPC system (e.g., <link linkend="fig7_1">Figure 7.1</link>), jobs (<emphasis>j</emphasis><subscript>1</subscript><emphasis>,...,j<subscript>M</subscript></emphasis> ) arriving at different moments of time submitted by various users need to be efficiently allocated on the resources (cores) of the platform nodes (<emphasis>PG</emphasis><subscript>1</subscript><emphasis>,...,PG<subscript>N</subscript></emphasis> ). The resource allocation problem targeted in this paper is to jointly optimize value and energy while servicing arrived jobs. It is assumed that the tasks of a job are allocated to only one node (server) in order to avoid huge communication delay between different nodes. To summarize, the targeted problem considers the following set of input, constraints and objective.</para>
<itemizedlist mark="bullet" spacing="normal">
<listitem><para><emphasis role="strong">Input</emphasis>: Workload, i.e., Job set (<emphasis>j</emphasis><subscript>1</subscript><emphasis>,...,j<subscript>M</subscript></emphasis> ), Value curve of each job <emphasis>VC<subscript>j</subscript></emphasis>, Arrival time of each job <emphasis>AT<subscript>j</subscript></emphasis> (<emphasis>j</emphasis> &#x2208; 1<emphasis>,...,M</emphasis>), Cores of the HPC platform nodes (<emphasis>PG</emphasis><subscript>1</subscript><emphasis>,...,PG<subscript>N</subscript></emphasis> ), Voltage levels (<emphasis>v</emphasis><subscript>1</subscript><emphasis>,...,v<subscript>l</subscript></emphasis>) supported by each core.</para></listitem>
<listitem><para><emphasis role="strong">Constraints</emphasis>: Limited resources (cores) on each node of <emphasis>HP</emphasis> .</para></listitem>
<listitem><para><emphasis role="strong">Objective</emphasis>: Maximize overall value <emphasis>V al<subscript>total</subscript></emphasis> and minimize energy consumption <emphasis>E<subscript>total</subscript></emphasis>.</para></listitem>
</itemizedlist>
<para>For an arrived job, the allocation process followed by the global resource manager needs to identify the node to execute the job, tasks to cores allocation inside the node, and the voltage/frequency levels of the cores executing tasks of the job. We assume negligible time for switching between voltage/frequency levels of a core as it is in the order of nanoseconds while tasks execution is in the order of minutes or hours [<link linkend="bib49">49</link>]. Since there are several possible allocations (tasks to cores assignment) for a job and several voltage scaling (VS) options for each allocation, exploring the complete design space to identify the optimal design in terms of value and energy might not be feasible within acceptable time. Therefore, only efficient allocations and appropriate VS options need to be evaluated. Further, for dependent tasks, applying VS on a core is rather challenging as one needs to capture the VS effect on the execution of dependent tasks allocated on other cores.</para>
</section>
</section>
<section class="lev1" id="sec7-2">
<title>7.2 The Solution</title>
<para>This section describes solutions in order to address the aforementioned problem. In order to allocate platform cores to the incoming jobs at run-time, the platform resource manager is invoked to find allocations. The manager follows profiling or non-profiling based approach, as shown in <link linkend="fig7_3">Figure 7.3</link>. The details of these approaches are as follows.</para>
<section class="lev2" id="sec7-2-1">
<title>7.2.1 Profiling Based Approach (PBA)</title>
<para>This approach uses design-time profiling results of the jobs in the historical data to perform run-time resource allocation for the incoming jobs, as shown in <link linkend="fig7_3">Figure 7.3</link>(a). For each job, the profiling process identifies the allocation and voltage/frequency levels leading to optimized response time (determines value) and energy consumption when utilizing different amount of computing power in terms of number of cores. The response time is calculated as the difference between the end and start time of the job execution after allocating resources to it and should be minimized to optimize value. To jointly optimize value and energy, we consider to minimize the product of response time and energy consumption. At different number of cores, the allocation and voltage/frequency levels leading to minimum product value are identified by employing a genetic algorithm (GA) based evaluation, similarly as in [<link linkend="bib117">117</link>]. The number of cores is varied from one to the number of tasks in the job. Such variation can exploit all the potential parallelism present in the job as each task can occupy only one core. For each job, the allocation, voltage/frequency levels, value corresponding to the response time and energy consumption at different number of cores are stored as the profiling results.</para>
<fig id="fig7_3" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.3</label>
<caption><title>Profiling and non-profiling based approaches.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_3.jpg" mime-subtype="jpeg"/>
</fig>
<para>To perform resource allocation by using the profiling results, the manager follows <link linkend="alg7_1">Algorithm 7.1</link>. The algorithm takes profiling results of the jobs from the storage along with their value curves and arrival times, and the HPC Platform <emphasis>HP</emphasis> as input and identifies the value and energy optimizing allocation for each job based on the number of available cores at different nodes in the platform. The algorithm checks mainly for two events as follows: 1) <emphasis>any already allocated job(s) finish execution</emphasis> to update the platform resources (lines 1&#x2013;3), and 2) <emphasis>any job(s) arrive into the platform</emphasis> to put into a job queue (lines 4&#x2013;6). If any of the two events or both of them occurs, the algorithm tries to perform resource allocation for the queues job(s) having non-zero values (lines 7&#x2013;17).</para>
<para>To perform resource allocation for all valuable queued jobs (i.e., jobs having positive values), all of them (<emphasis>count</emphasis> = 0 to <emphasis>JobQueue.size()</emphasis>, line 8) are tried to be allocated on the platform resources as along as any core is available. It is ensured that a queued job having zero value at the allocation time is dropped from the queue as no value can be made out of it. The allocation process continues until all the arrived jobs are allocated or dropped due to having zero value while waiting in the job queue. First, bids (in terms of number of available cores) from different platform nodes are collected, then the maximum bid (<emphasis>maxBid</emphasis>) and the corresponding node is selected (line 9). Choosing such a node to use its cores helps to achieve better load balancing amongst nodes and thus better resource utilization. In case more than one nodes have the same amount of bid, any of them is chosen. If the estimate of <emphasis>maxBid</emphasis> is greater than zero (<emphasis>maxBid &#x003E;</emphasis> 0, line 10), i.e., at least one core is available in the platform, the value/energy estimates of jobs utilizing <emphasis>maxBid</emphasis> cores are computed and the job leading to maximum value per energy consumption (<emphasis>maxV alueP erEnergyJob</emphasis>) is selected to be scheduled to the node having <emphasis>maxBid</emphasis> cores by following the allocation and voltage/frequency levels leading to the optimized value and energy. The computation of value/energy for each job considers its value at the allocation time and the exact number of cores to be used by the job computed as minimum between <emphasis>maxBid</emphasis> and the number of cores to be used to achieve maximum value/energy. The platform resources are updated after scheduling each job to have up to date resources&#x2019; availability information for the next allocation instance. This helps to achieve an accurate and efficient allocation. Similar process is repeated for all the arrived jobs.</para>
<fig id="alg7_1">
<label>Algorithm 7.1</label>
<caption><title>Profiling Based Resource Allocation</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg7_1.jpg" mime-subtype="jpeg"/>
</fig>
<para>For each job, this approach selects (from the profiling results) allocation and voltage/frequency levels leading to maximum value/energy, and thus both the value and energy consumption are optimized.</para>
</section>
<section class="lev2" id="sec7-2-2">
<title>7.2.2 Non-profiling Based Approach (NBA)</title>
<para>The NBA approach does not use profiling results as no historical pattern of jobs is available to perform advance profiling. Rather, all the computations are performed at run-time. This approach is suitable to the scenarios when the jobs to be executed are unknown in advance, i.e., no historical pattern of jobs is available.</para>
<para>The steps followed by the NBA are similar to PBA and sketched in <link linkend="alg7_2">Algorithm 7.2</link>. Here, if <emphasis>maxBid</emphasis> is greater than zero (<emphasis>maxBid &#x003E;</emphasis> 0), the following two main steps are employed: <emphasis>i)</emphasis> Compute <emphasis>values</emphasis> of unscheduled jobs by finding allocations on <emphasis>maxBid</emphasis> cores (line 6), and <emphasis>ii)</emphasis> Identify voltage/frequency levels of used cores to execute allocated tasks to maximize value over energy (line 8), which are described subsequently.</para>
<para>In step <emphasis>i)</emphasis>, firstly, an appropriate allocation for each job is identified by allocating on <emphasis>maxBid</emphasis> cores. The allocation considers the exact number of cores to be used, which is the minimum between <emphasis>maxBid</emphasis> cores and the number of cores equivalent to the number of tasks in the job. The exact number of cores could be higher than that of PBAas no profiling information is available to identify it exploiting the maximum parallelism. To find an efficient allocation, we try to balance load across the used cores. Every task of the job is allocated to a core such that the processing load is balanced over the cores. In case the number of tasks in the job is higher than the number of cores, the approach allocates highly communicating tasks on the same core to reduce the communication overhead. These considerations can lead to minimal response time and thus completion time of the job, resulting in maximum value. After finding the allocation, the value is computed as the value in the corresponding value curve at the completion time by taking the arrival time into account. Similarly, value achieved by each job is computed.</para>
<fig id="alg7_2">
<label>Algorithm 7.2</label>
<caption><title>Non-profiling Based Resource Allocation</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg7_2.jpg" mime-subtype="jpeg"/>
</fig>
<para>From all the jobs, the one leading to the maximum value, i.e., <emphasis>maxV aluableJob</emphasis>, corresponding <emphasis>allocation</emphasis> and <emphasis>value</emphasis> is selected (line 7). Then, voltage/frequency levels are identified in step <emphasis>ii)</emphasis> as described subsequently.</para>
<para>Step <emphasis>ii)</emphasis> follows <link linkend="alg7_3">Algorithm 7.3</link>, which takes the set of voltage scaling (VS) levels <emphasis>V</emphasis> available for cores as input and identifies the VS levels to be applied on cores to execute allocated tasks. For each task <emphasis>t</emphasis>, available VS levels are applied, and response time and value of the job at its completion is computed. From here onwards, applying voltage scaling on a task implies applying voltage scaling on the allocated core for the task. Similarly, VS level of a task implies VS level of the allocated core to execute the task. The value at completion is estimated by looking into the corresponding value curve while taking the arrival time of the job into account. If an applied VS on a task is valuable (<emphasis>value<subscript>job_completition</subscript></emphasis> <emphasis>&#x003E;</emphasis> 0), then total energy consumption of the job is calculated from Equation (7.1). Next, value at per unit of energy consumption (<emphasis>V alP erUnitEnerg</emphasis>) is computed. Thereafter, the task and its VS level corresponding to maximum <emphasis>V alPerUnitEnerg</emphasis> is found to fix the voltage level to execute the task. The same process is repeated to find VS levels of other tasks. Once voltage/frequency levels are identified, the <emphasis>maxV aluableJob</emphasis> is scheduled on the node having <emphasis>maxBid</emphasis> cores based on the <emphasis>allocation</emphasis> to perform execution at the identified voltage/frequency levels (<link linkend="alg7_2">Algorithm 7.2</link>).</para>
<fig id="alg7_3">
<label>Algorithm 7.3</label>
<caption><title>Voltage/frequency Identification</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/alg7_3.jpg" mime-subtype="jpeg"/>
</fig>
</section>
</section>
<section class="lev1" id="sec7-3">
<title>7.3 Evaluations</title>
<para>The proposed value and energy optimizing resource allocation approaches have been implemented in a C++ prototype and integrated with a SystemC functional simulator. As a workload, job models from historical data of an industrial HPC system at High Performance Computing Center Stuttgart (HLRS) are considered. The jobs in the workload have varying arrival time. It is considered that higher numbers of jobs arrive in peak times as compared to off-peak times. To sufficiently stress the platform, we consider all the jobs arriving over a day, i.e., 24-hour period. Each job contains a set of tasks having predefined connections (edges) amongst them that determines dependencies. For each task, the worst-case execution time (WCET) is known a priori and specified in the job model. The number of tasks in the jobs varies from 5 to 10. Further, it is assumed that the value curve of each job is given.</para>
<para>To evaluate our approaches under different load conditions, we conducted experiments with varied arrival rates of jobs while keeping higher number of arrivals during peak times over off-peak times. We have considered low, moderate and high arrival rates, where jobs arrive in the orders of a few seconds, dozens of seconds and minutes, respectively. It is assured that the total number of jobs for different arrival rates remains the same as the number of jobs considered for 24 hours.</para>
<para>To evaluate our approaches for different number of available servers (nodes), varying number of nodes are considered in the HPC platform. Further, the number of cores at each node is also varied to evaluate the approaches for assorted chip manufacturing technologies, where different number of cores can be integrated within a physical chip. The number of cores is varied such that it covers a broad spectrum of technologies including advanced servers to be available in future. The platform cores are assumed as the cores of Intel Core M processor, which supports 6 voltage/frequency levels of operation. However, any other type of core and higher number of voltage/frequency levels can be considered.</para>
<para>The main evaluated performance metrics are value and energy consumption, which are overall value achieved by executing the arrived jobs and energy consumed by the platform cores to execute the jobs, respectively. We also evaluate the percentage of rejected jobs that are removed from the job queue as their value becomes zero before the resources become available to allocate them. The rejected jobs also include jobs achieving zero value after their execution, which can be prevented by employing proper admission control and schedulability analysis.</para>
<section class="lev2" id="sec7-3-1">
<title>7.3.1 Experimental Baselines</title>
<para>There are algorithms reported in the literature that apply DVFS to execute jobs. However, most of them optimize either only for [<link linkend="bib141">141</link>] or energy [<link linkend="bib124">124</link>], and both value and energy optimizing approaches do not consider jobs containing dependent tasks [<link linkend="bib66">66</link>].</para>
<para>We compare results obtained from our approaches (PBA and NBA) to those of [<link linkend="bib141">141</link>] and [<link linkend="bib124">124</link>]. These approaches are considered for comparison as they can be applied to jobs containing dependent tasks and DVFS can be applied. In [<link linkend="bib141">141</link>], the optimization is performed to optimize only value, i.e., no DVFS is applied, and the cores are assumed to operate at the highest supported voltage level. This approach chooses the maximum value job first to optimize the overall value and has been referred to as <emphasis>ValOpt</emphasis>. It helps to recognize energy savings by all the approaches applying DVFS. To employ this approach, the voltage/frequency identification step (line 8, in <link linkend="alg7_2">Algorithm 7.2</link>) has been removed.</para>
<para>The approach of [<link linkend="bib124">124</link>] identifies voltage/frequency levels of cores to execute the tasks scheduled on them in order to optimize only energy consumption. Therefore, it has been extended to optimize both the value and energy for a fair comparison. To employ this approach, the greedy algorithm of [<link linkend="bib124">124</link>] is called for voltage/frequency identification in <link linkend="alg7_2">Algorithm 7.2</link> (line 8). In this algorithm, all the tasks scheduled on a core execute on a fixed identified voltage/frequency level, referred to as fixing cores power states (FCPS), as shown in example <link linkend="fig7_4">Figure 7.4</link>. The voltage/frequency identification follows a greedy heuristic, where voltages of cores are fixed one by one during consecutive iterations. When employing voltage/frequency identification of [<link linkend="bib124">124</link>], the approach is referred to as NBA-FCPS. Our approach identifies voltage/frequency levels of tasks in the similar manner, where tasks scheduled on a core can be executed on different voltages, referred to as fixing tasks power states (FTPS), as shown in example <link linkend="fig7_4">Figure 7.4</link>. In this case, our NBA approach has been referred to as NBA-FTPS. It should also be noted that the run-time computation overhead of NBA approach has been considered to capture accurate achieved value after the job completion.</para>
<fig id="fig7_4" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.4</label>
<caption><title>Voltage/frequency identification by FCPS and FTPS.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_4.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec7-3-2">
<title>7.3.2 Value and Energy Consumption at Different Arrival Rates</title>
<para><link linkend="fig7_5">Figure 7.5</link> shows the overall value and energy consumption when various approaches are employed for different arrival rates of jobs. A high arrival rate indicates that the jobs arrive quite frequently, whereas less frequently in low arrival rate. The value and energy estimates are normalized with respect to (w.r.t.) the value and energy by ValOpt approach at high arrival rate. The shown results have been computed for 3 nodes, where each node contains 8 cores. A couple of observations can be made from the figure. <emphasis>1)</emphasis> The value obtained by all the approaches increases from high to low arrival rates as more jobs are processed before their value becomes zero due to late availability of cores. <emphasis>2)</emphasis> The value obtained by PBA approach is always higher than that of other approaches due to joint optimization effect. On an average, PBAachieves 5.6% higher value than that of ValOpt. However, the joint optimization also leads to higher energy consumption when jobs arrival rate is not high. For the sake of both value and energy optimization, PBA is recommended to be employed. <emphasis>3)</emphasis> The energy consumption by NBA-FCTS and NB-FTPS is close to each other and lower than that of ValOpt. On an average, NBA-FCTS and PBA reduce energy consumption by 15.8% and 5.8%, respectively, when compared to ValOpt. Therefore, for the sake of both value and energy optimization, PBA is recommended to be employed.</para>
<fig id="fig7_5" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.5</label>
<caption><title>Value and energy at different arrival rates.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_5.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec7-3-3">
<title>7.3.3 Value and Energy Consumption with Varying Number of Nodes</title>
<para><link linkend="fig7_6">Figure 7.6</link> shows the influence of the number of nodes (servers) on the overall value and energy consumption. At each node, a total of 8 cores are considered. The shown results are for high arrival rate of the jobs. The value and energy results are normalized w.r.t. the value and energy by ValOpt approach at 2 nodes. It can be observed that the overall value by all the approaches increases with the number of nodes due to increased processing capability leading to completion of higher number of jobs before their value becomes zero. It can also be observed that PBAachieves higher overall value than other approaches. Further, on an average, PBA performs better than other approaches if both the value and energy metrics are jointly evaluated as value divided by energy.</para>
</section>
<section class="lev2" id="sec7-3-4">
<title>7.3.4 Value and Energy Consumption with Varying Number of Cores in Each Node</title>
<para><link linkend="fig7_7">Figure 7.7</link> shows the overall value and energy consumption when number of cores at each node are varied for a total of 3 considered nodes. The jobs arriving at high rate are considered. The value and energy results are normalized w.r.t. the value and energy by ValOpt approach at 2 cores. A couple of observations can be made from the figure. First, the value by all the approaches increases with the number of cores due to increased processing capability leading to completion of higher number of jobs before their value becomes zero. Second, PBA achieves higher overall value than other approaches and better results when both the value and energy need to be considered. Third, in case profiling of jobs is not possible, i.e., PBA cannot be applied, NBA-FTPS can be employed to achieve a better trade-off between value and energy over other approaches.</para>
<fig id="fig7_6" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.6</label>
<caption><title>Value and energy with varying number of nodes.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_6.jpg" mime-subtype="jpeg"/>
</fig>
<fig id="fig7_7" position="float" xmlns:xlink="http://www.w3.org/1999/xlink">
<label>Figure 7.7</label>
<caption><title>Value and energy with varying number of cores at each node.</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/fig7_7.jpg" mime-subtype="jpeg"/>
</fig>
</section>
<section class="lev2" id="sec7-3-5">
<title>7.3.5 Percentage of Rejected Jobs</title>
<para><link linkend="tbl7_1">Table 7.1</link> shows the rejected jobs (%) at different arrival rates when various approaches are employed. The average over different arrival rates is also shown for all the approaches. The tabulated results have been computed by considering 3 nodes, where each node contains 8 cores. It can be observed that, on an average, our proposed approaches NBA-FTPS and PBA reject lesser number of jobs as compared to baseline approaches. The PBA has the lowest rejection of jobs as each job is allocated on the exact number of cores exploiting all the potential parallelism with the help of design-time profiled results. This result in cores availability for higher number of jobs before their value become zero and thus lowers rejections. It should be noted that rejection rate by PBA for low arrival rate is not always zero and varies with number of cores/nodes.</para>
<table-wrap id="tbl7_1">
<label>Table 7.1</label>
<caption><title>Percentage of rejected jobs at different arrival rates</title></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="graphics/tbl7_1.jpg" mime-subtype="jpeg"/>
</table-wrap>
</section>
</section>
<section class="lev1" id="sec7-4">
<title>7.4 Related Works</title>
<para>The dynamic resource allocation process usually employs a heuristic following some fundamental optimization procedure (e.g., incremental dynamic allocation) to identify an efficient allocation for each job at run-time. Several heuristics have been proposed to accomplish this aim [<link linkend="bib126">126</link>]. These heuristics optimize one or several performance metrics, e.g., response time and energy consumption. In overload situation, these heuristics can lead to starvation, missed deadlines, and reduced throughput. Further, these heuristics do not take into account any notion of values of jobs to users and thus they do not optimize the overall value achieved by executing different jobs.</para>
<para>Market-inspired resource allocation heuristics are proven to provide promising results in the overload situation that is normally encountered in HPC system [<link linkend="bib156">156</link>]. The heuristics employ notion of values of jobs, where values represent importance levels. Some researchers assume fixed value of a job [<link linkend="bib141">141</link>], whereas others consider values that can change with time, described with so-called value curve of the job [25, 66]. In such curve, the value of a job normally decreases with computation time and reflects the importance level over the business process.</para>
<para>Market-inspired heuristics allocate jobs in several ways. For example, the highest value job is chosen first [<link linkend="bib141">141</link>]. This approach might lead to small amount of available resources if a high value job requires a large amount of resources. To overcome above problem, the job having maximum value density can be chosen first [<link linkend="bib79">79</link>], where the value density is computed as value divided by the amount of required computational resources Another heuristic to choose the job having minimum remaining value first is also proposed [<link linkend="bib24">24</link>]. The remaining value is calculated as the area under the value curve from the current time to the time when its value is zero. These heuristics try to optimize overall value, but they do not consider energy consumption optimization. Further, they do not consider DVFS capable cores, which provide opportunities to reduce energy consumption.</para>
<para>Energy optimization approaches for HPC data centers have focused mainly on virtual machines (VMs) consolidation and DVFS. In consolidation, VMs with low utilization are placed together on a single host so that other used hosts can be freed to shut them down [13, 132, 148]. DVFS based approaches have been explored to reduce energy consumption is several areas, e.g., clusters [114, 149], web servers [<link linkend="bib142">142</link>] and HPC data centers [<link linkend="bib28">28</link>]. The approaches for HPC data centers (e.g., [<link linkend="bib28">28</link>]) do not consider jobs containing dependent tasks. For other application domains, DVFS techniques for dependent tasks are explored (e.g., [<link linkend="bib124">124</link>]), but optimization is not performed for value.</para>
<para>Some heuristics considering DVFS and optimizing both the value and energy consumption are reported in [<link linkend="bib66">66</link>]. However, they consider independent tasks or jobs containing independent tasks. There are some additional multi-criteria optimization approaches, but they perform static resource allocation [50, 105]. Further, in dynamic resource allocation process, they do not use design-time profiling results, which can provide optimized value and energy. In contrast, the reported profiling and non-profiling based dynamic resource allocation approaches in this chapter consider jobs containing dependent tasks and jointly optimizes for both value and energy while applying DVFS.</para>
</section>
<section class="lev1" id="sec7-5">
<title>7.5 Summary</title>
<para>This chapter proposed value and energy optimizing resource allocation approaches for HPC data centers. It has been shown that the approaches combine identification of efficient allocation and appropriate voltage/frequency levels to jointly optimize value and energy consumption. Whilst existing approaches focus on methods like server consolidation and DVFS, they do not consider jobs containing dependent tasks. It has been shown that the proposed approach is able to significantly reduce energy consumption and improve value while applying DVFS for jobs containing dependent tasks.</para>
</section>
</chapter>
<bibliography class="biblio" id="bib01">
<title>References</title>
<orderedlist numeration="arabic" continuation="restarts" spacing="normal">
<listitem><para id="bib1">Autosar: Automotive open system architecture. 2015. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Autosar%3A+Automotive+open+system+architecture%2E+2015%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib2">T. F. Abdelzaher, J. A. Stankovic, C. Lu, R. Zhang, and Y. Lu. Feedback performance control in software services. <emphasis>IEEE Control Systems</emphasis>, 23(3): 74&#x2013;90, June 2003. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=T%2E+F%2E+Abdelzaher%2C+J%2E+A%2E+Stankovic%2C+C%2E+Lu%2C+R%2E+Zhang%2C+and+Y%2E+Lu%2E+Feedback+performance+control+in+software+services%2E+IEEE+Control+Systems%2C+23%283%29%3A+74-90%2C+June+2003%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib3">A. Sharif Ahmadian, M. Hosseingholi, and A. Ejlali. Discrete feedback-based dynamic voltage scaling for safety critical real-time systems. <emphasis>Scientia Iranica</emphasis>, 20(3):647&#x2013;656, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Sharif+Ahmadian%2C+M%2E+Hosseingholi%2C+and+A%2E+Ejlali%2E+Discrete+feedback-based+dynamic+voltage+scaling+for+safety+critical+real-time+systems%2E+Scientia+Iranica%2C+20%283%29%3A647-656%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib4">Mohammad Abdullah Al Faruque, Rudolf Krist, and J&#x00F6;rg Henkel. ADAM: run-time agent-based distributed application mapping for on-chip communication. In <emphasis>Design Automation Conference</emphasis>, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Mohammad+Abdullah+Al+Faruque%2C+Rudolf+Krist%2C+and+J%F6rg+Henkel%2E+ADAM%3A+run-time+agent-based+distributed+application+mapping+for+on-chip+communication%2E+In+Design+Automation+Conference%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib5">Karl-Erik Arzen, Anders Robertsson, Dan Henriksson, Mikael Johansson, H&#x00E5;kan Hjalmarsson, and Karl Henrik Johansson. Conclusions of the artist2 roadmap on control of computing systems. <emphasis>SIGBED Rev.</emphasis>, 3(3):11&#x2013;20, July 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Karl-Erik+Arzen%2C+Anders+Robertsson%2C+Dan+Henriksson%2C+Mikael+Johansson%2C+H%E5kan+Hjalmarsson%2C+and+Karl+Henrik+Johansson%2E+Conclusions+of+the+artist2+roadmap+on+control+of+computing+systems%2E+SIGBED+Rev%2E%2C+3%283%29%3A11-20%2C+July+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib6">Giuseppe Ascia, Vicenzo Catania, and Maurizio Palesi. A multi-objective genetic approach to mapping problem on network-on-chip. <emphasis>Journal of Universal Computer Science</emphasis>, 12(4):370&#x2013;394, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Giuseppe+Ascia%2C+Vicenzo+Catania%2C+and+Maurizio+Palesi%2E+A+multi-objective+genetic+approach+to+mapping+problem+on+network-on-chip%2E+Journal+of+Universal+Computer+Science%2C+12%284%29%3A370-394%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib7">K. Astrom and T. Hagglund. <emphasis>PID Controllers: Theory, Design and Tuning</emphasis>. EDS Publications Ltd., 2nd edition, 1995. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=K%2E+Astrom+and+T%2E+Hagglund%2E+PID+Controllers%3A+Theory%2C+Design+and+Tuning%2E+EDS+Publications+Ltd%2E%2C+2nd+edition%2C+1995%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib8">K. J. Astrom and T. Hagglund. Revisiting the Ziegler Nichols step response method for PID control. <emphasis>Journal of Process Control</emphasis>, 14(6): 635&#x2013;650, 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=K%2E+J%2E+Astrom+and+T%2E+Hagglund%2E+Revisiting+the+Ziegler+Nichols+step+response+method+for+PID+control%2E+Journal+of+Process+Control%2C+14%286%29%3A+635-650%2C+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib9">N. Audsley, A. Burns, M. Richardson, K. Tindell, and A. J. Wellings. Applying new scheduling theory to static priority pre-emptive scheduling. <emphasis>Software Engineering Journal</emphasis>, 8(5):284&#x2013;292, Sept 1993. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=N%2E+Audsley%2C+A%2E+Burns%2C+M%2E+Richardson%2C+K%2E+Tindell%2C+and+A%2E+J%2E+Wellings%2E+Applying+new+scheduling+theory+to+static+priority+pre-emptive+scheduling%2E+Software+Engineering+Journal%2C+8%285%29%3A284-292%2C+Sept+1993%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib10">R. Badia, F. Escale, E. Gabriel, J. Gimenez, R. Keller, J. Labarta, and M. Muller. Performance prediction in a grid environment. In <emphasis>Grid Computing</emphasis>, pp. 257&#x2013;264, 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=R%2E+Badia%2C+F%2E+Escale%2C+E%2E+Gabriel%2C+J%2E+Gimenez%2C+R%2E+Keller%2C+J%2E+Labarta%2C+and+M%2E+Muller%2E+Performance+prediction+in+a+grid+environment%2E+In+Grid+Computing%2C+pp%2E+257-264%2C+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib11">S. Banachowski, T. Bisson, and S. A. Brandt. Integrating best-effort scheduling into a real-time system. In <emphasis>Real-Time Systems Symposium, 2004. Proceedings. 25th IEEE International</emphasis>, pp. 139&#x2013;150, Dec 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Banachowski%2C+T%2E+Bisson%2C+and+S%2E+A%2E+Brandt%2E+Integrating+best-effort+scheduling+into+a+real-time+system%2E+In+Real-Time+Systems+Symposium%2C+2004%2E+Proceedings%2E+25th+IEEE+International%2C+pp%2E+139-150%2C+Dec+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib12">Anton Beloglazov and Rajkumar Buyya. Energy efficient allocation of virtual machines in cloud data centers. In <emphasis>2010 10th IEEE/ACM International Conference on Cluster, Cloud and Grid Computing (CCGrid)</emphasis>, pp. 577&#x2013;578, May 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Anton+Beloglazov+and+Rajkumar+Buyya%2E+Energy+efficient+allocation+of+virtual+machines+in+cloud+data+centers%2E+In+2010+10th+IEEE%2FACM+International+Conference+on+Cluster%2C+Cloud+and+Grid+Computing+%28CCGrid%29%2C+pp%2E+577-578%2C+May+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib13">Anton Beloglazov and Rajkumar Buyya. Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient Dynamic Consolidation of Virtual Machines in Cloud Data Centers. <emphasis>Concurr. Comput.: Pract. Exper.</emphasis>, 24(13):1397&#x2013;1420, 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Anton+Beloglazov+and+Rajkumar+Buyya%2E+Optimal+Online+Deterministic+Algorithms+and+Adaptive+Heuristics+for+Energy+and+Performance+Efficient+Dynamic+Consolidation+of+Virtual+Machines+in+Cloud+Data+Centers%2E+Concurr%2E+Comput%2E%3A+Pract%2E+Exper%2E%2C+24%2813%29%3A1397-1420%2C+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib14">G. Beltrame, L. Fossati, and D. Sciuto. Decision-theoretic design space exploration of multiprocessor platforms. <emphasis>IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems</emphasis>, 29(7): 1083&#x2013;1095, July 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=G%2E+Beltrame%2C+L%2E+Fossati%2C+and+D%2E+Sciuto%2E+Decision-theoretic+design+space+exploration+of+multiprocessor+platforms%2E+IEEE+Transactions+on+Computer-Aided+Design+of+Integrated+Circuits+and+Systems%2C+29%287%29%3A+1083-1095%2C+July+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib15">Luca Benini, Davide Bertozzi, and Michela Milano. Resource management policy handling multiple use-cases in mpsoc platforms using constraint programming. In <emphasis>Proceedings of the 24th International Conference on Logic Programming</emphasis>, ICLP&#x2019;08, pp. 470&#x2013;484, Berlin, Heidelberg, 2008. Springer-Verlag. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Luca+Benini%2C+Davide+Bertozzi%2C+and+Michela+Milano%2E+Resource+management+policy+handling+multiple+use-cases+in+mpsoc+platforms+using+constraint+programming%2E+In+Proceedings+of+the+24th+International+Conference+on+Logic+Programming%2C+ICLP%2708%2C+pp%2E+470-484%2C+Berlin%2C+Heidelberg%2C+2008%2E+Springer-Verlag%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib16">Guillem Bernat, Antoine Colin, and Stefan M. Petters. Wcet analysis of probabilistic hard real-time systems. In <emphasis>Proceedings of the 23rd IEEE Real-Time Systems Symposium</emphasis>, RTSS&#x2019;02, p. 279&#x2013;, Washington, DC, USA, 2002. IEEE Computer Society. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Guillem+Bernat%2C+Antoine+Colin%2C+and+Stefan+M%2E+Petters%2E+Wcet+analysis+of+probabilistic+hard+real-time+systems%2E+In+Proceedings+of+the+23rd+IEEE+Real-Time+Systems+Symposium%2C+RTSS%2702%2C+p%2E+279-%2C+Washington%2C+DC%2C+USA%2C+2002%2E+IEEE+Computer+Society%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib17">N. Bobroff, A. Kochut, and K. Beaty. Dynamic placement of virtual machines for managing SLA violations. In <emphasis>10th IFIP/IEEE International Symposium on Integrated Network Management, 2007. IM&#x2019;07</emphasis>, pp. 119&#x2013;128, 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=N%2E+Bobroff%2C+A%2E+Kochut%2C+and+K%2E+Beaty%2E+Dynamic+placement+of+virtual+machines+for+managing+SLA+violations%2E+In+10th+IFIP%2FIEEE+International+Symposium+on+Integrated+Network+Management%2C+2007%2E+IM%2707%2C+pp%2E+119-128%2C+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib18">S. H. Bokhari. On the mapping problem. <emphasis>IEEE Trans. Comput.</emphasis>, 30(3):207&#x2013;214, 1981. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+H%2E+Bokhari%2E+On+the+mapping+problem%2E+IEEE+Trans%2E+Comput%2E%2C+30%283%29%3A207-214%2C+1981%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib19">Evgeny Bolotin, Israel Cidon, Ran Ginosar, and Avinoam Kolodny. QNoC: QoS architecture and design process for network on chip. <emphasis>Journal of Sys. Arch.</emphasis>, 50:105&#x2013;128, 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Evgeny+Bolotin%2C+Israel+Cidon%2C+Ran+Ginosar%2C+and+Avinoam+Kolodny%2E+QNoC%3A+QoS+architecture+and+design+process+for+network+on+chip%2E+Journal+of+Sys%2E+Arch%2E%2C+50%3A105-128%2C+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib20">E. W. Briao, D. Barcelos, F. Wronski, and F. R. Wagner. Impact of task migration in NoC-based mpsocs for soft real-time applications. In <emphasis>2007 IFIP International Conference on Very Large Scale Integration</emphasis>, pp. 296&#x2013;299, Oct 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=E%2E+W%2E+Briao%2C+D%2E+Barcelos%2C+F%2E+Wronski%2C+and+F%2E+R%2E+Wagner%2E+Impact+of+task+migration+in+NoC-based+mpsocs+for+soft+real-time+applications%2E+In+2007+IFIP+International+Conference+on+Very+Large+Scale+Integration%2C+pp%2E+296-299%2C+Oct+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib21">Uwe Brinkschulte, Mathias Pacher, and Alexander Von Renteln. Towards an artificial hormone system for self-organizing real-time task allocation. In <emphasis>Software Technologies for Embedded and Ubiquitous Sys.</emphasis>, pp. 339&#x2013;347. Springer, 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Uwe+Brinkschulte%2C+Mathias+Pacher%2C+and+Alexander+Von+Renteln%2E+Towards+an+artificial+hormone+system+for+self-organizing+real-time+task+allocation%2E+In+Software+Technologies+for+Embedded+and+Ubiquitous+Sys%2E%2C+pp%2E+339-347%2E+Springer%2C+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib22">Andrew Burkimsher, Iain Bate, and Leandro Soares Indrusiak. A survey of scheduling metrics and an improved ordering policy for list schedulers operating on workloads with dependencies and a wide variation in execution times. <emphasis>Future Gener. Comput. Syst.</emphasis>, 29(8):2009&#x2013;2025, October 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Andrew+Burkimsher%2C+Iain+Bate%2C+and+Leandro+Soares+Indrusiak%2E+A+survey+of+scheduling+metrics+and+an+improved+ordering+policy+for+list+schedulers+operating+on+workloads+with+dependencies+and+a+wide+variation+in+execution+times%2E+Future+Gener%2E+Comput%2E+Syst%2E%2C+29%288%29%3A2009-2025%2C+October+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib23">Andrew Burkimsher, Iain Bate, and Leandro Soares Indrusiak. A char-acterisation of the workload on an engineering design grid. In <emphasis>Proceedings of the High Performance Computing Symposium</emphasis>, HPC&#x2019;14, pp. 8:1&#x2013;8: 8, San Diego, CA, USA, 2014. Society for Computer Simulation International. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Andrew+Burkimsher%2C+Iain+Bate%2C+and+Leandro+Soares+Indrusiak%2E+A+char-acterisation+of+the+workload+on+an+engineering+design+grid%2E+In+Proceedings+of+the+High+Performance+Computing+Symposium%2C+HPC%2714%2C+pp%2E+8%3A1-8%3A+8%2C+San+Diego%2C+CA%2C+USA%2C+2014%2E+Society+for+Computer+Simulation+International%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib24">Andrew Marc Burkimsher. <emphasis>Fair, Responsive Scheduling of Engineering Workflows on Computing Grids</emphasis>. PhD thesis, UK, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Andrew+Marc+Burkimsher%2E+Fair%2C+Responsive+Scheduling+of+Engineering+Workflows+on+Computing+Grids%2E+PhD+thesis%2C+UK%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib25">A. Burns, D. Prasad, A. Bondavalli, F. Di Giandomenico, K. Ramamritham, J. Stankovic, and L. Strigini. The Meaning and Role of Value in Scheduling Flexible Real-time Systems. <emphasis>J. Syst. Archit.</emphasis>, 46(4):305&#x2013;325, 2000. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Burns%2C+D%2E+Prasad%2C+A%2E+Bondavalli%2C+F%2E+Di+Giandomenico%2C+K%2E+Ramamritham%2C+J%2E+Stankovic%2C+and+L%2E+Strigini%2E+The+Meaning+and+Role+of+Value+in+Scheduling+Flexible+Real-time+Systems%2E+J%2E+Syst%2E+Archit%2E%2C+46%284%29%3A305-325%2C+2000%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib26">Giorgio Buttazzo and Luca Abeni. Adaptive workload management through elastic scheduling. <emphasis>Real-Time Systems</emphasis>, 23(1):7&#x2013;24, 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Giorgio+Buttazzo+and+Luca+Abeni%2E+Adaptive+workload+management+through+elastic+scheduling%2E+Real-Time+Systems%2C+23%281%29%3A7-24%2C+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib27">Rajkumar Buyya and Manzur Murshed. A deadline and budget constrained cost-time optimisation algorithm for scheduling task farming applications on global grids. <emphasis>arXiv:cs/0203020</emphasis>, March 2002. Technical Report, Monash University, March 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Rajkumar+Buyya+and+Manzur+Murshed%2E+A+deadline+and+budget+constrained+cost-time+optimisation+algorithm+for+scheduling+task+farming+applications+on+global+grids%2E+arXiv%3Acs%2F0203020%2C+March+2002%2E+Technical+Report%2C+Monash+University%2C+March+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib28">Rodrigo N. Calheiros and Rajkumar Buyya. Energy-Efficient Scheduling of Urgent Bag-of-Tasks Applications in Clouds Through DVFS. In <emphasis>Proceedings of IEEE International Conference on Cloud Computing Technology and Science (CLOUDCOM)</emphasis>, pp. 342&#x2013;349, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Rodrigo+N%2E+Calheiros+and+Rajkumar+Buyya%2E+Energy-Efficient+Scheduling+of+Urgent+Bag-of-Tasks+Applications+in+Clouds+Through+DVFS%2E+In+Proceedings+of+IEEE+International+Conference+on+Cloud+Computing+Technology+and+Science+%28CLOUDCOM%29%2C+pp%2E+342-349%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib29">I. Caliskanelli and L. S. Indrusiak. Search-Based Parameter Tuning on Application-Level Load Balancing for Distributed Embedded Systems. In <emphasis>IEEE Int. Conf. on High Perf. Comp. and Comms. on Embedded and Ubiquitous Computing (HPCC EUC)</emphasis>, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=I%2E+Caliskanelli+and+L%2E+S%2E+Indrusiak%2E+Search-Based+Parameter+Tuning+on+Application-Level+Load+Balancing+for+Distributed+Embedded+Systems%2E+In+IEEE+Int%2E+Conf%2E+on+High+Perf%2E+Comp%2E+and+Comms%2E+on+Embedded+and+Ubiquitous+Computing+%28HPCC+EUC%29%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib30">Ipek Caliskanelli, Leandro Soares Indrusiak, Fiona Polack, James Harbin, Paul Mitchell, and David Chesmore. Bio-inspired load balancing in large-scale WSNs using pheromone signalling. <emphasis>Int. Journal of Distributed Sensor Networks</emphasis>, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ipek+Caliskanelli%2C+Leandro+Soares+Indrusiak%2C+Fiona+Polack%2C+James+Harbin%2C+Paul+Mitchell%2C+and+David+Chesmore%2E+Bio-inspired+load+balancing+in+large-scale+WSNs+using+pheromone+signalling%2E+Int%2E+Journal+of+Distributed+Sensor+Networks%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib31">Salvatore Carta, Andrea Alimonda, Alessandro Pisano, Andrea Acquaviva, and Luca Benini. A control theoretic approach to energy-efficient pipelined computation in mpsocs. <emphasis>ACM Trans. Embed. Comput. Syst.</emphasis>, 6(4), September 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Salvatore+Carta%2C+Andrea+Alimonda%2C+Alessandro+Pisano%2C+Andrea+Acquaviva%2C+and+Luca+Benini%2E+A+control+theoretic+approach+to+energy-efficient+pipelined+computation+in+mpsocs%2E+ACM+Trans%2E+Embed%2E+Comput%2E+Syst%2E%2C+6%284%29%2C+September+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib32">E. Carvalho, C. Marcon, N. Calazans, and F. Moraes. Evaluation of static and dynamic task mapping algorithms in NoC-based mpsocs. pp. 087&#x2013;090, Oct. 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=E%2E+Carvalho%2C+C%2E+Marcon%2C+N%2E+Calazans%2C+and+F%2E+Moraes%2E+Evaluation+of+static+and+dynamic+task+mapping+algorithms+in+NoC-based+mpsocs%2E+pp%2E+087-090%2C+Oct%2E+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib33">G. Castilhos, M. Mandelli, G. Madalozzo, and F. Moraes. Distributed resource management in NoC-based MPSoCs with dynamic cluster sizes. In <emphasis>IEEE Computer Society Annual Symp. on VLSI</emphasis>, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=G%2E+Castilhos%2C+M%2E+Mandelli%2C+G%2E+Madalozzo%2C+and+F%2E+Moraes%2E+Distributed+resource+management+in+NoC-based+MPSoCs+with+dynamic+cluster+sizes%2E+In+IEEE+Computer+Society+Annual+Symp%2E+on+VLSI%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib34">Ken Chen and Paul Muhlethaler. A Scheduling Algorithm for Tasks Described by Time Value Function. <emphasis>Real-Time Syst.</emphasis>, 10(3):293&#x2013;312, 1996. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ken+Chen+and+Paul+Muhlethaler%2E+A+Scheduling+Algorithm+for+Tasks+Described+by+Time+Value+Function%2E+Real-Time+Syst%2E%2C+10%283%29%3A293-312%2C+1996%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib35">Razvan Cheveresan, Matt Ramsay, Chris Feucht, and Ilya Sharapov. Characteristics of workloads used in high performance and technical computing. In <emphasis>Proceedings of the 21st Annual International Conference on Supercomputing</emphasis>, ICS&#x2019;07, pp. 73&#x2013;82, New York, NY, USA, 2007. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Razvan+Cheveresan%2C+Matt+Ramsay%2C+Chris+Feucht%2C+and+Ilya+Sharapov%2E+Characteristics+of+workloads+used+in+high+performance+and+technical+computing%2E+In+Proceedings+of+the+21st+Annual+International+Conference+on+Supercomputing%2C+ICS%2707%2C+pp%2E+73-82%2C+New+York%2C+NY%2C+USA%2C+2007%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib36">C.-L. Chou and R. Marculescu. Run-time task allocation considering user behavior in embedded multiprocessor networks-on-chip. <emphasis>Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on</emphasis>, 29(1):78&#x2013;91, Jan. 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=C%2E-L%2E+Chou+and+R%2E+Marculescu%2E+Run-time+task+allocation+considering+user+behavior+in+embedded+multiprocessor+networks-on-chip%2E+Computer-Aided+Design+of+Integrated+Circuits+and+Systems%2C+IEEE+Transactions+on%2C+29%281%29%3A78-91%2C+Jan%2E+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib37">Chen-Ling Chou and R. Marculescu. Incremental run-time application mapping for homogeneous NoCs with multiple voltage levels. pp. 161&#x2013;166, 30 2007-Oct. 3 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chen-Ling+Chou+and+R%2E+Marculescu%2E+Incremental+run-time+application+mapping+for+homogeneous+NoCs+with+multiple+voltage+levels%2E+pp%2E+161-166%2C+30+2007-Oct%2E+3+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib38">Chen-Ling Chou and R. Marculescu. User-aware dynamic task allocation in networks-on-chip. pp. 1232&#x2013;1237, March 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chen-Ling+Chou+and+R%2E+Marculescu%2E+User-aware+dynamic+task+allocation+in+networks-on-chip%2E+pp%2E+1232-1237%2C+March+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib39">Anup Das, Akash Kumar, and Bharadwaj Veeravalli. Energy-Aware Communication and Remapping of Tasks for Reliable Multimedia Multiprocessor Systems. In <emphasis>ICPADS</emphasis>, 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Anup+Das%2C+Akash+Kumar%2C+and+Bharadwaj+Veeravalli%2E+Energy-Aware+Communication+and+Remapping+of+Tasks+for+Reliable+Multimedia+Multiprocessor+Systems%2E+In+ICPADS%2C+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib40">R. I. Davis and A. Burns. Hierarchical fixed priority pre-emptive scheduling. In <emphasis>26th IEEE International Real-Time Systems Symposium (RTSS&#x2019;05)</emphasis>, pp. 10 pp.&#x2013;398, Dec 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=R%2E+I%2E+Davis+and+A%2E+Burns%2E+Hierarchical+fixed+priority+pre-emptive+scheduling%2E+In+26th+IEEE+International+Real-Time+Systems+Symposium+%28RTSS%2705%29%2C+pp%2E+10+pp%2E-398%2C+Dec+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib41">Robert I. Davis and Alan Burns. A survey of hard real-time scheduling for multiprocessor systems. <emphasis>ACM Comput. Surv.</emphasis>, 43(4):35:1&#x2013;35:44, October 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Robert+I%2E+Davis+and+Alan+Burns%2E+A+survey+of+hard+real-time+scheduling+for+multiprocessor+systems%2E+ACM+Comput%2E+Surv%2E%2C+43%284%29%3A35%3A1-35%3A44%2C+October+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib42">Robert I. Davis and Alan Burns. A survey of hard real-time scheduling for multiprocessor systems. <emphasis>ACM Comput. Surv.</emphasis>, 43(4):35:1&#x2013;35:44, October 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Robert+I%2E+Davis+and+Alan+Burns%2E+A+survey+of+hard+real-time+scheduling+for+multiprocessor+systems%2E+ACM+Comput%2E+Surv%2E%2C+43%284%29%3A35%3A1-35%3A44%2C+October+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib43">E. L. de Souza Carvalho, N. L. V. Calazans, and F. G. Moraes. Dynamic task mapping for MPSoCs. <emphasis>IEEE Design Test of Computers</emphasis>, 27:26&#x2013;35, 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=E%2E+L%2E+de+Souza+Carvalho%2C+N%2E+L%2E+V%2E+Calazans%2C+and+F%2E+G%2E+Moraes%2E+Dynamic+task+mapping+for+MPSoCs%2E+IEEE+Design+Test+of+Computers%2C+27%3A26-35%2C+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib44">Yixin Diao, N. Gandhi, J. L. Hellerstein, S. Parekh, and D. M. Tilbury. Using mimo feedback control to enforce policies for interrelated metrics with application to the apache web server. In <emphasis>Network Operations and Management Symposium, 2002. NOMS 2002. 2002 IEEE/IFIP</emphasis>, pp. 219&#x2013;234, 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Yixin+Diao%2C+N%2E+Gandhi%2C+J%2E+L%2E+Hellerstein%2C+S%2E+Parekh%2C+and+D%2E+M%2E+Tilbury%2E+Using+mimo+feedback+control+to+enforce+policies+for+interrelated+metrics+with+application+to+the+apache+web+server%2E+In+Network+Operations+and+Management+Symposium%2C+2002%2E+NOMS+2002%2E+2002+IEEE%2FIFIP%2C+pp%2E+219-234%2C+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib45">S. Djosic and M. Jevtic. Dynamic voltage scaling for real-time systems under fault tolerance constraints. In <emphasis>Microelectronics (MIEL), 2012 28th International Conference on</emphasis>, pp. 375&#x2013;378, May 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Djosic+and+M%2E+Jevtic%2E+Dynamic+voltage+scaling+for+real-time+systems+under+fault+tolerance+constraints%2E+In+Microelectronics+%28MIEL%29%2C+2012+28th+International+Conference+on%2C+pp%2E+375-378%2C+May+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib46">Florin Dobrian, Vyas Sekar,AsadAwan, Ion Stoica, Dilip Joseph,Aditya Ganjam, Jibin Zhan, and Hui Zhang. Understanding the Impact of Video Quality on User Engagement. In <emphasis>SIGCOMM Conf.</emphasis>, SIGCOMM&#x2019;11. ACM, 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Florin+Dobrian%2C+Vyas+Sekar%2CAsadAwan%2C+Ion+Stoica%2C+Dilip+Joseph%2CAditya+Ganjam%2C+Jibin+Zhan%2C+and+Hui+Zhang%2E+Understanding+the+Impact+of+Video+Quality+on+User+Engagement%2E+In+SIGCOMM+Conf%2E%2C+SIGCOMM%2711%2E+ACM%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib47">J. Eker, J. W. Janneck, E. A. Lee, Jie Liu, Xiaojun Liu, J. Ludvig, S. Neuendorffer, S. Sachs, and Yuhong Xiong. Taming heterogeneity &#x2013; the Ptolemy approach. <emphasis>Proceedings of the IEEE</emphasis>, 91(1):127&#x2013;144, 2003. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+Eker%2C+J%2E+W%2E+Janneck%2C+E%2E+A%2E+Lee%2C+Jie+Liu%2C+Xiaojun+Liu%2C+J%2E+Ludvig%2C+S%2E+Neuendorffer%2C+S%2E+Sachs%2C+and+Yuhong+Xiong%2E+Taming+heterogeneity+-+the+Ptolemy+approach%2E+Proceedings+of+the+IEEE%2C+91%281%29%3A127-144%2C+2003%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib48">Jakob Engblom,Andreas Ermedahl, Mikael Sj&#x00F6;din, Jan Gustafsson, and Hans Hansson. Worst-case execution-time analysis for embedded real-time systems. <emphasis>International Journal on Software Tools for Technology Transfer</emphasis>, 4(4):437&#x2013;455, 2003. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Jakob+Engblom%2CAndreas+Ermedahl%2C+Mikael+Sj%F6din%2C+Jan+Gustafsson%2C+and+Hans+Hansson%2E+Worst-case+execution-time+analysis+for+embedded+real-time+systems%2E+International+Journal+on+Software+Tools+for+Technology+Transfer%2C+4%284%29%3A437-455%2C+2003%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib49">Stijn Eyerman and Lieven Eeckhout. Fine-grained DVFS Using On-chip Regulators. <emphasis>ACM Trans. Archit. Code Optim.</emphasis>, 8(1):1:1&#x2013;1:24, 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Stijn+Eyerman+and+Lieven+Eeckhout%2E+Fine-grained+DVFS+Using+On-chip+Regulators%2E+ACM+Trans%2E+Archit%2E+Code+Optim%2E%2C+8%281%29%3A1%3A1-1%3A24%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib50">Hamid Mohammadi Fard, Radu Prodan, Juan Jose Durillo Barrionuevo, and Thomas Fahringer. A multi-objective approach for workflow scheduling in heterogeneous environments. In <emphasis>IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID)</emphasis>, pp. 300&#x2013;309, 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Hamid+Mohammadi+Fard%2C+Radu+Prodan%2C+Juan+Jose+Durillo+Barrionuevo%2C+and+Thomas+Fahringer%2E+A+multi-objective+approach+for+workflow+scheduling+in+heterogeneous+environments%2E+In+IEEE%2FACM+International+Symposium+on+Cluster%2C+Cloud+and+Grid+Computing+%28CCGRID%29%2C+pp%2E+300-309%2C+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib51">Dror Feitelson. <emphasis>Workload Modeling for Computer Systems Performance Evaluation</emphasis>. 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Dror+Feitelson%2E+Workload+Modeling+for+Computer+Systems+Performance+Evaluation%2E+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib52">J. D. Gelas. Dynamic power management: A quantitative approach. http://www.anandtech.com/show/2919, 2010. Accessed: 2016-06-05. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+D%2E+Gelas%2E+Dynamic+power+management%3A+A+quantitative+approach%2E+http%3A%2F%2Fwww%2Eanandtech%2Ecom%2Fshow%2F2919%2C+2010%2E+Accessed%3A+2016-06-05%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib53">H. A. Ghazzawi, I. Bate, and L. S. Indrusiak. A control theoretic approach for workflow management. In <emphasis>Engineering of Complex Computer Systems (ICECCS), 2012 17th International Conference on</emphasis>, pp. 280&#x2013;289, July 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=H%2E+A%2E+Ghazzawi%2C+I%2E+Bate%2C+and+L%2E+S%2E+Indrusiak%2E+A+control+theoretic+approach+for+workflow+management%2E+In+Engineering+of+Complex+Computer+Systems+%28ICECCS%29%2C+2012+17th+International+Conference+on%2C+pp%2E+280-289%2C+July+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib54">H. A. Ghazzawi, I. Bate, and L. S. Indrusiak. A control theoretic approach for workflow management. In <emphasis>2012 17th International Conference on Engineering of Complex Computer Systems (ICECCS)</emphasis>, pp. 280 &#x2013;289, July 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=H%2E+A%2E+Ghazzawi%2C+I%2E+Bate%2C+and+L%2E+S%2E+Indrusiak%2E+A+control+theoretic+approach+for+workflow+management%2E+In+2012+17th+International+Conference+on+Engineering+of+Complex+Computer+Systems+%28ICECCS%29%2C+pp%2E+280+-289%2C+July+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib55">Stefan Valentin Gheorghita, Martin Palkovic, Juan Hamers, Arnout Vandecappelle, Stelios Mamagkakis, Twan Basten, Lieven Eeckhout, Henk Corporaal, Francky Catthoor, Frederik Vandeputte, and Koen De Bosschere. System-scenario-based design of dynamic embedded systems. <emphasis>ACM Trans. Des. Autom. Electron. Syst.</emphasis>, 14(1):3:1&#x2013;3:45, January 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Stefan+Valentin+Gheorghita%2C+Martin+Palkovic%2C+Juan+Hamers%2C+Arnout+Vandecappelle%2C+Stelios+Mamagkakis%2C+Twan+Basten%2C+Lieven+Eeckhout%2C+Henk+Corporaal%2C+Francky+Catthoor%2C+Frederik+Vandeputte%2C+and+Koen+De+Bosschere%2E+System-scenario-based+design+of+dynamic+embedded+systems%2E+ACM+Trans%2E+Des%2E+Autom%2E+Electron%2E+Syst%2E%2C+14%281%29%3A3%3A1-3%3A45%2C+January+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib56">Georgia Giannopoulou, Nikolay Stoimenov, Pengcheng Huang, and Lothar Thiele. Scheduling of mixed-criticality applications on resource-sharing multicore systems. In <emphasis>Proceedings of the Eleventh ACM International Conference on Embedded Software</emphasis>, EMSOFT&#x2019;13, pp. 17: 1&#x2013;17:15, Piscataway, NJ, USA, 2013. IEEE Press. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Georgia+Giannopoulou%2C+Nikolay+Stoimenov%2C+Pengcheng+Huang%2C+and+Lothar+Thiele%2E+Scheduling+of+mixed-criticality+applications+on+resource-sharing+multicore+systems%2E+In+Proceedings+of+the+Eleventh+ACM+International+Conference+on+Embedded+Software%2C+EMSOFT%2713%2C+pp%2E+17%3A+1-17%3A15%2C+Piscataway%2C+NJ%2C+USA%2C+2013%2E+IEEE+Press%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib57">J. L. Hellerstein, Y. Diao, S. Parekh, and D. M. Tilbury. <emphasis>Feedback Control of Computing Systems</emphasis>. Wiley-IEEE Press, 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+L%2E+Hellerstein%2C+Y%2E+Diao%2C+S%2E+Parekh%2C+and+D%2E+M%2E+Tilbury%2E+Feedback+Control+of+Computing+Systems%2E+Wiley-IEEE+Press%2C+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib58">Philip K. F. H&#x00F6;lzenspies, Johann L. Hurink, Jan Kuper, and Gerard J. M. Smit. Run-time spatial mapping of streaming applications to a heterogeneous multi-processor system-on-chip (mpsoc). pp. 212&#x2013;217, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Philip+K%2E+F%2E+H%F6lzenspies%2C+Johann+L%2E+Hurink%2C+Jan+Kuper%2C+and+Gerard+J%2E+M%2E+Smit%2E+Run-time+spatial+mapping+of+streaming+applications+to+a+heterogeneous+multi-processor+system-on-chip+%28mpsoc%29%2E+pp%2E+212-217%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib59">S. Hong, T. Chantem, and X. S. Hu. Meeting end-to-end deadlines through distributed local deadline assignments. In <emphasis>Real-Time Systems Symposium (RTSS), 2011 IEEE 32nd</emphasis>, pp. 183&#x2013;192, Nov 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Hong%2C+T%2E+Chantem%2C+and+X%2E+S%2E+Hu%2E+Meeting+end-to-end+deadlines+through+distributed+local+deadline+assignments%2E+In+Real-Time+Systems+Symposium+%28RTSS%29%2C+2011+IEEE+32nd%2C+pp%2E+183-192%2C+Nov+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib60">Jingcao Hu and R. Marculescu. Energy-aware mapping for tile-based NoC architectures under performance constraints. pp. 233&#x2013;239, jan. 2003. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Jingcao+Hu+and+R%2E+Marculescu%2E+Energy-aware+mapping+for+tile-based+NoC+architectures+under+performance+constraints%2E+pp%2E+233-239%2C+jan%2E+2003%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib61">Leandro Soares Indrusiak. End-to-end schedulability tests for multiprocessor embedded systems based on networks-on-chip with priority-preemptive arbitration. <emphasis>Journal of Systems Architecture</emphasis>, 60(7): 553&#x2013;561, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Leandro+Soares+Indrusiak%2E+End-to-end+schedulability+tests+for+multiprocessor+embedded+systems+based+on+networks-on-chip+with+priority-preemptive+arbitration%2E+Journal+of+Systems+Architecture%2C+60%287%29%3A+553-561%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib62">David E. Irwin, Laura E. Grit, and Jeffrey S. Chase. Balancing Risk and Reward in a Market-Based Task Service. In <emphasis>IEEE International Symposium on High Performance Distributed Computing (HPDC)</emphasis>, pp. 160&#x2013;169, 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=David+E%2E+Irwin%2C+Laura+E%2E+Grit%2C+and+Jeffrey+S%2E+Chase%2E+Balancing+Risk+and+Reward+in+a+Market-Based+Task+Service%2E+In+IEEE+International+Symposium+on+High+Performance+Distributed+Computing+%28HPDC%29%2C+pp%2E+160-169%2C+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib63">D. Isovic, G. Fohler, and L. Steffens. Timing constraints of MPEG-2 decoding for high quality video: misconceptions and realistic assumptions. In <emphasis>Euromicro Conference on Real-Time Sys.</emphasis>, 2003. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=D%2E+Isovic%2C+G%2E+Fohler%2C+and+L%2E+Steffens%2E+Timing+constraints+of+MPEG-2+decoding+for+high+quality+video%3A+misconceptions+and+realistic+assumptions%2E+In+Euromicro+Conference+on+Real-Time+Sys%2E%2C+2003%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib64">P. Janert. <emphasis>Feedback Control for Computer Systems</emphasis>. O&#x2019;Reilly Media, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=P%2E+Janert%2E+Feedback+Control+for+Computer+Systems%2E+O%27Reilly+Media%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib65">B. Kao and H. Garcia-Molina. Deadline assignment in a distributed soft real-time system. <emphasis>IEEE Trans. on Parallel and Distributed Sys.</emphasis>, 8:1268&#x2013;1274, 1997. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=B%2E+Kao+and+H%2E+Garcia-Molina%2E+Deadline+assignment+in+a+distributed+soft+real-time+system%2E+IEEE+Trans%2E+on+Parallel+and+Distributed+Sys%2E%2C+8%3A1268-1274%2C+1997%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib66">Bhavesh Khemka, Ryan Friese, Sudeep Pasricha, Anthony A Maciejewski, Howard Jay Siegel, Gregory A Koenig, Sarah Powers, Marcia Hilton, Rajendra Rambharos, and Steve Poole. Utility maximizing dynamic resource management in an oversubscribed energy-constrained heterogeneous computing system. <emphasis>Sustainable Computing: Informatics and Systems</emphasis>, 5:14&#x2013;30, 2015. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Bhavesh+Khemka%2C+Ryan+Friese%2C+Sudeep+Pasricha%2C+Anthony+A+Maciejewski%2C+Howard+Jay+Siegel%2C+Gregory+A+Koenig%2C+Sarah+Powers%2C+Marcia+Hilton%2C+Rajendra+Rambharos%2C+and+Steve+Poole%2E+Utility+maximizing+dynamic+resource+management+in+an+oversubscribed+energy-constrained+heterogeneous+computing+system%2E+Sustainable+Computing%3A+Informatics+and+Systems%2C+5%3A14-30%2C+2015%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib67">Abbas Eslami Kiasari, Axel Jantsch, and Zhonghai Lu. Mathematical formalisms for performance evaluation of networks-on-chip. <emphasis>ACM Comput. Surv.</emphasis>, 45(3):38:1&#x2013;38:41, July 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Abbas+Eslami+Kiasari%2C+Axel+Jantsch%2C+and+Zhonghai+Lu%2E+Mathematical+formalisms+for+performance+evaluation+of+networks-on-chip%2E+ACM+Comput%2E+Surv%2E%2C+45%283%29%3A38%3A1-38%3A41%2C+July+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib68">Wonyoung Kim, M. S. Gupta, G. Y. Wei, and D. Brooks. System level analysis of fast, per-core dvfs using on-chip switching regulators. In <emphasis>2008 IEEE 14th International Symposium on High Performance Computer Architecture</emphasis>, pp. 123&#x2013;134, Feb 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Wonyoung+Kim%2C+M%2E+S%2E+Gupta%2C+G%2E+Y%2E+Wei%2C+and+D%2E+Brooks%2E+System+level+analysis+of+fast%2C+per-core+dvfs+using+on-chip+switching+regulators%2E+In+2008+IEEE+14th+International+Symposium+on+High+Performance+Computer+Architecture%2C+pp%2E+123-134%2C+Feb+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib69">Sebastian Kobbe, Lars Bauer, Daniel Lohmann, Wolfgang Schr&#x00F6;derPreikschat, and J&#x00F6;rg Henkel. DistRM: distributed resource management for on-chip many-core systems. In <emphasis>Int. Conf. on Hardware/software codesign and sys. synthesis (CODES+ISSS)</emphasis>, 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Sebastian+Kobbe%2C+Lars+Bauer%2C+Daniel+Lohmann%2C+Wolfgang+Schr%F6derPreikschat%2C+and+J%F6rg+Henkel%2E+DistRM%3A+distributed+resource+management+for+on-chip+many-core+systems%2E+In+Int%2E+Conf%2E+on+Hardware%2Fsoftware+codesign+and+sys%2E+synthesis+%28CODES%2BISSS%29%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib70">Jonathan Koomey. Growth in data center electricity use 2005 to 2010. <emphasis>A report by Analytical Press, completed at the request of The New York Times</emphasis>, 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Jonathan+Koomey%2E+Growth+in+data+center+electricity+use+2005+to+2010%2E+A+report+by+Analytical+Press%2C+completed+at+the+request+of+The+New+York+Times%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib71">H. Kopetz. The time-triggered model of computation. In, <emphasis>The 19th IEEE Real-Time Systems Symposium, 1998. Proceedings</emphasis>, pp. 168 &#x2013;177, December 1998. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=H%2E+Kopetz%2E+The+time-triggered+model+of+computation%2E+In%2C+The+19th+IEEE+Real-Time+Systems+Symposium%2C+1998%2E+Proceedings%2C+pp%2E+168+-177%2C+December+1998%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib72">A. Kumar, B. Mesman, B. Theelen, H. Corporaal, and H. Yajun. Resource manager for non-preemptive heterogeneous multiprocessor system-on-chip. In <emphasis>Proceedings of the 2006 IEEE/ACM/IFIP Workshop on Embedded Systems for Real Time Multimedia</emphasis>, ESTMED&#x2019;06, pp. 33&#x2013;38, Washington, DC, USA, 2006. IEEE Computer Society. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Kumar%2C+B%2E+Mesman%2C+B%2E+Theelen%2C+H%2E+Corporaal%2C+and+H%2E+Yajun%2E+Resource+manager+for+non-preemptive+heterogeneous+multiprocessor+system-on-chip%2E+In+Proceedings+of+the+2006+IEEE%2FACM%2FIFIP+Workshop+on+Embedded+Systems+for+Real+Time+Multimedia%2C+ESTMED%2706%2C+pp%2E+33-38%2C+Washington%2C+DC%2C+USA%2C+2006%2E+IEEE+Computer+Society%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib73">Yu-Kwong Kwok, Anthony A. Maciejewski, Howard Jay Siegel, Ishfaq Ahmad, and Arif Ghafoor. A semi-static approach to mapping dynamic iterative tasks onto heterogeneous computing systems. <emphasis>J. Parallel Distrib. Comput.</emphasis>, 66(1):77&#x2013;98, January 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Yu-Kwong+Kwok%2C+Anthony+A%2E+Maciejewski%2C+Howard+Jay+Siegel%2C+Ishfaq+Ahmad%2C+and+Arif+Ghafoor%2E+A+semi-static+approach+to+mapping+dynamic+iterative+tasks+onto+heterogeneous+computing+systems%2E+J%2E+Parallel+Distrib%2E+Comput%2E%2C+66%281%29%3A77-98%2C+January+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib74">C. Lee, S. Kim, and S. Ha. Efficient run-time resource management of a manycore accelerator for stream-based applications. In <emphasis>The 11th IEEE Symposium on Embedded Systems for Real-time Multimedia</emphasis>, pp. 51&#x2013;60, Oct 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=C%2E+Lee%2C+S%2E+Kim%2C+and+S%2E+Ha%2E+Efficient+run-time+resource+management+of+a+manycore+accelerator+for+stream-based+applications%2E+In+The+11th+IEEE+Symposium+on+Embedded+Systems+for+Real-time+Multimedia%2C+pp%2E+51-60%2C+Oct+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib75">Yann-Hang Lee, Daeyoung Kim, M. Younis, J. Zhou, and J. McElroy. Resource scheduling in dependable integrated modular avionics. In <emphasis>Dependable Systems and Networks, 2000. DSN 2000. Proceedings International Conference on</emphasis>, pp. 14&#x2013;23, 2000. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Yann-Hang+Lee%2C+Daeyoung+Kim%2C+M%2E+Younis%2C+J%2E+Zhou%2C+and+J%2E+McElroy%2E+Resource+scheduling+in+dependable+integrated+modular+avionics%2E+In+Dependable+Systems+and+Networks%2C+2000%2E+DSN+2000%2E+Proceedings+International+Conference+on%2C+pp%2E+14-23%2C+2000%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib76">C. Li and L. Li. Multi-level scheduling for global optimization in grid computing. <emphasis>Computers &#x0026; Electrical Engineering</emphasis>, 34(3):202&#x2013;221, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=C%2E+Li+and+L%2E+Li%2E+Multi-level+scheduling+for+global+optimization+in+grid+computing%2E+Computers+%26+Electrical+Engineering%2C+34%283%29%3A202-221%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib77">Bin Lin, Arindam Mallik, Peter A. Dinda, Gokhan Memik, and Robert P. Dick. Power reduction through measurement and modeling of users and cpus: Summary. <emphasis>SIGMETRICS Perform. Eval. Rev.</emphasis>, 35(1): 363&#x2013;364, June 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Bin+Lin%2C+Arindam+Mallik%2C+Peter+A%2E+Dinda%2C+Gokhan+Memik%2C+and+Robert+P%2E+Dick%2E+Power+reduction+through+measurement+and+modeling+of+users+and+cpus%3A+Summary%2E+SIGMETRICS+Perform%2E+Eval%2E+Rev%2E%2C+35%281%29%3A+363-364%2C+June+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib78">J. W. S. Liu. <emphasis>Real-Time Systems</emphasis>. Prentice-Hall, 2000. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+W%2E+S%2E+Liu%2E+Real-Time+Systems%2E+Prentice-Hall%2C+2000%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib79">Carey Douglass Locke. <emphasis>Best-effort Decision-making for Real-time Scheduling</emphasis>. PhD thesis, Pittsburgh, PA, USA, 1986. AAI8702895. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Carey+Douglass+Locke%2E+Best-effort+Decision-making+for+Real-time+Scheduling%2E+PhD+thesis%2C+Pittsburgh%2C+PA%2C+USA%2C+1986%2E+AAI8702895%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib80">C. Lu, J. A. Stankovic, G. Tao, and S. H. Son. Design and evaluation of a feedback control edf scheduling algorithm. In <emphasis>Real-Time Systems Symposium, 1999. Proceedings. The 20th IEEE</emphasis>, pp. 56&#x2013;67, 1999. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=C%2E+Lu%2C+J%2E+A%2E+Stankovic%2C+G%2E+Tao%2C+and+S%2E+H%2E+Son%2E+Design+and+evaluation+of+a+feedback+control+edf+scheduling+algorithm%2E+In+Real-Time+Systems+Symposium%2C+1999%2E+Proceedings%2E+The+20th+IEEE%2C+pp%2E+56-67%2C+1999%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib81">Chenyang Lu, John A. Stankovic, Tarek F. Abdelzaher, Gang Tao, Sang H. Son, and Michael Marley. Performance specifications and metrics for adaptive real-time systems. In <emphasis>Proceedings of the 21st IEEE Conference on Real-time Systems Symposium</emphasis>, RTSS&#x2019;10, pp. 13&#x2013;23, Washington, DC, USA, 2000. IEEE Computer Society. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chenyang+Lu%2C+John+A%2E+Stankovic%2C+Tarek+F%2E+Abdelzaher%2C+Gang+Tao%2C+Sang+H%2E+Son%2C+and+Michael+Marley%2E+Performance+specifications+and+metrics+for+adaptive+real-time+systems%2E+In+Proceedings+of+the+21st+IEEE+Conference+on+Real-time+Systems+Symposium%2C+RTSS%2710%2C+pp%2E+13-23%2C+Washington%2C+DC%2C+USA%2C+2000%2E+IEEE+Computer+Society%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib82">Chenyang Lu, JohnA. Stankovic, Sang H. Son, and Gang Tao. Feedback control real-time scheduling: Framework, modeling, and algorithms*. <emphasis>Real-Time Syst.</emphasis>, 23(1/2):85&#x2013;126, July 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chenyang+Lu%2C+JohnA%2E+Stankovic%2C+Sang+H%2E+Son%2C+and+Gang+Tao%2E+Feedback+control+real-time+scheduling%3A+Framework%2C+modeling%2C+and+algorithms%2A%2E+Real-Time+Syst%2E%2C+23%281%2F2%29%3A85-126%2C+July+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib83">Chenyang Lu, Xiaorui Wang, and X. Koutsoukos. Feedback utilization control in distributed real-time systems with end-to-end tasks. <emphasis>Parallel and Distributed Systems, IEEE Transactions on</emphasis>, 16(6):550&#x2013;561, June 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chenyang+Lu%2C+Xiaorui+Wang%2C+and+X%2E+Koutsoukos%2E+Feedback+utilization+control+in+distributed+real-time+systems+with+end-to-end+tasks%2E+Parallel+and+Distributed+Systems%2C+IEEE+Transactions+on%2C+16%286%29%3A550-561%2C+June+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib84">Chenyang Lu, Xiaorui Wang, and X. Koutsoukos. Feedback utilization control in distributed real-time systems with end-to-end tasks. <emphasis>IEEE Transactions on Parallel and Distributed Systems</emphasis>, 16(6):550&#x2013;561, June 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chenyang+Lu%2C+Xiaorui+Wang%2C+and+X%2E+Koutsoukos%2E+Feedback+utilization+control+in+distributed+real-time+systems+with+end-to-end+tasks%2E+IEEE+Transactions+on+Parallel+and+Distributed+Systems%2C+16%286%29%3A550-561%2C+June+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib85">Shih-Shen Lu, Chun-Hsien Lu, and Pao-Ann Hsiung. Congestion-and energy-aware run-time mapping for tile-based network-on-chip architecture. pp. 300&#x2013;305, Aug. 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Shih-Shen+Lu%2C+Chun-Hsien+Lu%2C+and+Pao-Ann+Hsiung%2E+Congestion-and+energy-aware+run-time+mapping+for+tile-based+network-on-chip+architecture%2E+pp%2E+300-305%2C+Aug%2E+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib86">Bertram Ludscher, Ilkay Altintas, Chad Berkley, Dan Higgins, Efrat Jaeger, Matthew Jones, Edward A. Lee, Jing Tao, and Yang Zhao. Scientific workflow management and the kepler system. <emphasis>Concurrency and Computation: Practice and Experience</emphasis>, 18(10):1039&#x2013;1065, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Bertram+Ludscher%2C+Ilkay+Altintas%2C+Chad+Berkley%2C+Dan+Higgins%2C+Efrat+Jaeger%2C+Matthew+Jones%2C+Edward+A%2E+Lee%2C+Jing+Tao%2C+and+Yang+Zhao%2E+Scientific+workflow+management+and+the+kepler+system%2E+Concurrency+and+Computation%3A+Practice+and+Experience%2C+18%2810%29%3A1039-1065%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib87">M. Mandelli, L. Ost, E. Carara, G. Guindani, T. Gouvea, G. Medeiros, and F. G. Moraes. Energy-aware dynamic task mapping for NoC-based MPSoCs. In <emphasis>2011 IEEE International Symposium on Circuits and Systems (ISCAS)</emphasis>, pp. 1676&#x2013;1679, May 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+Mandelli%2C+L%2E+Ost%2C+E%2E+Carara%2C+G%2E+Guindani%2C+T%2E+Gouvea%2C+G%2E+Medeiros%2C+and+F%2E+G%2E+Moraes%2E+Energy-aware+dynamic+task+mapping+for+NoC-based+MPSoCs%2E+In+2011+IEEE+International+Symposium+on+Circuits+and+Systems+%28ISCAS%29%2C+pp%2E+1676-1679%2C+May+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib88">C. A. M. Marcon, E. I. Moreno, N. L. V. Calazans, and F. G. Moraes. Comparison of network-on-chip mapping algorithms targeting low energy consumption. <emphasis>Computers Digital Techniques, IET</emphasis>, 2(6):471&#x2013;482, November 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=C%2E+A%2E+M%2E+Marcon%2C+E%2E+I%2E+Moreno%2C+N%2E+L%2E+V%2E+Calazans%2C+and+F%2E+G%2E+Moraes%2E+Comparison+of+network-on-chip+mapping+algorithms+targeting+low+energy+consumption%2E+Computers+Digital+Techniques%2C+IET%2C+2%286%29%3A471-482%2C+November+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib89">G. Mariani, P. Avasare, G. Vanmeerbeeck, C. Ykman-Couvreur, G. Palermo, C. Silvano, and V. Zaccaria. An industrial design space exploration framework for supporting run-time resource management on multi-core systems. In <emphasis>2010 Design, Automation Test in Europe Conference Exhibition (DATE 2010)</emphasis>, pp. 196&#x2013;201, March 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=G%2E+Mariani%2C+P%2E+Avasare%2C+G%2E+Vanmeerbeeck%2C+C%2E+Ykman-Couvreur%2C+G%2E+Palermo%2C+C%2E+Silvano%2C+and+V%2E+Zaccaria%2E+An+industrial+design+space+exploration+framework+for+supporting+run-time+resource+management+on+multi-core+systems%2E+In+2010+Design%2C+Automation+Test+in+Europe+Conference+Exhibition+%28DATE+2010%29%2C+pp%2E+196-201%2C+March+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib90">Andrew Stephen McGough, Ali Afzal, John Darlington, Nathalie Furmento, Anthony Mayer, and Laurie Young. Making the grid predictable through reservations and performance modelling. <emphasis>Comput. J.</emphasis>, 48(3):358&#x2013;368, May 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Andrew+Stephen+McGough%2C+Ali+Afzal%2C+John+Darlington%2C+Nathalie+Furmento%2C+Anthony+Mayer%2C+and+Laurie+Young%2E+Making+the+grid+predictable+through+reservations+and+performance+modelling%2E+Comput%2E+J%2E%2C+48%283%29%3A358-368%2C+May+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib91">H. R. Mendis, L. S. Indrusiak, and N. C. Audsley. Bio-inspired distributed task remapping for multiple video stream decoding on homogeneous NoCs. In <emphasis>2015 13th IEEE Symposium on Embedded Systems For Real-time Multimedia (ESTIMedia)</emphasis>, pp. 1&#x2013;10, October 2015. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=H%2E+R%2E+Mendis%2C+L%2E+S%2E+Indrusiak%2C+and+N%2E+C%2E+Audsley%2E+Bio-inspired+distributed+task+remapping+for+multiple+video+stream+decoding+on+homogeneous+NoCs%2E+In+2015+13th+IEEE+Symposium+on+Embedded+Systems+For+Real-time+Multimedia+%28ESTIMedia%29%2C+pp%2E+1-10%2C+October+2015%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib92">Hashan R. Mendis, Leandro Soares Indrusiak, and Neil C. Audsley. Predictability and utilisation trade-off in the dynamic management of multiple video stream decoding on network-on-chip based homogeneous embedded multi-cores. In <emphasis>Proc. of the 22nd Int. Conf. on Real-Time Networks and Sys.</emphasis>, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Hashan+R%2E+Mendis%2C+Leandro+Soares+Indrusiak%2C+and+Neil+C%2E+Audsley%2E+Predictability+and+utilisation+trade-off+in+the+dynamic+management+of+multiple+video+stream+decoding+on+network-on-chip+based+homogeneous+embedded+multi-cores%2E+In+Proc%2E+of+the+22nd+Int%2E+Conf%2E+on+Real-Time+Networks+and+Sys%2E%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib93">Dejan S. Mil&#x00F3;i&#x010D;i&#x0107;, Fred Douglis, Yves Paindaveine, Richard Wheeler, and Songnian Zhou. Process migration. <emphasis>ACM Comput. Surv.</emphasis>, 32(3): 241&#x2013;299, September 2000. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Dejan+S%2E+Mil%F3icic%2C+Fred+Douglis%2C+Yves+Paindaveine%2C+Richard+Wheeler%2C+and+Songnian+Zhou%2E+Process+migration%2E+ACM+Comput%2E+Surv%2E%2C+32%283%29%3A+241-299%2C+September+2000%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib94">A. Monot, N. Navet, B. Bavoux, and F. Simonot-Lion. Multisource software on multicore automotive ecus &#x2013; combining runnable sequencing with task scheduling. <emphasis>IEEE Transactions on Industrial Electronics</emphasis>, 59(10):3934&#x2013;3942, Oct 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Monot%2C+N%2E+Navet%2C+B%2E+Bavoux%2C+and+F%2E+Simonot-Lion%2E+Multisource+software+on+multicore+automotive+ecus+-+combining+runnable+sequencing+with+task+scheduling%2E+IEEE+Transactions+on+Industrial+Electronics%2C+59%2810%29%3A3934-3942%2C+Oct+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib95">O. Moreira, J. D. Mol, M. Bekooij, and J. van Meerbergen. Multiprocessor resource allocation for hard-real-time streaming with a dynamic job-mix. In <emphasis>11th IEEE Real Time and Embedded Technology and Applications Symposium</emphasis>, pp. 332&#x2013;341, March 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=O%2E+Moreira%2C+J%2E+D%2E+Mol%2C+M%2E+Bekooij%2C+and+J%2E+van+Meerbergen%2E+Multiprocessor+resource+allocation+for+hard-real-time+streaming+with+a+dynamic+job-mix%2E+In+11th+IEEE+Real+Time+and+Embedded+Technology+and+Applications+Symposium%2C+pp%2E+332-341%2C+March+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib96">Orlando Moreira, Frederico Valente, and Marco Bekooij. Scheduling multiple independent hard-real-time jobs on a heterogeneous multiprocessor. In <emphasis>Proceedings of the 7th ACM &#x0026; IEEE International Conference on Embedded Software</emphasis>, EMSOFT&#x2019;07, pp. 57&#x2013;66, New York, NY, USA, 2007. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Orlando+Moreira%2C+Frederico+Valente%2C+and+Marco+Bekooij%2E+Scheduling+multiple+independent+hard-real-time+jobs+on+a+heterogeneous+multiprocessor%2E+In+Proceedings+of+the+7th+ACM+%26+IEEE+International+Conference+on+Embedded+Software%2C+EMSOFT%2707%2C+pp%2E+57-66%2C+New+York%2C+NY%2C+USA%2C+2007%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib97">Pierre-Andr&#x00E9; Mudry and Gianluca Tempesti. Self-scaling stream processing: A bio-inspired approach to resource allocation through dynamic task replication. In <emphasis>Adaptive Hardware and Systems, NASA/ ESA Conference on</emphasis>. IEEE, 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Pierre-Andr%E9+Mudry+and+Gianluca+Tempesti%2E+Self-scaling+stream+processing%3A+A+bio-inspired+approach+to+resource+allocation+through+dynamic+task+replication%2E+In+Adaptive+Hardware+and+Systems%2C+NASA%2F+ESA+Conference+on%2E+IEEE%2C+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib98">P. Munk, B. Saballus, J. Richling, and H. U. Heiss. Position paper: Real-time task migration on many-core processors. In <emphasis>Architecture of Computing Systems. Proceedings, ARCS 2015 &#x2013; The 28th International Conference on</emphasis>, pp. 1&#x2013;4, March 2015. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=P%2E+Munk%2C+B%2E+Saballus%2C+J%2E+Richling%2C+and+H%2E+U%2E+Heiss%2E+Position+paper%3A+Real-time+task+migration+on+many-core+processors%2E+In+Architecture+of+Computing+Systems%2E+Proceedings%2C+ARCS+2015+-+The+28th+International+Conference+on%2C+pp%2E+1-4%2C+March+2015%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib99">M. Di Natale andA. L. Sangiovanni-Vincentelli. Moving from federated to integrated architectures in automotive: The role of standards, methods and tools. <emphasis>Proceedings of the IEEE</emphasis>, 98(4):603&#x2013;620, April 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+Di+Natale+andA%2E+L%2E+Sangiovanni-Vincentelli%2E+Moving+from+federated+to+integrated+architectures+in+automotive%3A+The+role+of+standards%2C+methods+and+tools%2E+Proceedings+of+the+IEEE%2C+98%284%29%3A603-620%2C+April+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib100">Borislav Nikoli&#x0107;, Hazem Ismail Ali, Stefan M. Petters, and Lu&#x00ED;s Miguel Pinho. Are virtual channels the bottleneck of priority-aware wormhole-switched NoC-based many-cores? In <emphasis>Proceedings of the 21st International Conference on Real-Time Networks and Systems</emphasis>, RTNS &#x2019;13, pp. 13&#x2013;22, New York, NY, USA, 2013. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Borislav+Nikolic%2C+Hazem+Ismail+Ali%2C+Stefan+M%2E+Petters%2C+and+Lu%EDs+Miguel+Pinho%2E+Are+virtual+channels+the+bottleneck+of+priority-aware+wormhole-switched+NoC-based+many-cores%B4+In+Proceedings+of+the+21st+International+Conference+on+Real-Time+Networks+and+Systems%2C+RTNS+%2713%2C+pp%2E+13-22%2C+New+York%2C+NY%2C+USA%2C+2013%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib101">A.-C. Orgerie, L. Lefevre, and J.-P. Gelas. Chasing gaps between bursts: Towards energy efficient large scale experimental grids. In <emphasis>Ninth International Conference on Parallel and Distributed Computing, Applications and Technologies, 2008. PDCAT 2008</emphasis>, pp. 381&#x2013;389, December 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E-C%2E+Orgerie%2C+L%2E+Lefevre%2C+and+J%2E-P%2E+Gelas%2E+Chasing+gaps+between+bursts%3A+Towards+energy+efficient+large+scale+experimental+grids%2E+In+Ninth+International+Conference+on+Parallel+and+Distributed+Computing%2C+Applications+and+Technologies%2C+2008%2E+PDCAT+2008%2C+pp%2E+381-389%2C+December+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib102">V. Pallipadi andA. Starikovskiy. The ondemand governor: Past, present, and future. <emphasis>Linux Symposium</emphasis>, 2:223&#x2013;238, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=V%2E+Pallipadi+andA%2E+Starikovskiy%2E+The+ondemand+governor%3A+Past%2C+present%2C+and+future%2E+Linux+Symposium%2C+2%3A223-238%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib103">S. Pandey, L. Wu, S. M. Guru, and R. Buyya. A particle swarm optimization-based heuristic for scheduling workflow applications in cloud computing environments. In <emphasis>2010 24th IEEE International Conference on Advanced Information Networking and Applications</emphasis>, pp. 400&#x2013;407, April 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Pandey%2C+L%2E+Wu%2C+S%2E+M%2E+Guru%2C+and+R%2E+Buyya%2E+A+particle+swarm+optimization-based+heuristic+for+scheduling+workflow+applications+in+cloud+computing+environments%2E+In+2010+24th+IEEE+International+Conference+on+Advanced+Information+Networking+and+Applications%2C+pp%2E+400-407%2C+April+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib104">J. Park, J. Harnisch, M. Deubzer, and K. Jeong et al. Mode-dynamic task allocation and scheduling for an engine management real-time system using a multicore microcontroller. <emphasis>SAE Int. J. Passeng. Cars &#x2013; Electron. Electr. Syst.</emphasis>, 7(1):133&#x2013;140, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+Park%2C+J%2E+Harnisch%2C+M%2E+Deubzer%2C+and+K%2E+Jeong+et+al%2E+Mode-dynamic+task+allocation+and+scheduling+for+an+engine+management+real-time+system+using+a+multicore+microcontroller%2E+SAE+Int%2E+J%2E+Passeng%2E+Cars+-+Electron%2E+Electr%2E+Syst%2E%2C+7%281%29%3A133-140%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib105">Ilia Pietri, Maciej Malawski, Gideon Juve, Ewa Deelman, Jarek Nabrzyski, and Rizos Sakellariou. Energy-constrained provisioning for scientific workflow ensembles. In <emphasis>IEEE International Conference on Cloud and Green Computing (CGC)</emphasis>, pp. 34&#x2013;41, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ilia+Pietri%2C+Maciej+Malawski%2C+Gideon+Juve%2C+Ewa+Deelman%2C+Jarek+Nabrzyski%2C+and+Rizos+Sakellariou%2E+Energy-constrained+provisioning+for+scientific+workflow+ensembles%2E+In+IEEE+International+Conference+on+Cloud+and+Green+Computing+%28CGC%29%2C+pp%2E+34-41%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib106">Padmanabhan Pillai and Kang G. Shin. Real-time dynamic voltage scaling for low-power embedded operating systems. <emphasis>SIGOPS Oper. Syst. Rev.</emphasis>, 35(5):89&#x2013;102, October 2001. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Padmanabhan+Pillai+and+Kang+G%2E+Shin%2E+Real-time+dynamic+voltage+scaling+for+low-power+embedded+operating+systems%2E+SIGOPS+Oper%2E+Syst%2E+Rev%2E%2C+35%285%29%3A89-102%2C+October+2001%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib107">R. Piscitelli and A. D. Pimentel. Design space pruning through hybrid analysis in system-level design space exploration. In <emphasis>2012 Design, Automation Test in Europe Conference Exhibition (DATE)</emphasis>, pp. 781&#x2013;786, March 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=R%2E+Piscitelli+and+A%2E+D%2E+Pimentel%2E+Design+space+pruning+through+hybrid+analysis+in+system-level+design+space+exploration%2E+In+2012+Design%2C+Automation+Test+in+Europe+Conference+Exhibition+%28DATE%29%2C+pp%2E+781-786%2C+March+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib108">R. C. Prim. Shortest connection networks and some generalizations. <emphasis>Bell System Technical Journal</emphasis>, 36(6):1389&#x2013;1401, 1957. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=R%2E+C%2E+Prim%2E+Shortest+connection+networks+and+some+generalizations%2E+Bell+System+Technical+Journal%2C+36%286%29%3A1389-1401%2C+1957%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib109">Wei Quan and Andy D. Pimentel. Exploring task mappings on heterogeneous mpsocs using a bias-elitist genetic algorithm. <emphasis>CoRR</emphasis>,abs/14 06.7539, 2014. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Wei+Quan+and+Andy+D%2E+Pimentel%2E+Exploring+task+mappings+on+heterogeneous+mpsocs+using+a+bias-elitist+genetic+algorithm%2E+CoRR%2Cabs%2F14+06%2E7539%2C+2014%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib110">A. Racu and L. S. Indrusiak. Using genetic algorithms to map hard real-time NoC-based systems. In <emphasis>7th International Workshop on Reconfigurable Communication-centric Systems-on-Chip (ReCoSoC)</emphasis>, 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Racu+and+L%2E+S%2E+Indrusiak%2E+Using+genetic+algorithms+to+map+hard+real-time+NoC-based+systems%2E+In+7th+International+Workshop+on+Reconfigurable+Communication-centric+Systems-on-Chip+%28ReCoSoC%29%2C+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib111">Alejandro Rico, Felipe Cabarcas, Carlos Villavieja, Milan Pavlovic, Augusto Vega, Yoav Etsion, Alex Ramirez, and Mateo Valero. On the simulation of large-scale architectures using multiple application abstraction levels. <emphasis>ACM Trans. Archit. Code Optim.</emphasis>, 8(4):36:1&#x2013;36:20, January 2012. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Alejandro+Rico%2C+Felipe+Cabarcas%2C+Carlos+Villavieja%2C+Milan+Pavlovic%2C+Augusto+Vega%2C+Yoav+Etsion%2C+Alex+Ramirez%2C+and+Mateo+Valero%2E+On+the+simulation+of+large-scale+architectures+using+multiple+application+abstraction+levels%2E+ACM+Trans%2E+Archit%2E+Code+Optim%2E%2C+8%284%29%3A36%3A1-36%3A20%2C+January+2012%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib112">I. Rodero, J. Jaramillo, A. Quiroz, M. Parashar, F. Guim, and S. Poole. Energy-efficient application-aware online provisioning for virtualized clouds and data centers. In <emphasis>International Green Computing Conference (IGCC)</emphasis>, pp. 31&#x2013;45, 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=I%2E+Rodero%2C+J%2E+Jaramillo%2C+A%2E+Quiroz%2C+M%2E+Parashar%2C+F%2E+Guim%2C+and+S%2E+Poole%2E+Energy-efficient+application-aware+online+provisioning+for+virtualized+clouds+and+data+centers%2E+In+International+Green+Computing+Conference+%28IGCC%29%2C+pp%2E+31-45%2C+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib113">D. Rosu, K. Schwan, S. Yalamanchili, and R. Jha. On adaptive resource allocation for complex real-time applications. In <emphasis>, The 18th IEEE Real-Time Systems Symposium, 1997. Proceedings</emphasis>, pp. 320&#x2013;329, December 1997. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=D%2E+Rosu%2C+K%2E+Schwan%2C+S%2E+Yalamanchili%2C+and+R%2E+Jha%2E+On+adaptive+resource+allocation+for+complex+real-time+applications%2E+In+%2C+The+18th+IEEE+Real-Time+Systems+Symposium%2C+1997%2E+Proceedings%2C+pp%2E+320-329%2C+December+1997%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib114">Xiaojun Ruan, Xiao Qin, Ziliang Zong, K. Bellam, and M. Nijim. An Energy-Efficient Scheduling Algorithm Using Dynamic Voltage Scaling for Parallel Applications on Clusters. In <emphasis>Proceedings of International Conference on Computer Communications and Networks (ICCCN)</emphasis>, pp. 735&#x2013;740, 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Xiaojun+Ruan%2C+Xiao+Qin%2C+Ziliang+Zong%2C+K%2E+Bellam%2C+and+M%2E+Nijim%2E+An+Energy-Efficient+Scheduling+Algorithm+Using+Dynamic+Voltage+Scaling+for+Parallel+Applications+on+Clusters%2E+In+Proceedings+of+International+Conference+on+Computer+Communications+and+Networks+%28ICCCN%29%2C+pp%2E+735-740%2C+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib115">P. K. Saraswat, P. Pop, and J. Madsen. Task mapping and bandwidth reservation for mixed hard/soft fault-tolerant embedded systems. In <emphasis>2010 16th IEEE Real-Time and Embedded Technology and Applications Symposium</emphasis>, pp. 89&#x2013;98, April 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=P%2E+K%2E+Saraswat%2C+P%2E+Pop%2C+and+J%2E+Madsen%2E+Task+mapping+and+bandwidth+reservation+for+mixed+hard%2Fsoft+fault-tolerant+embedded+systems%2E+In+2010+16th+IEEE+Real-Time+and+Embedded+Technology+and+Applications+Symposium%2C+pp%2E+89-98%2C+April+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib116">M. N. S. M. Sayuti and L. S. Indrusiak. Real-time low-power task mapping in networks-on-chip. In <emphasis>2013 IEEE Computer Society Annual Symposium on VLSI (ISVLSI)</emphasis>, pp. 14&#x2013;19, Aug 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+N%2E+S%2E+M%2E+Sayuti+and+L%2E+S%2E+Indrusiak%2E+Real-time+low-power+task+mapping+in+networks-on-chip%2E+In+2013+IEEE+Computer+Society+Annual+Symposium+on+VLSI+%28ISVLSI%29%2C+pp%2E+14-19%2C+Aug+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib117">M. N. S. M. Sayuti and L. S. Indrusiak. Real-time low-power task mapping in Networks-on-Chip. In <emphasis>Proceedings of IEEE Computer Society Annual Symposium on VLSI (ISVLSI)</emphasis>, pp. 14&#x2013;19, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+N%2E+S%2E+M%2E+Sayuti+and+L%2E+S%2E+Indrusiak%2E+Real-time+low-power+task+mapping+in+Networks-on-Chip%2E+In+Proceedings+of+IEEE+Computer+Society+Annual+Symposium+on+VLSI+%28ISVLSI%29%2C+pp%2E+14-19%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib118">Lars Schor, Iuliana Bacivarov, Devendra Rai, Hoeseok Yang, Shin-Haeng Kang, and Lothar Thiele. Scenario-based design flow for mapping streaming applications onto on-chip many-core systems. In <emphasis>Proceedings of the 2012 International Conference on Compilers, Architectures and Synthesis for Embedded Systems</emphasis>, CASES&#x2019;12, pp. 71&#x2013;80, New York, NY, USA, 2012. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Lars+Schor%2C+Iuliana+Bacivarov%2C+Devendra+Rai%2C+Hoeseok+Yang%2C+Shin-Haeng+Kang%2C+and+Lothar+Thiele%2E+Scenario-based+design+flow+for+mapping+streaming+applications+onto+on-chip+many-core+systems%2E+In+Proceedings+of+the+2012+International+Conference+on+Compilers%2C+Architectures+and+Synthesis+for+Embedded+Systems%2C+CASES%2712%2C+pp%2E+71-80%2C+New+York%2C+NY%2C+USA%2C+2012%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib119">A. Schranzhofer, J. J. Chen, and L. Thiele. Dynamic power-aware mapping of applications onto heterogeneous mpsoc platforms. <emphasis>IEEE Transactions on Industrial Informatics</emphasis>, 6(4):692&#x2013;707, Nov 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Schranzhofer%2C+J%2E+J%2E+Chen%2C+and+L%2E+Thiele%2E+Dynamic+power-aware+mapping+of+applications+onto+heterogeneous+mpsoc+platforms%2E+IEEE+Transactions+on+Industrial+Informatics%2C+6%284%29%3A692-707%2C+Nov+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib120">A. Schranzhofer, Jian-Jian Chen, and L. Thiele. Dynamic power-aware mapping of applications onto heterogeneous mpsoc platforms. <emphasis>Industrial Informatics, IEEE Transactions on</emphasis>, 6(4):692&#x2013;707, Nov. 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+Schranzhofer%2C+Jian-Jian+Chen%2C+and+L%2E+Thiele%2E+Dynamic+power-aware+mapping+of+applications+onto+heterogeneous+mpsoc+platforms%2E+Industrial+Informatics%2C+IEEE+Transactions+on%2C+6%284%29%3A692-707%2C+Nov%2E+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib121">Lui Sha, Tarek Abdelzaher, Karl-Erik Arzen, Anton Cervin, Theodore Baker, Alan Burns, Giorgio Buttazzo, Marco Caccamo, John Lehoczky, and Aloysius K. Mok. Real time scheduling theory: A historical perspective. <emphasis>Real-Time Syst.</emphasis>, 28(2&#x2013;3):101&#x2013;155, November 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Lui+Sha%2C+Tarek+Abdelzaher%2C+Karl-Erik+Arzen%2C+Anton+Cervin%2C+Theodore+Baker%2C+Alan+Burns%2C+Giorgio+Buttazzo%2C+Marco+Caccamo%2C+John+Lehoczky%2C+and+Aloysius+K%2E+Mok%2E+Real+time+scheduling+theory%3A+A+historical+perspective%2E+Real-Time+Syst%2E%2C+28%282-3%29%3A101-155%2C+November+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib122">Z. Shi and A. Burns. Real-time communication analysis for on-chip networks with wormhole switching. In <emphasis>Networks-on-Chip, 2008. NoCS 2008. Second ACM/IEEE International Symposium on</emphasis>, pp. 161&#x2013;170, April 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Z%2E+Shi+and+A%2E+Burns%2E+Real-time+communication+analysis+for+on-chip+networks+with+wormhole+switching%2E+In+Networks-on-Chip%2C+2008%2E+NoCS+2008%2E+Second+ACM%2FIEEE+International+Symposium+on%2C+pp%2E+161-170%2C+April+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib123">A. K. Singh, M. Shafique, A. Kumar, and J. Henkel. Mapping on multi/ many-core systems: Survey of current and emerging trends. In <emphasis>Design Automation Conference (DAC), 2013 50th ACM/EDAC/IEEE</emphasis>, pp. 1&#x2013;10, May 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=A%2E+K%2E+Singh%2C+M%2E+Shafique%2C+A%2E+Kumar%2C+and+J%2E+Henkel%2E+Mapping+on+multi%2F+many-core+systems%3A+Survey+of+current+and+emerging+trends%2E+In+Design+Automation+Conference+%28DAC%29%2C+2013+50th+ACM%2FEDAC%2FIEEE%2C+pp%2E+1-10%2C+May+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib124">Amit Kumar Singh, Anup Das, and Akash Kumar. Energy Optimization by Exploiting Execution Slacks in Streaming Applications on Multiprocessor Systems. In <emphasis>Proceedings of ACM Design Automation Conference (DAC)</emphasis>, pp. 115:1&#x2013;115:7, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Amit+Kumar+Singh%2C+Anup+Das%2C+and+Akash+Kumar%2E+Energy+Optimization+by+Exploiting+Execution+Slacks+in+Streaming+Applications+on+Multiprocessor+Systems%2E+In+Proceedings+of+ACM+Design+Automation+Conference+%28DAC%29%2C+pp%2E+115%3A1-115%3A7%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib125">Amit Kumar Singh, Piotr Dziurzanski, and Leandro Soares Indrusiak. Market-inspired Dynamic Resource Allocation in Many-core High Performance Computing Systems. In <emphasis>IEEE International Conference on High Performance Computing &#x0026; Simulation (HPCS)</emphasis>, pp. 413&#x2013;420, 2015. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Amit+Kumar+Singh%2C+Piotr+Dziurzanski%2C+and+Leandro+Soares+Indrusiak%2E+Market-inspired+Dynamic+Resource+Allocation+in+Many-core+High+Performance+Computing+Systems%2E+In+IEEE+International+Conference+on+High+Performance+Computing+%26+Simulation+%28HPCS%29%2C+pp%2E+413-420%2C+2015%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib126">Amit Kumar Singh, Muhammad Shafique, Akash Kumar, and J&#x00F6;rg Henkel. Mapping on Multi/Many-core Systems: Survey of Current and Emerging Trends. In <emphasis>Proceedings of ACM Design Automation Conference (DAC)</emphasis>, pp. 1:1&#x2013;1:10, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Amit+Kumar+Singh%2C+Muhammad+Shafique%2C+Akash+Kumar%2C+and+J%F6rg+Henkel%2E+Mapping+on+Multi%2FMany-core+Systems%3A+Survey+of+Current+and+Emerging+Trends%2E+In+Proceedings+of+ACM+Design+Automation+Conference+%28DAC%29%2C+pp%2E+1%3A1-1%3A10%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib127">Amit Kumar Singh, Muhammad Shafique, Akash Kumar, J&#x00F6;rg Henkel, Anup Das, Wu Jigang, Thambipillai Srikanthan, Samarth Kaushik, Yajun Ha, andAlok Prakash. Mapping on multi/many-core systems: survey of current and emerging trends. In <emphasis>Design Automation Conference</emphasis>, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Amit+Kumar+Singh%2C+Muhammad+Shafique%2C+Akash+Kumar%2C+J%F6rg+Henkel%2C+Anup+Das%2C+Wu+Jigang%2C+Thambipillai+Srikanthan%2C+Samarth+Kaushik%2C+Yajun+Ha%2C+andAlok+Prakash%2E+Mapping+on+multi%2Fmany-core+systems%3A+survey+of+current+and+emerging+trends%2E+In+Design+Automation+Conference%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib128">Amit Kumar Singh, Thambipillai Srikanthan, Akash Kumar, and Wu Jigang. Communication-aware heuristics for run-time task mapping on NoC-based mpsoc platforms. <emphasis>J. Syst. Archit.</emphasis>, 56(7):242&#x2013;255, July 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Amit+Kumar+Singh%2C+Thambipillai+Srikanthan%2C+Akash+Kumar%2C+and+Wu+Jigang%2E+Communication-aware+heuristics+for+run-time+task+mapping+on+NoC-based+mpsoc+platforms%2E+J%2E+Syst%2E+Archit%2E%2C+56%287%29%3A242-255%2C+July+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib129">L. T. Smit, J. L. Hurink, and G. J. M. Smit. Run-time mapping of applications to a heterogeneous soc. pp. 78 &#x2013;81, Nov. 2005. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=L%2E+T%2E+Smit%2C+J%2E+L%2E+Hurink%2C+and+G%2E+J%2E+M%2E+Smit%2E+Run-time+mapping+of+applications+to+a+heterogeneous+soc%2E+pp%2E+78+-81%2C+Nov%2E+2005%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib130">O. O. Sonmez and A. Gursoy. A novel economic-based scheduling heuristic for computational grids. <emphasis>International Journal of High Performance Computing Applications</emphasis>, 21(1):21&#x2013;29, 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=O%2E+O%2E+Sonmez+and+A%2E+Gursoy%2E+A+novel+economic-based+scheduling+heuristic+for+computational+grids%2E+International+Journal+of+High+Performance+Computing+Applications%2C+21%281%29%3A21-29%2C+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib131">Ranjani Sridharan and Rabi Mahapatra. Reliability aware power management for dual-processor real-time embedded systems. In <emphasis>Proceedings of the 47th Design Automation Conference</emphasis>, DAC&#x2019;10, pp. 819&#x2013;824, New York, NY, USA, 2010. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ranjani+Sridharan+and+Rabi+Mahapatra%2E+Reliability+aware+power+management+for+dual-processor+real-time+embedded+systems%2E+In+Proceedings+of+the+47th+Design+Automation+Conference%2C+DAC%2710%2C+pp%2E+819-824%2C+New+York%2C+NY%2C+USA%2C+2010%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib132">Shekhar Srikantaiah, Aman Kansal, and Feng Zhao. Energy aware consolidation for cloud computing. In <emphasis>Proceedings of Conference on Power Aware Computing and Systems (HotPower)</emphasis>, pp. 10&#x2013;10, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Shekhar+Srikantaiah%2C+Aman+Kansal%2C+and+Feng+Zhao%2E+Energy+aware+consolidation+for+cloud+computing%2E+In+Proceedings+of+Conference+on+Power+Aware+Computing+and+Systems+%28HotPower%29%2C+pp%2E+10-10%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib133">Sundararajan Sriram and Shuvra S. Bhattacharyya. <emphasis>Embedded Multiprocessors: Scheduling and Synchronization</emphasis>. CRC Press, 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Sundararajan+Sriram+and+Shuvra+S%2E+Bhattacharyya%2E+Embedded+Multiprocessors%3A+Scheduling+and+Synchronization%2E+CRC+Press%2C+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib134">Sundararajan Sriram and Shuvra S. Bhattacharyya. <emphasis>Embedded Multiprocessors: Scheduling and Synchronization</emphasis>. CRC Press, 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Sundararajan+Sriram+and+Shuvra+S%2E+Bhattacharyya%2E+Embedded+Multiprocessors%3A+Scheduling+and+Synchronization%2E+CRC+Press%2C+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib135">J. A. Stankovic, Chenyang Lu, S. H. Son, and Gang Tao. The case for feedback control real-time scheduling. In <emphasis>Real-Time Systems, 1999. Proceedings of the 11th Euromicro Conference on</emphasis>, pp. 11&#x2013;20, 1999. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+A%2E+Stankovic%2C+Chenyang+Lu%2C+S%2E+H%2E+Son%2C+and+Gang+Tao%2E+The+case+for+feedback+control+real-time+scheduling%2E+In+Real-Time+Systems%2C+1999%2E+Proceedings+of+the+11th+Euromicro+Conference+on%2C+pp%2E+11-20%2C+1999%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib136">S. Stuijk, T. Basten, M.C.W. Geilen, and H. Corporaal. Multiprocessor resource allocation for throughput-constrained synchronous dataflow graphs. In <emphasis>44th ACM/IEEE Design Automation Conference, 2007. DAC&#x2019;07</emphasis>, pp. 777&#x2013;782, June 2007. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Stuijk%2C+T%2E+Basten%2C+M%2EC%2EW%2E+Geilen%2C+and+H%2E+Corporaal%2E+Multiprocessor+resource+allocation+for+throughput-constrained+synchronous+dataflow+graphs%2E+In+44th+ACM%2FIEEE+Design+Automation+Conference%2C+2007%2E+DAC%2707%2C+pp%2E+777-782%2C+June+2007%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib137">S. Stuijk, M. Geilen, B. Theelen, and T. Basten. Scenario-aware dataflow: Modeling, analysis and implementation of dynamic applications. In <emphasis>Embedded Computer Systems (SAMOS), 2011 International Conference on</emphasis>, pp. 404&#x2013;411, July 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Stuijk%2C+M%2E+Geilen%2C+B%2E+Theelen%2C+and+T%2E+Basten%2E+Scenario-aware+dataflow%3A+Modeling%2C+analysis+and+implementation+of+dynamic+applications%2E+In+Embedded+Computer+Systems+%28SAMOS%29%2C+2011+International+Conference+on%2C+pp%2E+404-411%2C+July+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib138">Y. Takeuchi, Y. Nakata, H. Kawaguchi, and M. Yoshimoto. Scalable parallel processing for H.264 encoding application to multi/many-core processor. In <emphasis>Int. Conf. on Intelligent Control and Information Processing (ICICIP)</emphasis>, August 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Y%2E+Takeuchi%2C+Y%2E+Nakata%2C+H%2E+Kawaguchi%2C+and+M%2E+Yoshimoto%2E+Scalable+parallel+processing+for+H%2E264+encoding+application+to+multi%2Fmany-core+processor%2E+In+Int%2E+Conf%2E+on+Intelligent+Control+and+Information+Processing+%28ICICIP%29%2C+August+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib139">Y. Tao and X. Yu. Classified optimization scheduling algorithm driven by multi-qos attributes in economical grid. In <emphasis>International Conference on Computer Science and Software Engineering</emphasis>, volume 3, pp. 70&#x2013;73. IEEE, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Y%2E+Tao+and+X%2E+Yu%2E+Classified+optimization+scheduling+algorithm+driven+by+multi-qos+attributes+in+economical+grid%2E+In+International+Conference+on+Computer+Science+and+Software+Engineering%2C+volume+3%2C+pp%2E+70-73%2E+IEEE%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib140">M. K. Tavana, M. Salehi, and A. Ejlali. Feedback-based energy management in a standby-sparing scheme for hard real-time systems. In <emphasis>Real-Time Systems Symposium (RTSS), 2011 IEEE 32nd</emphasis>, pp. 349&#x2013;356, Nov 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+K%2E+Tavana%2C+M%2E+Salehi%2C+and+A%2E+Ejlali%2E+Feedback-based+energy+management+in+a+standby-sparing+scheme+for+hard+real-time+systems%2E+In+Real-Time+Systems+Symposium+%28RTSS%29%2C+2011+IEEE+32nd%2C+pp%2E+349-356%2C+Nov+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib141">Theocharis Theocharides, Maria K. Michael, Marios Polycarpou, and Ajit Dingankar. Hardware-enabled Dynamic Resource Allocation for Manycore Systems Using Bidding-based System Feedback. <emphasis>EURASIP J. Embedded Syst.</emphasis>, 2010:3:1&#x2013;3:21, 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Theocharis+Theocharides%2C+Maria+K%2E+Michael%2C+Marios+Polycarpou%2C+and+Ajit+Dingankar%2E+Hardware-enabled+Dynamic+Resource+Allocation+for+Manycore+Systems+Using+Bidding-based+System+Feedback%2E+EURASIP+J%2E+Embedded+Syst%2E%2C+2010%3A3%3A1-3%3A21%2C+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib142">Y. Tian, C. Lin, Z. Chen, J. Wan, and X. Peng. Performance evaluation and dynamic optimization of speed scaling on web servers in cloud computing. <emphasis>Tsinghua Science and Technology</emphasis>, pp. 298&#x2013;307, 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Y%2E+Tian%2C+C%2E+Lin%2C+Z%2E+Chen%2C+J%2E+Wan%2C+and+X%2E+Peng%2E+Performance+evaluation+and+dynamic+optimization+of+speed+scaling+on+web+servers+in+cloud+computing%2E+Tsinghua+Science+and+Technology%2C+pp%2E+298-307%2C+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib143">Ken Tindell. Adding time-offsets to schedulability analysis. Technical Report YCS 221, Dept. of Computer Science, University of York, January 1994. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ken+Tindell%2E+Adding+time-offsets+to+schedulability+analysis%2E+Technical+Report+YCS+221%2C+Dept%2E+of+Computer+Science%2C+University+of+York%2C+January+1994%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib144">Haluk Topcuouglu, Salim Hariri, and Min-you Wu. Performance-effective and low-complexity task scheduling for heterogeneous computing. <emphasis>IEEE Trans. Parallel Distrib. Syst.</emphasis>, 13(3):260&#x2013;274, March 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Haluk+Topcuouglu%2C+Salim+Hariri%2C+and+Min-you+Wu%2E+Performance-effective+and+low-complexity+task+scheduling+for+heterogeneous+computing%2E+IEEE+Trans%2E+Parallel+Distrib%2E+Syst%2E%2C+13%283%29%3A260-274%2C+March+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib145">Wolfgang Trumler, Tobias Thiemann, and Theo Ungerer. An artificial hormone system for self-organization of networked nodes. In <emphasis>Biologically Inspired Cooperative Computing</emphasis>. Springer, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Wolfgang+Trumler%2C+Tobias+Thiemann%2C+and+Theo+Ungerer%2E+An+artificial+hormone+system+for+self-organization+of+networked+nodes%2E+In+Biologically+Inspired+Cooperative+Computing%2E+Springer%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib146">J. R. van Kampenhout. Deterministic task transfer in network-on-chip based multi-core processors. <emphasis>Computer Engineering</emphasis>, (18), 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=J%2E+R%2E+van+Kampenhout%2E+Deterministic+task+transfer+in+network-on-chip+based+multi-core+processors%2E+Computer+Engineering%2C+%2818%29%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib147">Ankush Varma, Brinda Ganesh, Mainak Sen, Suchismita Roy Choudhury, Lakshmi Srinivasan, and Bruce Jacob. A control-theoretic approach to dynamic voltage scheduling. In <emphasis>Proceedings of the 2003 International Conference on Compilers, Architecture and Synthesis for Embedded Systems</emphasis>, CASES&#x2019;03, pp. 255&#x2013;266, New York, NY, USA, 2003. ACM. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Ankush+Varma%2C+Brinda+Ganesh%2C+Mainak+Sen%2C+Suchismita+Roy+Choudhury%2C+Lakshmi+Srinivasan%2C+and+Bruce+Jacob%2E+A+control-theoretic+approach+to+dynamic+voltage+scheduling%2E+In+Proceedings+of+the+2003+International+Conference+on+Compilers%2C+Architecture+and+Synthesis+for+Embedded+Systems%2C+CASES%2703%2C+pp%2E+255-266%2C+New+York%2C+NY%2C+USA%2C+2003%2E+ACM%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib148">G. von Laszewski, Lizhe Wang, A. J. Younge, and Xi He. Power-aware scheduling of virtual machines in DVFS-enabled clusters. In <emphasis>Proceedings of IEEE International Conference on Cluster Computing and Workshops (CLUSTER)</emphasis>, pp. 1&#x2013;10, 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=G%2E+von+Laszewski%2C+Lizhe+Wang%2C+A%2E+J%2E+Younge%2C+and+Xi+He%2E+Power-aware+scheduling+of+virtual+machines+in+DVFS-enabled+clusters%2E+In+Proceedings+of+IEEE+International+Conference+on+Cluster+Computing+and+Workshops+%28CLUSTER%29%2C+pp%2E+1-10%2C+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib149">Lizhe Wang, Gregor von Laszewski, Jay Dayal, and Fugang Wang. Towards Energy Aware Scheduling for Precedence Constrained Parallel Tasks in a Cluster with DVFS. In <emphasis>Proceedings of IEEE/ACM International Conference on Cluster, Cloud and Grid Computing (CCGRID)</emphasis>, pp. 368&#x2013;377, 2010. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Lizhe+Wang%2C+Gregor+von+Laszewski%2C+Jay+Dayal%2C+and+Fugang+Wang%2E+Towards+Energy+Aware+Scheduling+for+Precedence+Constrained+Parallel+Tasks+in+a+Cluster+with+DVFS%2E+In+Proceedings+of+IEEE%2FACM+International+Conference+on+Cluster%2C+Cloud+and+Grid+Computing+%28CCGRID%29%2C+pp%2E+368-377%2C+2010%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib150">M. Wieczorek, M. Siddiqui, A. Villazon, R. Prodan, and T. Fahringer. Applying advance reservation to increase predictability of workflow execution on the grid. In <emphasis>Second IEEE International Conference on e-Science and Grid Computing, 2006. e-Science&#x2019;06</emphasis>, p. 82, December 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=M%2E+Wieczorek%2C+M%2E+Siddiqui%2C+A%2E+Villazon%2C+R%2E+Prodan%2C+and+T%2E+Fahringer%2E+Applying+advance+reservation+to+increase+predictability+of+workflow+execution+on+the+grid%2E+In+Second+IEEE+International+Conference+on+e-Science+and+Grid+Computing%2C+2006%2E+e-Science%2706%2C+p%2E+82%2C+December+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib151">S. Wildermann, T. Ziermann, and J. Teich. Run time mapping of adaptive applications onto homogeneous NoC-based reconfigurable architectures. In <emphasis>International Conference on Field-Programmable Technology, 2009. FPT 2009</emphasis>, pp. 514&#x2013;517, December 2009. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=S%2E+Wildermann%2C+T%2E+Ziermann%2C+and+J%2E+Teich%2E+Run+time+mapping+of+adaptive+applications+onto+homogeneous+NoC-based+reconfigurable+architectures%2E+In+International+Conference+on+Field-Programmable+Technology%2C+2009%2E+FPT+2009%2C+pp%2E+514-517%2C+December+2009%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib152">Reinhard Wilhelm, Jakob Engblom, Andreas Ermedahl, Niklas Holsti, Stephan Thesing, David Whalley, Guillem Bernat, Christian Ferdinand, Reinhold Heckmann, Tulika Mitra, Frank Mueller, Isabelle Puaut, Peter Puschner, Jan Staschulat, and Per Stenstr&#x00F6;m. The worst-case execution-time problem &#x0026; mdash; overview of methods and survey of tools. <emphasis>ACM Trans. Embed. Comput. Syst.</emphasis>, 7(3):36:1&#x2013;36:53, May 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Reinhard+Wilhelm%2C+Jakob+Engblom%2C+Andreas+Ermedahl%2C+Niklas+Holsti%2C+Stephan+Thesing%2C+David+Whalley%2C+Guillem+Bernat%2C+Christian+Ferdinand%2C+Reinhold+Heckmann%2C+Tulika+Mitra%2C+Frank+Mueller%2C+Isabelle+Puaut%2C+Peter+Puschner%2C+Jan+Staschulat%2C+and+Per+Stenstr%F6m%2E+The+worst-case+execution-time+problem+%26+mdash%3B+overview+of+methods+and+survey+of+tools%2E+ACM+Trans%2E+Embed%2E+Comput%2E+Syst%2E%2C+7%283%29%3A36%3A1-36%3A53%2C+May+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib153">Qiang Wu, Philo Juang, Margaret Martonosi, and Douglas W. Clark. Formal online methods for voltage/frequency control in multiple clock domain microprocessors. <emphasis>SIGOPS Oper. Syst. Rev.</emphasis>, 38(5):248&#x2013;259, October 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Qiang+Wu%2C+Philo+Juang%2C+Margaret+Martonosi%2C+and+Douglas+W%2E+Clark%2E+Formal+online+methods+for+voltage%2Ffrequency+control+in+multiple+clock+domain+microprocessors%2E+SIGOPS+Oper%2E+Syst%2E+Rev%2E%2C+38%285%29%3A248-259%2C+October+2004%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib154">L. Xiao, Y. Zhu, L. M. Ni, and Z. Xu. Incentive-based scheduling for market-like computational grids. <emphasis>Parallel and Distributed Systems, IEEE Transactions on</emphasis>, 19(7):903&#x2013;913, 2008. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=L%2E+Xiao%2C+Y%2E+Zhu%2C+L%2E+M%2E+Ni%2C+and+Z%2E+Xu%2E+Incentive-based+scheduling+for+market-like+computational+grids%2E+Parallel+and+Distributed+Systems%2C+IEEE+Transactions+on%2C+19%287%29%3A903-913%2C+2008%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib155">T. T. Ye, L. Benini, and G. De Micheli. Analysis of power consumption on switch fabrics in network routers. pp. 524&#x2013;529, 2002. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=T%2E+T%2E+Ye%2C+L%2E+Benini%2C+and+G%2E+De+Micheli%2E+Analysis+of+power+consumption+on+switch+fabrics+in+network+routers%2E+pp%2E+524-529%2C+2002%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib156">Chee Shin Yeo and Rajkumar Buyya. A Taxonomy of Market-based Resource Management Systems for Utility-driven Cluster Computing. <emphasis>Softw. Pract. Exper.</emphasis>, 36(13):1381&#x2013;1419, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chee+Shin+Yeo+and+Rajkumar+Buyya%2E+A+Taxonomy+of+Market-based+Resource+Management+Systems+for+Utility-driven+Cluster+Computing%2E+Softw%2E+Pract%2E+Exper%2E%2C+36%2813%29%3A1381-1419%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib157">Chee Shin Yeo and Rajkumar Buyya. A taxonomy of market-based resource management systems for utility-driven cluster computing. <emphasis>Software: Practice and Experience</emphasis>, 36(13):1381&#x2013;1419, 2006. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Chee+Shin+Yeo+and+Rajkumar+Buyya%2E+A+taxonomy+of+market-based+resource+management+systems+for+utility-driven+cluster+computing%2E+Software%3A+Practice+and+Experience%2C+36%2813%29%3A1381-1419%2C+2006%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib158">D. Zhu and C. Qian. Challenges in future automobile control systems with multicore processors. In <emphasis>Workshop on Developing Dependable and Secure Automotive Cyber-Physical Systems from Components</emphasis>, 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=D%2E+Zhu+and+C%2E+Qian%2E+Challenges+in+future+automobile+control+systems+with+multicore+processors%2E+In+Workshop+on+Developing+Dependable+and+Secure+Automotive+Cyber-Physical+Systems+from+Components%2C+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib159">H. Zhu, S. Goddard, and M. B. Dwyer. Response time analysis of hierarchical scheduling: The synchronized deferrable servers approach. In <emphasis>Real-Time Systems Symposium (RTSS), 2011 IEEE 32nd</emphasis>, pp. 239&#x2013; 248, Nov 2011. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=H%2E+Zhu%2C+S%2E+Goddard%2C+and+M%2E+B%2E+Dwyer%2E+Response+time+analysis+of+hierarchical+scheduling%3A+The+synchronized+deferrable+servers+approach%2E+In+Real-Time+Systems+Symposium+%28RTSS%29%2C+2011+IEEE+32nd%2C+pp%2E+239-+248%2C+Nov+2011%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib160">Qi Zhu, Haibo Zeng, Wei Zheng, Marco DI Natale, and Alberto Sangiovanni-Vincentelli. Optimization of task allocation and priority assignment in hard real-time distributed systems. <emphasis>ACM Trans. Embed. Comput. Syst.</emphasis>, 11(4):85:1&#x2013;85:30, January 2013. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Qi+Zhu%2C+Haibo+Zeng%2C+Wei+Zheng%2C+Marco+DI+Natale%2C+and+Alberto+Sangiovanni-Vincentelli%2E+Optimization+of+task+allocation+and+priority+assignment+in+hard+real-time+distributed+systems%2E+ACM+Trans%2E+Embed%2E+Comput%2E+Syst%2E%2C+11%284%29%3A85%3A1-85%3A30%2C+January+2013%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib161">Xue-Yang Zhu, Marc Geilen, Twan Basten, and Sander Stuijk. Static rate-optimal scheduling of multirate DSP algorithms via retiming and unfolding. In <emphasis>Proceedings of the 2012 IEEE 18th Real Time and Embedded Technology and Applications Symposium</emphasis>, RTAS&#x2019;12, pp. 109&#x2013;118, Washington, DC, USA, 2012. IEEE Computer Society. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Xue-Yang+Zhu%2C+Marc+Geilen%2C+Twan+Basten%2C+and+Sander+Stuijk%2E+Static+rate-optimal+scheduling+of+multirate+DSP+algorithms+via+retiming+and+unfolding%2E+In+Proceedings+of+the+2012+IEEE+18th+Real+Time+and+Embedded+Technology+and+Applications+Symposium%2C+RTAS%2712%2C+pp%2E+109-118%2C+Washington%2C+DC%2C+USA%2C+2012%2E+IEEE+Computer+Society%2E" target="_blank">Google Scholar</ulink></para></listitem>
<listitem><para id="bib162">Yifan Zhu and F. Mueller. Feedback edf scheduling exploiting dynamic voltage scaling. In <emphasis>Real-Time and Embedded Technology and Applications Symposium, 2004. Proceedings. RTAS 2004. 10th IEEE</emphasis>, pp. 84&#x2013;93, May 2004. <ulink url="https://scholar.google.com/scholar?hl=en&amp;q=Yifan+Zhu+and+F%2E+Mueller%2E+Feedback+edf+scheduling+exploiting+dynamic+voltage+scaling%2E+In+Real-Time+and+Embedded+Technology+and+Applications+Symposium%2C+2004%2E+Proceedings%2E+RTAS+2004%2E+10th+IEEE%2C+pp%2E+84-93%2C+May+2004%2E" target="_blank">Google Scholar</ulink></para></listitem></orderedlist>
</bibliography>
</book>
