X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..cee8b7d98f1c3b6738ad5f0b20de7bed9ba08d5a:/src/instr/instr_platform.cpp diff --git a/src/instr/instr_platform.cpp b/src/instr/instr_platform.cpp index b77017a92c..83cd96603d 100644 --- a/src/instr/instr_platform.cpp +++ b/src/instr/instr_platform.cpp @@ -15,7 +15,7 @@ #include "src/instr/instr_private.hpp" #include "src/kernel/resource/CpuImpl.hpp" -#include "src/kernel/resource/StandardLinkImpl.hpp" +#include "src/kernel/resource/NetworkModel.hpp" #include "src/surf/surf_interface.hpp" #include @@ -50,12 +50,9 @@ static simgrid::instr::Container* lowestCommonAncestor(const simgrid::instr::Con int j = static_cast(ancestors_a2.size()) - 1; while (i >= 0 && j >= 0) { simgrid::instr::Container* a1p = ancestors_a1.at(i); - const simgrid::instr::Container* a2p = ancestors_a2.at(j); - if (a1p == a2p) { - p = a1p; - } else { + if (a1p != ancestors_a2.at(j)) break; - } + p = a1p; i--; j--; } @@ -131,8 +128,7 @@ static void recursiveGraphExtraction(const simgrid::s4u::NetZone* netzone, const std::map> edges; netzone->get_impl()->get_graph(graph, &nodes, &edges); - for (auto const& elm : edges) { - const xbt_edge* edge = elm.second; + for (auto const& [_, edge] : edges) { linkContainers(simgrid::instr::Container::by_name(static_cast(edge->src->data)), simgrid::instr::Container::by_name(static_cast(edge->dst->data)), filter); } @@ -151,8 +147,8 @@ static void recursiveNewVariableType(const std::string& new_typename, const std: if (root->get_name() == "LINK") root->by_name_or_create(std::string("b") + new_typename, color); - for (auto const& elm : root->get_children()) { - recursiveNewVariableType(new_typename, color, elm.second.get()); + for (auto const& [_, child] : root->get_children()) { + recursiveNewVariableType(new_typename, color, child.get()); } } @@ -167,8 +163,8 @@ static void recursiveNewUserVariableType(const std::string& parent_type, const s if (root->get_name() == parent_type) { root->by_name_or_create(new_typename, color); } - for (auto const& elm : root->get_children()) - recursiveNewUserVariableType(parent_type, new_typename, color, elm.second.get()); + for (auto const& [_, child] : root->get_children()) + recursiveNewUserVariableType(parent_type, new_typename, color, child.get()); } void instr_new_user_variable_type(const std::string& parent_type, const std::string& new_typename, @@ -183,8 +179,8 @@ static void recursiveNewUserStateType(const std::string& parent_type, const std: if (root->get_name() == parent_type) root->by_name_or_create(new_typename); - for (auto const& elm : root->get_children()) - recursiveNewUserStateType(parent_type, new_typename, elm.second.get()); + for (auto const& [_, child] : root->get_children()) + recursiveNewUserStateType(parent_type, new_typename, child.get()); } void instr_new_user_state_type(const std::string& parent_type, const std::string& new_typename) @@ -198,8 +194,8 @@ static void recursiveNewValueForUserStateType(const std::string& type_name, cons if (root->get_name() == type_name) static_cast(root)->add_entity_value(val, color); - for (auto const& elm : root->get_children()) - recursiveNewValueForUserStateType(type_name, val, color, elm.second.get()); + for (auto const& [_, child] : root->get_children()) + recursiveNewValueForUserStateType(type_name, val, color, child.get()); } void instr_new_value_for_user_state_type(const std::string& type_name, const char* value, const std::string& color) @@ -210,6 +206,11 @@ void instr_new_value_for_user_state_type(const std::string& type_name, const cha namespace simgrid { namespace instr { +/** @brief Creates a file with the topology of the platform file used for the simulator. + * + * The graph topology will have the following properties: all hosts, links and routers of the platform file are mapped + * to graph nodes; routes are mapped to edges. The platform's zones are not represented in the output. + */ void platform_graph_export_graphviz(const std::string& output_filename) { auto* g = xbt_graph_new_graph(0, nullptr); @@ -231,12 +232,12 @@ void platform_graph_export_graphviz(const std::string& output_filename) fs << " node [shape=box, style=filled]" << std::endl; fs << " node [width=.3, height=.3, style=filled, color=skyblue]" << std::endl << std::endl; - for (auto const& elm : nodes) - fs << " \"" << elm.first << "\";" << std::endl; + for (auto const& [node, _] : nodes) + fs << " \"" << node << "\";" << std::endl; - for (auto const& elm : edges) { - const char* src_s = static_cast(elm.second->src->data); - const char* dst_s = static_cast(elm.second->dst->data); + for (auto const& [_, edge] : edges) { + const char* src_s = static_cast(edge->src->data); + const char* dst_s = static_cast(edge->dst->data); if (g->directed) fs << " \"" << src_s << "\" -> \"" << dst_s << "\";" << std::endl; else @@ -338,15 +339,11 @@ static void on_action_state_change(kernel::resource::Action const& action, double value = action.get_rate() * action.get_variable()->get_constraint_weight(i); /* Beware of composite actions: ptasks put links and cpus together. Extra pb: we cannot dynamic_cast from void* */ kernel::resource::Resource* resource = action.get_variable()->get_constraint(i)->get_id(); - const kernel::resource::CpuImpl* cpu = dynamic_cast(resource); - - if (cpu != nullptr) + if (const auto* cpu = dynamic_cast(resource)) resource_set_utilization("HOST", "speed_used", cpu->get_cname(), action.get_category(), value, action.get_last_update(), simgrid_get_clock() - action.get_last_update()); - const kernel::resource::StandardLinkImpl* link = dynamic_cast(resource); - - if (link != nullptr) + if (const auto* link = dynamic_cast(resource)) resource_set_utilization("LINK", "bandwidth_used", link->get_cname(), action.get_category(), value, action.get_last_update(), simgrid_get_clock() - action.get_last_update()); }