From 3bf461a6fde008496a9aa80dab235b98bda0dbdc Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 4 Mar 2020 13:35:13 +0100 Subject: [PATCH] add C version of exec-basic (including execute w/ priority) --- MANIFEST.in | 2 + examples/c/CMakeLists.txt | 4 +- examples/c/exec-basic/exec-basic.c | 55 +++++++++++++++++++++++++++ examples/c/exec-basic/exec-basic.tesh | 6 +++ 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 examples/c/exec-basic/exec-basic.c create mode 100644 examples/c/exec-basic/exec-basic.tesh diff --git a/MANIFEST.in b/MANIFEST.in index f0e936d3ff..af6548aef8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -72,6 +72,8 @@ include examples/c/energy-exec/energy-exec.c include examples/c/energy-exec/energy-exec.tesh include examples/c/energy-vm/energy-vm.c include examples/c/energy-vm/energy-vm.tesh +include examples/c/exec-basic/exec-basic.c +include examples/c/exec-basic/exec-basic.tesh include examples/c/exec-dvfs/exec-dvfs.c include examples/c/exec-dvfs/exec-dvfs.tesh include examples/c/io-disk-raw/io-disk-raw.c diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index ed0ddcf6eb..1bd07556bf 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -7,7 +7,7 @@ foreach(x app-pingpong app-token-ring async-wait async-waitall async-waitany cloud-capping cloud-migration cloud-simple - exec-dvfs + exec-basic exec-dvfs energy-exec energy-exec-ptask energy-vm io-disk-raw io-file-remote plugin-hostload) @@ -62,7 +62,7 @@ foreach(x app-chainsend app-pingpong app-token-ring async-wait async-waitall async-waitany cloud-capping cloud-migration cloud-simple - exec-dvfs + exec-basic exec-dvfs energy-exec energy-exec-ptask energy-vm io-disk-raw io-file-remote plugin-hostload) diff --git a/examples/c/exec-basic/exec-basic.c b/examples/c/exec-basic/exec-basic.c new file mode 100644 index 0000000000..8c7d1f4f21 --- /dev/null +++ b/examples/c/exec-basic/exec-basic.c @@ -0,0 +1,55 @@ +/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "simgrid/actor.h" +#include "simgrid/engine.h" +#include "simgrid/host.h" + +#include "xbt/asserts.h" +#include "xbt/log.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(exec_basic, "Messages specific for this example"); + +static void executor(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) +{ + /* sg_actor_self_execute() tells SimGrid to pause the calling actor + * until its host has computed the amount of flops passed as a parameter */ + sg_actor_execute(98095); + XBT_INFO("Done."); + + /* This simple example does not do anything beyond that */ +} + +static void privileged(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) +{ + /* sg_actor_self_execute_with_priority() 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. */ + sg_actor_execute_with_priority(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. */ +} + +int main(int argc, char* argv[]) +{ + simgrid_init(&argc, argv); + xbt_assert(argc > 1, "Usage: %s platform_file\n\tExample: %s ../platforms/small_platform.xml\n", argv[0], argv[0]); + + simgrid_load_platform(argv[1]); + + sg_actor_create("executor", sg_host_by_name("Tremblay"), executor, 0, NULL); + sg_actor_create("privileged", sg_host_by_name("Tremblay"), privileged, 0, NULL); + + simgrid_run(); + + return 0; +} diff --git a/examples/c/exec-basic/exec-basic.tesh b/examples/c/exec-basic/exec-basic.tesh new file mode 100644 index 0000000000..0693772445 --- /dev/null +++ b/examples/c/exec-basic/exec-basic.tesh @@ -0,0 +1,6 @@ +#!/usr/bin/env tesh + +p Start remote processes +$ ${bindir:=.}/exec-basic-c ${platfdir}/small_platform.xml +> [Tremblay:privileged:(2) 0.001500] [exec_basic/INFO] Done. +> [Tremblay:executor:(1) 0.002000] [exec_basic/INFO] Done. -- 2.20.1