Skip to content

Commit

Permalink
Creating 10.21105.joss.04592.jats
Browse files Browse the repository at this point in the history
  • Loading branch information
editorialbot committed Aug 12, 2022
1 parent 053f59a commit c13bf07
Showing 1 changed file with 390 additions and 0 deletions.
390 changes: 390 additions & 0 deletions joss.04592/10.21105.joss.04592.jats
Original file line number Diff line number Diff line change
@@ -0,0 +1,390 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN"
"JATS-publishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other">
<front>
<journal-meta>
<journal-id></journal-id>
<journal-title-group>
<journal-title>Journal of Open Source Software</journal-title>
<abbrev-journal-title>JOSS</abbrev-journal-title>
</journal-title-group>
<issn publication-format="electronic">2475-9066</issn>
<publisher>
<publisher-name>Open Journals</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">4592</article-id>
<article-id pub-id-type="doi">10.21105/joss.04592</article-id>
<title-group>
<article-title>SimSGamE : Scheduling simulator for modern game
engines</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">0000-0001-6316-8079</contrib-id>
<name>
<surname>Regragui</surname>
<given-names>Mustapha</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">0000-0002-7619-4492</contrib-id>
<name>
<surname>Coye</surname>
<given-names>Baptiste</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
<xref ref-type="aff" rid="aff-2"/>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">0000-0003-0997-586X</contrib-id>
<name>
<surname>Pilla</surname>
<given-names>Laercio Lima</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
<xref ref-type="aff" rid="aff-3"/>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">0000-0001-7734-1258</contrib-id>
<name>
<surname>Namyst</surname>
<given-names>Raymond</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
<xref ref-type="aff" rid="aff-4"/>
<xref ref-type="aff" rid="aff-5"/>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">0000-0001-7110-2037</contrib-id>
<name>
<surname>Barthou</surname>
<given-names>Denis</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
<xref ref-type="aff" rid="aff-5"/>
<xref ref-type="aff" rid="aff-6"/>
</contrib>
<aff id="aff-1">
<institution-wrap>
<institution>Inria Bordeaux, France</institution>
</institution-wrap>
</aff>
<aff id="aff-2">
<institution-wrap>
<institution>Ubisoft Bordeaux, France</institution>
</institution-wrap>
</aff>
<aff id="aff-3">
<institution-wrap>
<institution>CNRS, France</institution>
</institution-wrap>
</aff>
<aff id="aff-4">
<institution-wrap>
<institution>Univ. Bordeaux, France</institution>
</institution-wrap>
</aff>
<aff id="aff-5">
<institution-wrap>
<institution>Labri, France</institution>
</institution-wrap>
</aff>
<aff id="aff-6">
<institution-wrap>
<institution>Bordeaux INP, France</institution>
</institution-wrap>
</aff>
</contrib-group>
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2022-06-27">
<day>27</day>
<month>6</month>
<year>2022</year>
</pub-date>
<volume>7</volume>
<issue>76</issue>
<fpage>4592</fpage>
<permissions>
<copyright-statement>Authors of papers retain copyright and release the
work under a Creative Commons Attribution 4.0 International License (CC
BY 4.0)</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>The article authors</copyright-holder>
<license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>Authors of papers retain copyright and release the work under
a Creative Commons Attribution 4.0 International License (CC BY
4.0)</license-p>
</license>
</permissions>
<kwd-group kwd-group-type="author">
<kwd>Task Programming</kwd>
<kwd>Video-game engine</kwd>
<kwd>Scheduling</kwd>
<kwd>Soft Real Time Scheduling</kwd>
<kwd>C++</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="summary">
<title>Summary</title>
<p>The video game market is valued at over USD$100 billion
(<xref alt="Mordor Intelligence, n.d." rid="ref-gaming" ref-type="bibr">Mordor
Intelligence, n.d.</xref>) and impacts computing both at the hardware
and software levels. It produces and sells tens of millions of video
games and consoles yearly. The variety of devices running games is
very large, from personal computers, consoles and smartphones to Cloud
gaming servers. In order to develop these games more easily and allow
them to be ported to different platforms, developers use a key
software component called the game engine.</p>
<p>Game engines are at the heart of the design of modern video games.
They handle most of the components of the game, and allow the
generation of each frame (image) displayed on the player screen. They
aim to keep a high frame rate (30 to 60 frames per seconds) by
scheduling the tasks required to complete such computations.</p>
<p>Each task represents a functionality written by a given team at a
given moment in the lifetime of the game engine. These tasks have
precedence constraints that must be respected to ensure the
execution’s correctness, which is organised as a directed acyclic
graph (DAG), and they have varied execution times. Scheduling such
tasks is NP-hard and has not been studied in detail in the context of
game engines. A better understanding of this problem could lead to
optimizations for the benefit of players and developers.</p>
<p>Our code is focused on modeling a modern game engine and answering
the following three questions:</p>
<list list-type="bullet">
<list-item>
<p>Can state-of-the-art scheduling strategies improve the
performance of the game engine?</p>
</list-item>
<list-item>
<p>Can changes in the scheduling mechanism reduce the gap between
produced schedules and the critical path?</p>
</list-item>
<list-item>
<p>Can small changes to the task graph lead to performance
improvements?</p>
</list-item>
</list>
</sec>
<sec id="statement-of-need">
<title>Statement of need</title>
<p>SimSGamE was created in order to study the scheduling of game
engines. Given the lack of studies on this problem, our efforts have
been dedicated to finding and adapting algorithms and heuristics
proposed in other contexts. We find that there is value in bringing to
light new applications and knowledge about existing algorithms.</p>
<p>The software simulates the behavior of game engines using two
files:</p>
<list list-type="bullet">
<list-item>
<p>a dependency file describing links between tasks and the
structure of the game engine to be simulated, and</p>
</list-item>
<list-item>
<p>a tasks file describing key values for tasks (steps, mean,
minimum, maximum, std_dev) for both moderated and intensive use of
the engine.</p>
</list-item>
</list>
<p>Using these two files, SimSGamE generates randomized tasks
composing a frame respecting the statistical repartition and their
dependencies (generation may be seeded in order to enable direct
comparisons). The simulation also mimics different load evolution
(from moderate use 0% to intensive 100%) and evaluates multiple
scheduling techniques to estimate frame span and metrics, giving
information regarding heuristics efficiencies.</p>
<p>The simulation is composed of 200 generated frames with the load
parameter starting at 0 (0%) and increasing linearly up to 1 (100%) in
the 101st frame and then decreasing linearly until it reaches 0.01
(1%) for the last frame. This provides a gradual change of load while
also generating a load peak. In order to have a better understanding
of possible optimizations and their impact on the game engine, we also
added the ability to sort subtasks (parallel for situations) by
non-increasing order of execution time. We consider this is a feasible
change to the game engine because it does not affect the actual
execution of the subtasks nor the dependencies in the task graph.</p>
<p>The number of available CPUs can be changed to fit the device to
emulate or anticipate the effects of external interference but
communication and locks are not taken into account at the moment.</p>
<p>The algorithms implemented in the code are:</p>
<list list-type="bullet">
<list-item>
<p>FIFO: First In First Out</p>
</list-item>
<list-item>
<p>LPT: Longest Processing Time First</p>
</list-item>
<list-item>
<p>SPT: Shortest Processing Time First</p>
</list-item>
<list-item>
<p>SLPT: LPT at a subtask level (input method name: SLRT)</p>
</list-item>
<list-item>
<p>SSPT: SPT at a subtask level (input method name: SSRT)</p>
</list-item>
<list-item>
<p>HRRN: Highest Response Ratio Next</p>
</list-item>
<list-item>
<p>WT: Longest Waiting Time First</p>
</list-item>
<list-item>
<p>HLF: Hu’s Level First with unitary processing time of each
task</p>
</list-item>
<list-item>
<p>HLFET: HLF with estimated times (input method name: Hu)</p>
</list-item>
<list-item>
<p>CG: Coffman-Graham’s Algorithm (input method name: Coffman)</p>
</list-item>
<list-item>
<p>DCP: Dynamic Critical Path Priority (input method name:
Priority)</p>
</list-item>
</list>
<p>In addition, the following algorithms are implemented but not used
in automatic tests:</p>
<list list-type="bullet">
<list-item>
<p>WL: Weighted Length algorithm</p>
</list-item>
<list-item>
<p>LFF: Latest Finished First</p>
</list-item>
<list-item>
<p>MostScussors: Most successors First</p>
</list-item>
<list-item>
<p>TOPO: topological order</p>
</list-item>
<list-item>
<p>NEH: Nawaz, Enscore, Ham algorithm</p>
</list-item>
<list-item>
<p>ACO: Ant Colony Optimization</p>
</list-item>
<list-item>
<p>Infinity: CPU amount is infinite</p>
</list-item>
</list>
<p>Metrics</p>
<list list-type="bullet">
<list-item>
<p>SF: slowest frame (maximum frame execution time)</p>
</list-item>
<list-item>
<p>DF: number of delayed frames (with 16.667 ms as the due
date)</p>
</list-item>
<list-item>
<p>CS: cumulative slowdown (with 16.667 ms as the due date)</p>
</list-item>
</list>
</sec>
<sec id="state-of-the-field">
<title>State of the field</title>
<p>Scheduling is a well known issue that has been widely studied.
However, given the lack of studies on this particular scheduling
problem, our efforts have been dedicated to finding and adapting
algorithms and heuristics proposed in other contexts. Video games work
as soft real-time interactive simulations
(<xref alt="Gregory, 2018" rid="ref-gregory2018game" ref-type="bibr">Gregory,
2018</xref>). However, Real-Time scheduling often considers reccuring
independent tasks where earliest deadline first (EDF) heuristics are
employed
(<xref alt="Nascimento &amp; Lima, 2021" rid="ref-nascimento2021effectively" ref-type="bibr">Nascimento
&amp; Lima, 2021</xref>). Nonetheless, the game engine contains
dependent tasks with an entire task graph to be computed at each frame
and all tasks share the same due date, obstructing the use of EDF
heuristics. Moreover, parallel task scheduling usually models tasks
using multiple resources simultaneously, but the tasks follow a
fork-join model internally. An algorithm called DynFed was proposed to
schedule parallel tasks with dependencies in real time systems by Dai
et al.
(<xref alt="2021" rid="ref-dai2021timing" ref-type="bibr">2021</xref>),
but it focuses on periodic, independent tasks whose parallel subtasks
have dependencies, while our problem contains periodic tasks with
dependencies whose parallel subtasks are independant. The Game Task
Scheduler developed by Intel
(<xref alt="Alfieri, 2019" rid="ref-gds2019" ref-type="bibr">Alfieri,
2019</xref>) reflects these tasks and subtasks organisation but is
developped as a tool to be integrated in a game engine and not as a
benchmark system that allows testing different heurisitcs and
evaluating performance.</p>
</sec>
<sec id="acknowledgements">
<title>Acknowledgements</title>
<p>We acknowledge contributions from Cédric Dumondelle and Hervé
Hubele during the genesis of this project.</p>
</sec>
</body>
<back>
<ref-list>
<ref id="ref-nascimento2021effectively">
<element-citation publication-type="paper-conference">
<person-group person-group-type="author">
<name><surname>Nascimento</surname><given-names>Flávia Maristela S.</given-names></name>
<name><surname>Lima</surname><given-names>George</given-names></name>
</person-group>
<article-title>Effectively scheduling hard and soft real-time tasks on multiprocessors</article-title>
<source>2021 IEEE 27th real-time and embedded technology and applications symposium (RTAS)</source>
<year iso-8601-date="2021">2021</year>
<pub-id pub-id-type="doi">10.1109/RTAS52030.2021.00025</pub-id>
<fpage>210</fpage>
<lpage>222</lpage>
</element-citation>
</ref>
<ref id="ref-dai2021timing">
<element-citation publication-type="paper-conference">
<person-group person-group-type="author">
<name><surname>Dai</surname><given-names>Gaoyang</given-names></name>
<name><surname>Mohaqeqi</surname><given-names>Morteza</given-names></name>
<name><surname>Yi</surname><given-names>Wang</given-names></name>
</person-group>
<article-title>Timing-anomaly free dynamic scheduling of periodic DAG tasks with non-preemptive nodes</article-title>
<source>2021 IEEE 27th international conference on embedded and real-time computing systems and applications (RTCSA)</source>
<year iso-8601-date="2021">2021</year>
<pub-id pub-id-type="doi">10.1109/RTCSA52859.2021.00022</pub-id>
<fpage>119</fpage>
<lpage>128</lpage>
</element-citation>
</ref>
<ref id="ref-gds2019">
<element-citation>
<person-group person-group-type="author">
<name><surname>Alfieri</surname><given-names>Bret</given-names></name>
</person-group>
<article-title>Intel games task scheduler</article-title>
<publisher-name>https://github.com/GameTechDev/GTS-GamesTaskScheduler</publisher-name>
<year iso-8601-date="2019-01">2019</year><month>01</month>
</element-citation>
</ref>
<ref id="ref-gregory2018game">
<element-citation publication-type="book">
<person-group person-group-type="author">
<name><surname>Gregory</surname><given-names>Jason</given-names></name>
</person-group>
<source>Game engine architecture</source>
<publisher-name>Taylor; Francis Ltd.</publisher-name>
<year iso-8601-date="2018">2018</year>
<edition>3</edition>
</element-citation>
</ref>
<ref id="ref-gaming">
<element-citation>
<person-group person-group-type="author">
<string-name>Mordor Intelligence</string-name>
</person-group>
<article-title>Global Gaming Market - Growth, Trends, Covid-19 Impact, and Forecasts (2022–2027)</article-title>
<publisher-name>https://www.mordorintelligence.com/industry-reports/global-gaming-market</publisher-name>
</element-citation>
</ref>
</ref-list>
</back>
</article>

0 comments on commit c13bf07

Please sign in to comment.