<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1405-5546</journal-id>
<journal-title><![CDATA[Computación y Sistemas]]></journal-title>
<abbrev-journal-title><![CDATA[Comp. y Sist.]]></abbrev-journal-title>
<issn>1405-5546</issn>
<publisher>
<publisher-name><![CDATA[Instituto Politécnico Nacional, Centro de Investigación en Computación]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1405-55462024000200623</article-id>
<article-id pub-id-type="doi">10.13053/cys-28-2-4403</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[Proactive Load Balancing to Reduce Unnecessary Thread Migrations on Chip Multi-Processor (CMP) Systems]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Revilla-Duarte]]></surname>
<given-names><![CDATA[Ulises]]></given-names>
</name>
<xref ref-type="aff" rid="Aff"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ramírez-Salinas]]></surname>
<given-names><![CDATA[Marco A.]]></given-names>
</name>
<xref ref-type="aff" rid="Aff"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Villa-Vargas]]></surname>
<given-names><![CDATA[Luis A.]]></given-names>
</name>
<xref ref-type="aff" rid="Aff"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Tchernykh]]></surname>
<given-names><![CDATA[Andrei]]></given-names>
</name>
<xref ref-type="aff" rid="Aff"/>
</contrib>
</contrib-group>
<aff id="Af1">
<institution><![CDATA[,Instituto Politécnico Nacional Centro de Investigación en Computación ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
<country>Mexico</country>
</aff>
<aff id="Af2">
<institution><![CDATA[,Departamento de Ciencias de la Computación Departamento de Ciencias de la Computación ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
<country>Mexico</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2024</year>
</pub-date>
<volume>28</volume>
<numero>2</numero>
<fpage>623</fpage>
<lpage>645</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_arttext&amp;pid=S1405-55462024000200623&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_abstract&amp;pid=S1405-55462024000200623&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_pdf&amp;pid=S1405-55462024000200623&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Abstract: For a Linux operating system scheduler that is aware of Chip Multi-Processor (CMP) systems to carry out load balancing is extremely important and quite challenging. The scheduler is a vital component of the Linux kernel responsible for choosing the next thread to run and allocating to a processor core for execution. This process involves primarily a load-balancing procedure that provides the thread migration between the cores of a CMP system. A modern Linux scheduler is designed to obtain the best possible performance while ensuring a fair allocation of the processor cores&#8217; time among the normal (non-real-time) threads, which is known as Completely Fair Scheduling (CFS) policy. However, this policy collaterally can cause a relentless execution of the load-balancing procedure, and therefore, an excessive number of thread migrations. According to the literature, an increased cache invalidation, scheduling latency, and power consumption are issues inherent to this. In this paper, we propose and evaluate a proactive load-balancing (PLB) algorithm to reduce unnecessary thread migrations on CMP systems. By comprehensive experimental analysis, we show that our PLB algorithm reduces the number of thread migrations by 43.8% on average without degradation of performance.]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[Linux CFS]]></kwd>
<kwd lng="en"><![CDATA[load balancing]]></kwd>
<kwd lng="en"><![CDATA[perf event tool]]></kwd>
<kwd lng="en"><![CDATA[PMU counters]]></kwd>
<kwd lng="en"><![CDATA[chip multi-processor]]></kwd>
</kwd-group>
</article-meta>
</front><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Arpaci-Dusseau]]></surname>
<given-names><![CDATA[R. H.]]></given-names>
</name>
<name>
<surname><![CDATA[Arpaci-Dusseau]]></surname>
<given-names><![CDATA[A. C.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Multiprocessor Scheduling, CreateSpace Independ-ent Publishing Platform]]></article-title>
<source><![CDATA[Operating systems: Three easy pieces]]></source>
<year>2018</year>
<page-range>103-12</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Blagodurov]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Fedorova]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[User-level scheduling on NUMA multicore systems under linux]]></source>
<year>2011</year>
<conf-name><![CDATA[ Linux Symposium]]></conf-name>
<conf-loc> </conf-loc>
<page-range>81-92</page-range></nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bovet]]></surname>
<given-names><![CDATA[D. P.]]></given-names>
</name>
<name>
<surname><![CDATA[Cesati]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Understanding the Linux kernel]]></source>
<year>2005</year>
<publisher-name><![CDATA[O&#8217;Reilly]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Brandolese]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Fornaciari]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Salice]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Sciuto]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[The impact of source code transformations on software power and energy consumption]]></article-title>
<source><![CDATA[Journal of Circuits, Systems and Computers]]></source>
<year>2002</year>
<volume>11</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>477-502</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Broquedis]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Clet-Ortega]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Moreaud]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Furmento]]></surname>
<given-names><![CDATA[N.]]></given-names>
</name>
<name>
<surname><![CDATA[Goglin]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Mercier]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Thibault]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Namyst]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<source><![CDATA[hwloc: A generic framework for managing hardware affinities in HPC applications]]></source>
<year>2010</year>
<conf-name><![CDATA[ 18th Euromicro International Conference on Paralel, Distributed and Network-based Processing]]></conf-name>
<conf-loc> </conf-loc>
<page-range>180-6</page-range></nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chandra]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Guo]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Kim]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Solhin]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
</person-group>
<source><![CDATA[Predicting inter-thread cache contention on a chip multi-processor architecture]]></source>
<year>2005</year>
<conf-name><![CDATA[ 11th International Symposium on High-Performance Computer Architecture]]></conf-name>
<conf-loc> </conf-loc>
<page-range>340-51</page-range></nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<collab>Clarkdale</collab>
<source><![CDATA[Clarkdale microprocessor]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Constantinou]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Sazeides]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Michaud]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Fetis]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Seznec]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Performance implications of single thread migration on a chip multi-core]]></article-title>
<source><![CDATA[ACM SIGARCH Computer Architecture News]]></source>
<year>2005</year>
<volume>33</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>80-91</page-range></nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="">
<collab>Corporation, N. D.</collab>
<source><![CDATA[Tomoyo linux]]></source>
<year>2019</year>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Eranian]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Gourion]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Moseley]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Bruijn]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
</person-group>
<source><![CDATA[Linux kernel profiling with perf]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Garcia-Garcia]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Saez]]></surname>
<given-names><![CDATA[J. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Prieto-Matias]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Contention-aware fair scheduling for asymmetric single-isa multicore systems]]></article-title>
<source><![CDATA[IEEE Transactions on Computers]]></source>
<year>2018</year>
<volume>67</volume>
<numero>12</numero>
<issue>12</issue>
<page-range>1703-19</page-range></nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Goglin]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
</person-group>
<source><![CDATA[On the overhead of topology discovery for locality-aware scheduling in HPC]]></source>
<year>2017</year>
<conf-name><![CDATA[ 25th Euromicro International Conference on Paralel, Distributed and Network-based Processing]]></conf-name>
<conf-loc> </conf-loc>
<page-range>186-90</page-range></nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gouicem]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<source><![CDATA[Thread scheduling in multi-core operating systems: How to understand, improve and fix your scheduler]]></source>
<year>2020</year>
<publisher-loc><![CDATA[France ]]></publisher-loc>
<publisher-name><![CDATA[Sorbonne Université]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harris]]></surname>
<given-names><![CDATA[J. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Cordani]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Process Management]]></article-title>
<source><![CDATA[Schaum&#8217;s outline of operating systems]]></source>
<year>2002</year>
<page-range>14-23</page-range><publisher-name><![CDATA[McGraw-Hill]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Herdrich]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Illikkal]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Iyer]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Newell]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Chadha]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Moses]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Rate-based QoS techniques for cache/memory in CMP platforms]]></source>
<year>2009</year>
<conf-name><![CDATA[ 23th International Conference on Supercomputing]]></conf-name>
<conf-loc> </conf-loc>
<page-range>479-88</page-range></nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="">
<collab>Intel</collab>
<source><![CDATA[Intel®core&#8482;2 duo processor e6550]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="">
<collab>Intel</collab>
<source><![CDATA[Intel®64 and IA-32 architectures software developer manuals]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B18">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[John]]></surname>
<given-names><![CDATA[O.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Process Manager]]></article-title>
<source><![CDATA[Operating systems with linux]]></source>
<year>2001</year>
<page-range>39-67</page-range><publisher-name><![CDATA[Palgrave]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Anatomy of linux dynamic libraries]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B20">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jung]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Shin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Hong]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Lee]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Kuo]]></surname>
<given-names><![CDATA[T. W.]]></given-names>
</name>
</person-group>
<source><![CDATA[A fair scheduling algorithm for multiprocessor systems using a task satisfaction index]]></source>
<year>2017</year>
<conf-name><![CDATA[ International Conference on Research in Adaptive and Convergent Systems]]></conf-name>
<conf-loc> </conf-loc>
<page-range>269-74</page-range></nlm-citation>
</ref>
<ref id="B21">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lim]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Min]]></surname>
<given-names><![CDATA[C. W.]]></given-names>
</name>
<name>
<surname><![CDATA[Eom]]></surname>
<given-names><![CDATA[I. Y.]]></given-names>
</name>
</person-group>
<source><![CDATA[Load-balancing for improving user responsiveness on multicore embedded systems]]></source>
<year>2012</year>
<conf-name><![CDATA[ Linux Symposium]]></conf-name>
<conf-loc> </conf-loc>
<page-range>25-34</page-range></nlm-citation>
</ref>
<ref id="B22">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lozi]]></surname>
<given-names><![CDATA[J. P.]]></given-names>
</name>
<name>
<surname><![CDATA[Lepers]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Funston]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Gaud]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Fedorova]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Quéma]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
</person-group>
<source><![CDATA[The linux scheduler: A decade of wasted cores]]></source>
<year>2016</year>
<conf-name><![CDATA[ Eleventh European Conference on Computer Systems (EuroSys&#8217;16)]]></conf-name>
<conf-loc> </conf-loc>
<page-range>1-16</page-range></nlm-citation>
</ref>
<ref id="B23">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lozi]]></surname>
<given-names><![CDATA[J. P.]]></given-names>
</name>
<name>
<surname><![CDATA[Lepers]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Funston]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Gaud]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Fedorova]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Quema]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Your cores are slacking off&#8211;or why os scheduling is a hard problem]]></article-title>
<source><![CDATA[]]></source>
<year>2016</year>
<volume>41</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>6-13</page-range><publisher-name><![CDATA[USENIX Association]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B24">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Marinakis]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Haritatos]]></surname>
<given-names><![CDATA[A. H.]]></given-names>
</name>
<name>
<surname><![CDATA[Nikas]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
<name>
<surname><![CDATA[Goumas]]></surname>
<given-names><![CDATA[G. I.]]></given-names>
</name>
<name>
<surname><![CDATA[Anagnostopoulos]]></surname>
<given-names><![CDATA[I.]]></given-names>
</name>
</person-group>
<source><![CDATA[An efficient and fair scheduling policy for multiprocessor platforms]]></source>
<year>2017</year>
<page-range>1-4</page-range></nlm-citation>
</ref>
<ref id="B25">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mosberger]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Eranian]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[IA-64 linux kernel: Design and implementation]]></source>
<year>2002</year>
<publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B26">
<nlm-citation citation-type="">
<collab>Oprofile</collab>
<source><![CDATA[Oprofile - a system profiler for linux]]></source>
<year>2013</year>
</nlm-citation>
</ref>
<ref id="B27">
<nlm-citation citation-type="">
<collab>Oracle</collab>
<source><![CDATA[Linkers and library guide]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B28">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pathania]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Venkataramani]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Shafique]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Mitra]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Henkel]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Distributed fair scheduling for many-cores]]></source>
<year>2016</year>
<page-range>379-84</page-range></nlm-citation>
</ref>
<ref id="B29">
<nlm-citation citation-type="">
<collab>Permon2</collab>
<source><![CDATA[perfmon2 - improving performance monitoring on linux]]></source>
<year>2013</year>
</nlm-citation>
</ref>
<ref id="B30">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Sáez]]></surname>
<given-names><![CDATA[J. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Gómez]]></surname>
<given-names><![CDATA[J. I.]]></given-names>
</name>
<name>
<surname><![CDATA[Prieto]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Improving priority enforcement via non-work-conserving scheduling]]></source>
<year>2008</year>
<conf-name><![CDATA[ 37th International Conference on Parallel Processing]]></conf-name>
<conf-loc> </conf-loc>
<page-range>99-106</page-range></nlm-citation>
</ref>
<ref id="B31">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Salzberg-Rodriguez]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Fischer]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Smolski]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Processes: The Principal Model of Execution]]></article-title>
<source><![CDATA[The Linux®kernel primer: A top-down approach for x86 and powerpc architectures]]></source>
<year>2005</year>
<page-range>77-178</page-range><publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B32">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shi]]></surname>
<given-names><![CDATA[Q.]]></given-names>
</name>
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Hu]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Huang]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
</person-group>
<source><![CDATA[Load balance scheduling algorithm for CMP architecture]]></source>
<year>2009</year>
<conf-name><![CDATA[ International Conference on Electronic Computer Technology]]></conf-name>
<conf-loc> </conf-loc>
<page-range>396-400</page-range></nlm-citation>
</ref>
<ref id="B33">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Siddha]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Pallipadi]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Mallick]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[Chip multiprocessing aware linux kernel scheduler]]></source>
<year>2005</year>
<conf-name><![CDATA[ Linux Symposium]]></conf-name>
<conf-loc> </conf-loc>
<page-range>193-204</page-range></nlm-citation>
</ref>
<ref id="B34">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Silberschatz]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Baer-Galvin]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Gagne]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Operating system concepts with java]]></source>
<year>2007</year>
<publisher-name><![CDATA[John Wiley and Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B35">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Silberschatz]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Baer-Galvin]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Gagne]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[CPU Scheduling]]></article-title>
<source><![CDATA[Operating system concepts]]></source>
<year>2018</year>
<page-range>220-7</page-range><publisher-name><![CDATA[John Wiley and Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B36">
<nlm-citation citation-type="">
<collab>SPEC</collab>
<source><![CDATA[Standard performance evaluation corporation]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B37">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tanenbaum]]></surname>
<given-names><![CDATA[A. S.]]></given-names>
</name>
<name>
<surname><![CDATA[Herbert]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Multiple Processor Systems]]></article-title>
<source><![CDATA[Modern operating systems]]></source>
<year>2015</year>
<page-range>520-39</page-range><publisher-name><![CDATA[Person Education]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B38">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tiwari]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Malik]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Wolfe]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Lee]]></surname>
<given-names><![CDATA[M. T. C.]]></given-names>
</name>
</person-group>
<source><![CDATA[Instruction level power analysis and optimization of software]]></source>
<year>1996</year>
<conf-name><![CDATA[ 9th International Conference on VLSI Design]]></conf-name>
<conf-loc> </conf-loc>
<page-range>1-18</page-range></nlm-citation>
</ref>
<ref id="B39">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Vogl]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Eckert]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
</person-group>
<source><![CDATA[Using hardware performance events for instruction-level monitoring on the x86]]></source>
<year>2012</year>
<conf-name><![CDATA[ EuroSec&#8217;12, 5th European Workshop on System Security]]></conf-name>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B40">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Weaver]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
</person-group>
<source><![CDATA[Linux perf_event features and overhead]]></source>
<year>2013</year>
<conf-name><![CDATA[ FastPath: Second International Workshop on Performance Analisys of Workload Optimized Systems]]></conf-name>
<conf-loc> </conf-loc>
<page-range>1-6</page-range></nlm-citation>
</ref>
<ref id="B41">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Weaver]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
</person-group>
<source><![CDATA[perf event &#8211; programming guide]]></source>
<year>2013</year>
</nlm-citation>
</ref>
<ref id="B42">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wolfgang]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Professional Linux®kernel architecture]]></source>
<year>2008</year>
<publisher-name><![CDATA[Wiley Publishing]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B43">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhang]]></surname>
<given-names><![CDATA[X.]]></given-names>
</name>
<name>
<surname><![CDATA[Zhong]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Dwarkadas]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Shen]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
</person-group>
<source><![CDATA[A flexible framework for throttling-enabled multicore managment]]></source>
<year>2012</year>
<conf-name><![CDATA[ 41st International Conference on Parallel Processing]]></conf-name>
<conf-loc> </conf-loc>
<page-range>389-98</page-range></nlm-citation>
</ref>
<ref id="B44">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhuravlev]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Blagodurov]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Fedorova]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang=""><![CDATA[Addressing shared resource contention in multicore processors via scheduling]]></article-title>
<source><![CDATA[ACM SIGARCH Computer Architecture News]]></source>
<year>2010</year>
<volume>38</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>129-42</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
