X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0e9c0448c6566825b170b98ecff716b098bda10e..c7a0ad9ac245dbab9317cb06ebf028118bc0c687:/examples/msg/energy/e2/e2.c diff --git a/examples/msg/energy/e2/e2.c b/examples/msg/energy/e2/e2.c index d0ea20bd23..dbfe96f729 100644 --- a/examples/msg/energy/e2/e2.c +++ b/examples/msg/energy/e2/e2.c @@ -1,5 +1,4 @@ - -/* Copyright (c) 2007-2010, 2013. The SimGrid Team. +/* Copyright (c) 2007-2010, 2013-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -9,6 +8,7 @@ #include "msg/msg.h" #include "xbt/sysdep.h" /* calloc */ +#include "simgrid/plugins.h" /* Create a log channel to have nice outputs. */ #include "xbt/log.h" @@ -24,60 +24,72 @@ int dvfs(int argc, char *argv[]) { msg_host_t host = NULL; msg_task_t task1 = NULL; - double task_time = 0; host = MSG_get_host_by_name("MyHost1"); - double current_peak = MSG_get_host_current_power_peak(host); - XBT_INFO("Current power peak=%f", current_peak); + XBT_INFO("Energetic profile: %s", + MSG_host_get_property_value(host,"watt_per_state")); + XBT_INFO("Initial peak speed=%.0E flop/s; Energy dissipated =%.0E J", + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); - double consumed_energy = MSG_get_host_consumed_energy(host); - XBT_INFO("Total energy (Joules): %f", consumed_energy); + double start = MSG_get_clock(); + XBT_INFO("Sleep for 10 seconds"); + MSG_process_sleep(10); + XBT_INFO("Done sleeping (duration: %.2f s). Current peak speed=%.0E; Energy dissipated=%.2f J", + MSG_get_clock()-start, + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); // Run a task + start = MSG_get_clock(); + XBT_INFO("Run a task for 100E6 flops"); task1 = MSG_task_create ("t1", 100E6, 0, NULL); MSG_task_execute (task1); MSG_task_destroy(task1); - - task_time = MSG_get_clock(); - XBT_INFO("Task1 simulation time: %e", task_time); - consumed_energy = MSG_get_host_consumed_energy(host); - XBT_INFO("Total energy (Joules): %f", consumed_energy); + XBT_INFO("Task done (duration: %.2f s). Current peak speed=%.0E flop/s; Energy dissipated=%.0f J", + MSG_get_clock()-start, + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); // ========= Change power peak ========= - int peak_index=2; - double peak_at = MSG_get_host_power_peak_at(host, peak_index); - XBT_INFO("=========Changing power peak value to %f (at index %d)", peak_at, peak_index); - - MSG_set_host_power_peak_at(host, peak_index); + int pstate=2; + MSG_host_set_pstate(host, pstate); + XBT_INFO("========= Requesting pstate %d (speed should be of %.2f flop/s and is of %.2f flop/s)", + pstate, + MSG_host_get_power_peak_at(host, pstate), + MSG_host_get_current_power_peak(host)); // Run a second task + start = MSG_get_clock(); + XBT_INFO("Run a task for 100E6 flops"); task1 = MSG_task_create ("t2", 100E6, 0, NULL); MSG_task_execute (task1); MSG_task_destroy(task1); - - task_time = MSG_get_clock() - task_time; - XBT_INFO("Task2 simulation time: %e", task_time); - - consumed_energy = MSG_get_host_consumed_energy(host); - XBT_INFO("Total energy (Joules): %f", consumed_energy); - - - MSG_process_sleep(3); - - task_time = MSG_get_clock() - task_time; - XBT_INFO("Task3 (sleep) simulation time: %e", task_time); - consumed_energy = MSG_get_host_consumed_energy(host); - XBT_INFO("Total energy (Joules): %f", consumed_energy); - - + XBT_INFO("Task done (duration: %.2f s). Current peak speed=%.0E flop/s; Energy dissipated=%.0f J", + MSG_get_clock()-start, + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); + + start = MSG_get_clock(); + XBT_INFO("Sleep for 4 seconds"); + MSG_process_sleep(4); + XBT_INFO("Done sleeping (duration: %.2f s). Current peak speed=%.0E flop/s; Energy dissipated=%.0f J", + MSG_get_clock()-start, + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); + + // =========== Turn the other host off ========== + XBT_INFO("Turning MyHost2 off, and sleeping another 10 seconds. MyHost2 dissipated %.0f J so far.", + MSG_host_get_consumed_energy(MSG_get_host_by_name("MyHost2")) ); + MSG_host_off(MSG_get_host_by_name("MyHost2")); + start = MSG_get_clock(); + MSG_process_sleep(10); + XBT_INFO("Done sleeping (duration: %.2f s). Current peak speed=%.0E flop/s; Energy dissipated=%.0f J", + MSG_get_clock()-start, + MSG_host_get_current_power_peak(host), MSG_host_get_consumed_energy(host)); return 0; } int main(int argc, char *argv[]) { msg_error_t res = MSG_OK; - + sg_energy_plugin_init(); MSG_init(&argc, argv); if (argc != 3) { @@ -98,7 +110,7 @@ int main(int argc, char *argv[]) res = MSG_main(); - XBT_INFO("Total simulation time: %e", MSG_get_clock()); + XBT_INFO("Total simulation time: %.2f", MSG_get_clock()); if (res == MSG_OK) return 0;