From: Martin Quinson Date: Mon, 4 Dec 2017 23:25:48 +0000 (+0100) Subject: improve that example so that it also demonstrates the prioritized executions X-Git-Tag: v3.18~155 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/bd6f12a8267489592b5b55c5387b7cf49768b1b1 improve that example so that it also demonstrates the prioritized executions --- diff --git a/examples/s4u/actor-execute/s4u-actor-execute.cpp b/examples/s4u/actor-execute/s4u-actor-execute.cpp index 9fc417d823..eb90bed16c 100644 --- a/examples/s4u/actor-execute/s4u-actor-execute.cpp +++ b/examples/s4u/actor-execute/s4u-actor-execute.cpp @@ -5,16 +5,38 @@ #include "simgrid/s4u.hpp" +XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example"); + static int executor(std::vector /*args*/) { /* this_actor::execute() tells SimGrid to pause the calling actor * until its host has computed the amount of flops passed as a parameter */ - simgrid::s4u::this_actor::execute(100); + simgrid::s4u::this_actor::execute(98095); + XBT_INFO("Done."); /* This simple example does not do anything beyond that */ return 0; } +static int privileged(std::vector /*args*/) +{ + /* This version of this_actor::execute() specifies that this execution + * gets a larger share of the resource. + * + * Since the priority is 2, it computes twice as fast as a regular one. + * + * So instead of a half/half sharing between the two executions, + * we get a 1/3 vs 2/3 sharing. */ + simgrid::s4u::this_actor::execute(98095, 2); + XBT_INFO("Done."); + + /* Note that the timings printed when executing this example are a bit misleading, + * because the uneven sharing only last until the privileged actor ends. + * After this point, the unprivileged one gets 100% of the CPU and finishes + * quite quickly. */ + return 0; +} + int main(int argc, char *argv[]) { simgrid::s4u::Engine e(&argc, argv); @@ -24,6 +46,7 @@ int main(int argc, char *argv[]) e.loadPlatform(argv[1]); simgrid::s4u::Actor::createActor("executor", simgrid::s4u::Host::by_name("Tremblay"), executor, args); + simgrid::s4u::Actor::createActor("privileged", simgrid::s4u::Host::by_name("Tremblay"), privileged, args); e.run(); diff --git a/examples/s4u/actor-execute/s4u-actor-execute.tesh b/examples/s4u/actor-execute/s4u-actor-execute.tesh index deba26ddf3..ba18fdef04 100644 --- a/examples/s4u/actor-execute/s4u-actor-execute.tesh +++ b/examples/s4u/actor-execute/s4u-actor-execute.tesh @@ -2,3 +2,5 @@ p Start remote processes $ $SG_TEST_EXENV ${bindir:=.}/s4u-actor-execute$EXEEXT ${platfdir}/small_platform.xml +> [Tremblay:privileged:(2) 0.001500] [s4u_test/INFO] Done. +> [Tremblay:executor:(1) 0.002000] [s4u_test/INFO] Done.