From b804df691448cfde9c3b98ca9917e7bf5590da83 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Fri, 21 Feb 2020 12:38:48 +0100 Subject: [PATCH] convert energy-vm --- MANIFEST.in | 4 +- examples/c/CMakeLists.txt | 4 +- .../msg => c}/energy-vm/.gitignore | 0 examples/c/energy-vm/energy-vm.c | 83 +++++++++++++++++++ .../msg => c}/energy-vm/energy-vm.tesh | 2 +- examples/deprecated/msg/CMakeLists.txt | 3 +- examples/deprecated/msg/energy-vm/energy-vm.c | 76 ----------------- 7 files changed, 89 insertions(+), 83 deletions(-) rename examples/{deprecated/msg => c}/energy-vm/.gitignore (100%) create mode 100644 examples/c/energy-vm/energy-vm.c rename examples/{deprecated/msg => c}/energy-vm/energy-vm.tesh (93%) delete mode 100644 examples/deprecated/msg/energy-vm/energy-vm.c diff --git a/MANIFEST.in b/MANIFEST.in index 83be8b2a91..63b79b56a3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -59,6 +59,8 @@ include examples/c/cloud-simple/cloud-simple.c include examples/c/cloud-simple/cloud-simple.tesh 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-dvfs/exec-dvfs.c include examples/c/exec-dvfs/exec-dvfs.tesh include examples/c/io-disk-raw/io-disk-raw.c @@ -215,8 +217,6 @@ include examples/deprecated/msg/dht-pastry/dht-pastry.c include examples/deprecated/msg/dht-pastry/dht-pastry.tesh include examples/deprecated/msg/dht-pastry/dht-pastry_d.xml include examples/deprecated/msg/dht-pastry/generate.py -include examples/deprecated/msg/energy-vm/energy-vm.c -include examples/deprecated/msg/energy-vm/energy-vm.tesh include examples/deprecated/msg/mc/bugged1.c include examples/deprecated/msg/mc/bugged1.tesh include examples/deprecated/msg/mc/bugged1_liveness.c diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index b7ee8674a7..cd8f7b6c27 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -7,7 +7,7 @@ foreach(x async-waitall async-waitany cloud-capping cloud-migration cloud-simple exec-dvfs - energy-exec + energy-exec energy-vm io-disk-raw io-file-remote plugin-hostload) add_executable (${x}-c EXCLUDE_FROM_ALL ${x}/${x}.c) @@ -56,7 +56,7 @@ foreach(x async-waitall async-waitany cloud-capping cloud-migration cloud-simple exec-dvfs - energy-exec + energy-exec energy-vm io-disk-raw io-file-remote plugin-hostload) ADD_TESH(c-${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms diff --git a/examples/deprecated/msg/energy-vm/.gitignore b/examples/c/energy-vm/.gitignore similarity index 100% rename from examples/deprecated/msg/energy-vm/.gitignore rename to examples/c/energy-vm/.gitignore diff --git a/examples/c/energy-vm/energy-vm.c b/examples/c/energy-vm/energy-vm.c new file mode 100644 index 0000000000..f3e25b993c --- /dev/null +++ b/examples/c/energy-vm/energy-vm.c @@ -0,0 +1,83 @@ +/* Copyright (c) 2007-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 "simgrid/plugins/energy.h" +#include "simgrid/vm.h" +#include "xbt/asserts.h" +#include "xbt/log.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(energy_vm, "Messages of this example"); + +static void worker_func(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) +{ + sg_actor_self_execute(300E6); + XBT_INFO("This worker is done."); +} + +static void dvfs(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) +{ + sg_host_t host1 = sg_host_by_name("MyHost1"); + sg_host_t host2 = sg_host_by_name("MyHost2"); + sg_host_t host3 = sg_host_by_name("MyHost3"); + + /* Host 1 */ + XBT_INFO("Creating and starting two VMs"); + sg_vm_t vm_host1 = sg_vm_create_core(host1, "vm_host1"); + sg_vm_start(vm_host1); + sg_vm_t vm_host2 = sg_vm_create_core(host2, "vm_host2"); + sg_vm_start(vm_host2); + + XBT_INFO("Create two tasks on Host1: both inside a VM"); + sg_actor_t p11 = sg_actor_init("p11", (sg_host_t)vm_host1); + sg_actor_start(p11, worker_func, 0, NULL); + sg_actor_t p12 = sg_actor_init("p12", (sg_host_t)vm_host1); + sg_actor_start(p12, worker_func, 0, NULL); + + XBT_INFO("Create two tasks on Host2: one inside a VM, the other directly on the host"); + sg_actor_t p21 = sg_actor_init("p21", (sg_host_t)vm_host2); + sg_actor_start(p21, worker_func, 0, NULL); + sg_actor_t p22 = sg_actor_init("p22", host2); + sg_actor_start(p22, worker_func, 0, NULL); + + XBT_INFO("Create two tasks on Host3: both directly on the host"); + sg_actor_t p31 = sg_actor_init("p31", host3); + sg_actor_start(p31, worker_func, 0, NULL); + sg_actor_t p32 = sg_actor_init("p32", host3); + sg_actor_start(p32, worker_func, 0, NULL); + + XBT_INFO("Wait 5 seconds. The tasks are still running (they run for 3 seconds, but 2 tasks are co-located, " + "so they run for 6 seconds)"); + sg_actor_sleep_for(5); + XBT_INFO("Wait another 5 seconds. The tasks stop at some point in between"); + sg_actor_sleep_for(5); + + sg_vm_destroy(vm_host1); + sg_vm_destroy(vm_host2); +} + +int main(int argc, char* argv[]) +{ + sg_host_energy_plugin_init(); + simgrid_init(&argc, argv); + + xbt_assert(argc > 1, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]); + + simgrid_load_platform(argv[1]); + + sg_actor_t actor = sg_actor_init("dvfs", sg_host_by_name("MyHost1")); + sg_actor_start(actor, dvfs, 0, NULL); + + simgrid_run(); + + XBT_INFO("Total simulation time: %.2f; Host2 and Host3 must have the exact same energy consumption; Host1 is " + "multi-core and will differ.", + simgrid_get_clock()); + + return 0; +} diff --git a/examples/deprecated/msg/energy-vm/energy-vm.tesh b/examples/c/energy-vm/energy-vm.tesh similarity index 93% rename from examples/deprecated/msg/energy-vm/energy-vm.tesh rename to examples/c/energy-vm/energy-vm.tesh index ba4dbdfe66..204edbe464 100644 --- a/examples/deprecated/msg/energy-vm/energy-vm.tesh +++ b/examples/c/energy-vm/energy-vm.tesh @@ -2,7 +2,7 @@ p Testing the mechanism for computing host energy consumption in case of VMs -$ ${bindir:=.}/energy-vm ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" +$ ${bindir:=.}/energy-vm-c ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" > [ 0.000000] (1:dvfs@MyHost1) Creating and starting two VMs > [ 0.000000] (1:dvfs@MyHost1) Create two tasks on Host1: both inside a VM > [ 0.000000] (1:dvfs@MyHost1) Create two tasks on Host2: one inside a VM, the other directly on the host diff --git a/examples/deprecated/msg/CMakeLists.txt b/examples/deprecated/msg/CMakeLists.txt index 0692b9da30..bff0b52dcc 100644 --- a/examples/deprecated/msg/CMakeLists.txt +++ b/examples/deprecated/msg/CMakeLists.txt @@ -1,6 +1,6 @@ # C examples foreach(x app-masterworker cloud-masterworker - dht-pastry energy-vm platform-failures + dht-pastry platform-failures process-create synchro-semaphore trace-categories trace-route-user-variables trace-link-user-variables trace-masterworker @@ -58,7 +58,6 @@ set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/a if(enable_msg) foreach(x app-masterworker cloud-masterworker dht-pastry dht-kademlia platform-failures - energy-vm process-create synchro-semaphore) ADD_TESH_FACTORIES(msg-${x} "thread;ucontext;raw;boost" diff --git a/examples/deprecated/msg/energy-vm/energy-vm.c b/examples/deprecated/msg/energy-vm/energy-vm.c deleted file mode 100644 index 208f366b05..0000000000 --- a/examples/deprecated/msg/energy-vm/energy-vm.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright (c) 2007-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/msg.h" -#include "simgrid/plugins/energy.h" - -XBT_LOG_NEW_DEFAULT_CATEGORY(energy_vm, "Messages of this example"); - -static int worker_func(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) -{ - msg_task_t task1 = MSG_task_create("t1", 300E6, 0, NULL); - MSG_task_execute (task1); - MSG_task_destroy(task1); - XBT_INFO("This worker is done."); - return 0; -} - -static int dvfs(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[]) -{ - msg_host_t host1 = MSG_host_by_name("MyHost1"); - msg_host_t host2 = MSG_host_by_name("MyHost2"); - msg_host_t host3 = MSG_host_by_name("MyHost3"); - - /* Host 1 */ - XBT_INFO("Creating and starting two VMs"); - msg_vm_t vm_host1 = MSG_vm_create_core(host1, "vm_host1"); - MSG_vm_start(vm_host1); - msg_vm_t vm_host2 = MSG_vm_create_core(host2, "vm_host2"); - MSG_vm_start(vm_host2); - - XBT_INFO("Create two tasks on Host1: both inside a VM"); - MSG_process_create("p11", worker_func, NULL, (msg_host_t)vm_host1); - MSG_process_create("p12", worker_func, NULL, (msg_host_t)vm_host1); - - XBT_INFO("Create two tasks on Host2: one inside a VM, the other directly on the host"); - MSG_process_create("p21", worker_func, NULL, (msg_host_t)vm_host2); - MSG_process_create("p22", worker_func, NULL, host2); - - XBT_INFO("Create two tasks on Host3: both directly on the host"); - MSG_process_create("p31", worker_func, NULL, host3); - MSG_process_create("p32", worker_func, NULL, host3); - - XBT_INFO("Wait 5 seconds. The tasks are still running (they run for 3 seconds, but 2 tasks are co-located, " - "so they run for 6 seconds)"); - MSG_process_sleep(5); - XBT_INFO("Wait another 5 seconds. The tasks stop at some point in between"); - MSG_process_sleep(5); - - MSG_vm_destroy(vm_host1); - MSG_vm_destroy(vm_host2); - - return 0; -} - -int main(int argc, char *argv[]) -{ - sg_host_energy_plugin_init(); - MSG_init(&argc, argv); - - xbt_assert(argc > 1, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]); - - MSG_create_environment(argv[1]); - - MSG_process_create("dvfs",dvfs,NULL,MSG_host_by_name("MyHost1")); - - msg_error_t res = MSG_main(); - - XBT_INFO("Total simulation time: %.2f; Host2 and Host3 must have the exact same energy consumption; Host1 is " - "multi-core and will differ.", - MSG_get_clock()); - - return res != MSG_OK; -} -- 2.20.1