From: Martin Quinson Date: Thu, 9 Jul 2020 22:36:28 +0000 (+0200) Subject: Add the wifi energy plugin to the SimGrid build system and let it compile X-Git-Tag: v3.26~370^2~3 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/bddb0477334d3db53f973467b9f3b7a94e9d00b4 Add the wifi energy plugin to the SimGrid build system and let it compile --- diff --git a/examples/s4u/CMakeLists.txt b/examples/s4u/CMakeLists.txt index 21c1aa1c56..8b51493a01 100644 --- a/examples/s4u/CMakeLists.txt +++ b/examples/s4u/CMakeLists.txt @@ -66,7 +66,7 @@ foreach (example actor-create actor-daemon actor-exiting actor-join actor-kill comm-dependent cloud-capping cloud-migration cloud-simple dht-chord dht-kademlia - energy-exec energy-boot energy-link energy-vm energy-exec-ptask + energy-exec energy-boot energy-link energy-vm energy-exec-ptask energy-wifi engine-filtering exec-async exec-basic exec-dvfs exec-ptask exec-remote exec-waitany exec-waitfor exec-dependent maestro-set diff --git a/examples/s4u/energy-wifi/s4u-energy-wifi.cpp b/examples/s4u/energy-wifi/s4u-energy-wifi.cpp index e3db9cd48b..0f5c909857 100644 --- a/examples/s4u/energy-wifi/s4u-energy-wifi.cpp +++ b/examples/s4u/energy-wifi/s4u-energy-wifi.cpp @@ -1,49 +1,25 @@ /** - * Test the wifi energy plugin - * Desactivate cross-factor to get round values - * Launche with: ./test test_platform_2STA.xml --cfg=plugin:link_energy_wifi --cfg=network/crosstraffic:0 - */ + * Test the wifi energy plugin + * Desactivate cross-factor to get round values + * Launch with: ./test test_platform_2STA.xml --cfg=plugin:link_energy_wifi --cfg=network/crosstraffic:0 + */ -#include "simgrid/s4u.hpp" -#include "xbt/log.h" -#include "simgrid/msg.h" -#include "simgrid/s4u/Activity.hpp" #include "simgrid/plugins/energy.h" -#include "src/surf/network_wifi.hpp" - -#include -#include -#include -#include -#include - -XBT_LOG_NEW_DEFAULT_CATEGORY(experience, "Wifi exp"); -static void sender(); -static void receiver(); - -int main(int argc, char **argv) -{ - // engine - simgrid::s4u::Engine engine(&argc, argv); - XBT_INFO("Activating the SimGrid link energy plugin"); - sg_wifi_energy_plugin_init(); - engine.load_platform(argv[1]); - - // setup WiFi bandwidths - simgrid::kernel::resource::NetworkWifiLink *l = (simgrid::kernel::resource::NetworkWifiLink *)simgrid::s4u::Link::by_name( - "AP1") - ->get_impl(); - l->set_host_rate(simgrid::s4u::Host::by_name("Station 1"), 0); - l->set_host_rate(simgrid::s4u::Host::by_name("Station 2"), 0); - - // create the two actors for the test - simgrid::s4u::Actor::create("act0", simgrid::s4u::Host::by_name("Station 1"), sender); - simgrid::s4u::Actor::create("act1", simgrid::s4u::Host::by_name("Station 2"), receiver); +#include "simgrid/s4u/Activity.hpp" +#include "simgrid/s4u/Actor.hpp" +#include "simgrid/s4u/Engine.hpp" +#include "simgrid/s4u/Host.hpp" +#include "simgrid/s4u/Link.hpp" +#include "simgrid/s4u/Mailbox.hpp" +#include "xbt/log.h" - engine.run(); +//#include +//#include +//#include +//#include +//#include - return 0; -} +XBT_LOG_NEW_DEFAULT_CATEGORY(test_wifi, "Wifi energy demo"); static void sender() { @@ -70,3 +46,25 @@ static void receiver() XBT_INFO("received all messages"); } + +int main(int argc, char** argv) +{ + // engine + simgrid::s4u::Engine engine(&argc, argv); + XBT_INFO("Activating the SimGrid link energy plugin"); + sg_wifi_energy_plugin_init(); + engine.load_platform(argv[1]); + + // setup WiFi bandwidths + auto* l = simgrid::s4u::Link::by_name("AP1"); + l->set_host_wifi_rate(simgrid::s4u::Host::by_name("Station 1"), 0); + l->set_host_wifi_rate(simgrid::s4u::Host::by_name("Station 2"), 0); + + // create the two actors for the test + simgrid::s4u::Actor::create("act0", simgrid::s4u::Host::by_name("Station 1"), sender); + simgrid::s4u::Actor::create("act1", simgrid::s4u::Host::by_name("Station 2"), receiver); + + engine.run(); + + return 0; +} diff --git a/src/plugins/link_energy_wifi.cpp b/src/plugins/link_energy_wifi.cpp index f31afecc8a..33f677c33e 100644 --- a/src/plugins/link_energy_wifi.cpp +++ b/src/plugins/link_energy_wifi.cpp @@ -17,6 +17,7 @@ #include #include +#include SIMGRID_REGISTER_PLUGIN(link_energy_wifi, "Energy wifi test", &sg_wifi_energy_plugin_init); /** @degroup plugin_link_energy_wifi Plugin WiFi energy @@ -29,8 +30,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(link_energy_wifi, surf, "Logging specific to the namespace simgrid { namespace plugin { -//class __attribute__ ((visibility("hidden")))LinkEnergyWifi { -class LinkEnergyWifi { +class XBT_PRIVATE LinkEnergyWifi { public: static simgrid::xbt::Extension EXTENSION_ID; @@ -74,7 +74,7 @@ public: private: // associative array keeping size of data already sent for a given flow (required for interleaved actions) - std::map> flowTmp{}; + std::map> flowTmp{}; // WiFi link the plugin instance is attached to s4u::Link* link_{}; @@ -114,10 +114,10 @@ void LinkEnergyWifi::updateDestroy() { durIdle += duration; // add IDLE energy usage, as well as beacons consumption since previous update - eDyn_ += duration*controlDuration_*wifi_link->get_nb_hosts_on_link()*pRx_; - eStat_ += (duration-(duration*controlDuration_)) * pIdle_ * (wifi_link->get_nb_hosts_on_link()+1); + eDyn_ += duration * controlDuration_ * wifi_link->get_host_count() * pRx_; + eStat_ += (duration - (duration * controlDuration_)) * pIdle_ * (wifi_link->get_host_count() + 1); - XBT_DEBUG("finish eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_nb_hosts_on_link(), eStat_); + XBT_DEBUG("finish eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_host_count(), eStat_); } void LinkEnergyWifi::update(const simgrid::kernel::resource::NetworkAction& action) { @@ -188,7 +188,7 @@ void LinkEnergyWifi::update(const simgrid::kernel::resource::NetworkAction& acti XBT_DEBUG("durUsage: %f", durUsage); // beacons cost - eDyn_+=duration*controlDuration_*wifi_link->get_nb_hosts_on_link()*pRx_; + eDyn_ += duration * controlDuration_ * wifi_link->get_host_count() * pRx_; /** * Same principle as ns3: @@ -197,16 +197,17 @@ void LinkEnergyWifi::update(const simgrid::kernel::resource::NetworkAction& acti * P_{tot} = P_{dyn}+P_{stat} */ if(link_->get_usage()){ - eDyn_ += /*duration * */durUsage * ((wifi_link->get_nb_hosts_on_link()*pRx_)+pTx_); - eStat_ += (duration-durUsage)* pIdle_ * (wifi_link->get_nb_hosts_on_link()+1); - XBT_DEBUG("eDyn += %f * ((%d * %f) + %f) | eDyn = %f (durusage =%f)", durUsage, wifi_link->get_nb_hosts_on_link(), pRx_, pTx_, eDyn_, durUsage); + eDyn_ += /*duration * */ durUsage * ((wifi_link->get_host_count() * pRx_) + pTx_); + eStat_ += (duration - durUsage) * pIdle_ * (wifi_link->get_host_count() + 1); + XBT_DEBUG("eDyn += %f * ((%d * %f) + %f) | eDyn = %f (durusage =%f)", durUsage, wifi_link->get_host_count(), pRx_, + pTx_, eDyn_, durUsage); durTxRx+=duration; }else{ durIdle+=duration; - eStat_ += (duration-(duration*controlDuration_)) * pIdle_ * (wifi_link->get_nb_hosts_on_link()+1); + eStat_ += (duration - (duration * controlDuration_)) * pIdle_ * (wifi_link->get_host_count() + 1); } - XBT_DEBUG("eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_nb_hosts_on_link(), eStat_); + XBT_DEBUG("eStat_ += %f * %f * (%d+1) | eStat = %f", duration, pIdle_, wifi_link->get_host_count(), eStat_); } diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 687ce0d796..b8062126e2 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -373,6 +373,7 @@ set(PLUGINS_SRC src/plugins/host_dvfs.cpp src/plugins/host_energy.cpp src/plugins/link_energy.cpp + src/plugins/link_energy_wifi.cpp src/plugins/host_load.cpp src/plugins/file_system/s4u_FileSystem.cpp src/plugins/vm/VirtualMachineImpl.hpp