#include "simgrid/s4u/Engine.hpp"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/s4u/VirtualMachine.hpp"
+#include "src/surf/cpu_interface.hpp"
#include "src/surf/network_interface.hpp"
#include "src/surf/xml/platf_private.hpp"
#include "surf/surf.hpp"
}
}
+static void instr_cpu_action_on_state_change(simgrid::surf::CpuAction* action,
+ simgrid::kernel::resource::Action::State previous)
+{
+ simgrid::surf::Cpu* cpu = static_cast<simgrid::surf::Cpu*>(action->get_variable()->get_constraint(0)->get_id());
+ TRACE_surf_resource_set_utilization("HOST", "power_used", cpu->get_cname(), action->get_category(),
+ action->get_variable()->get_value(), action->get_last_update(),
+ SIMIX_get_clock() - action->get_last_update());
+}
+
static void instr_netpoint_on_creation(simgrid::kernel::routing::NetPoint* netpoint)
{
if (netpoint->is_router() && TRACE_needs_platform() && TRACE_is_enabled())
simgrid::s4u::NetZone::onSeal.connect(instr_netzone_on_seal);
simgrid::kernel::routing::NetPoint::onCreation.connect(instr_netpoint_on_creation);
+ simgrid::surf::CpuAction::onStateChange.connect(instr_cpu_action_on_state_change);
+
if (TRACE_actor_is_enabled()) {
simgrid::s4u::Actor::on_creation.connect(instr_actor_on_creation);
simgrid::s4u::Actor::on_suspend.connect(instr_actor_on_suspend);
XBT_PUBLIC bool TRACE_smpi_view_internals();
/* from resource_utilization.c */
-XBT_PRIVATE void TRACE_surf_host_set_utilization(const char* resource, const char* category, double value, double now,
- double delta);
+XBT_PRIVATE void TRACE_surf_resource_set_utilization(const char* type, const char* name, const char* resource,
+ const char* category, double value, double now, double delta);
XBT_PRIVATE void TRACE_surf_link_set_utilization(const char* resource, const char* category, double value, double now,
double delta);
variable->subEvent(now + delta, value);
}
-static void TRACE_surf_resource_set_utilization(const char* type, const char* name, const char* resource,
- const char* category, double value, double now, double delta)
+void TRACE_surf_resource_set_utilization(const char* type, const char* name, const char* resource, const char* category,
+ double value, double now, double delta)
{
// only trace resource utilization if resource is known by tracing mechanism
container_t container = simgrid::instr::Container::byNameOrNull(resource);
{
TRACE_surf_resource_set_utilization("LINK", "bandwidth_used", resource, category, value, now, delta);
}
-
-/* TRACE_surf_host_set_utilization: entry point from SimGrid */
-void TRACE_surf_host_set_utilization(const char* resource, const char* category, double value, double now, double delta)
-{
- TRACE_surf_resource_set_utilization("HOST", "power_used", resource, category, value, now, delta);
-}
CpuAction* action = static_cast<CpuAction*>(get_action_heap().pop());
XBT_CDEBUG(surf_kernel, "Something happened to action %p", action);
- if (TRACE_is_enabled()) {
- Cpu* cpu = static_cast<Cpu*>(action->get_variable()->get_constraint(0)->get_id());
- TRACE_surf_host_set_utilization(cpu->get_cname(), action->get_category(), action->get_variable()->get_value(),
- action->get_last_update(), now - action->get_last_update());
- }
action->finish(kernel::resource::Action::State::done);
XBT_CDEBUG(surf_kernel, "Action %p finished", action);
for (auto it = std::begin(*get_running_action_set()); it != std::end(*get_running_action_set());) {
CpuAction& action = static_cast<CpuAction&>(*it);
++it; // increment iterator here since the following calls to action.finish() may invalidate it
- if (TRACE_is_enabled()) {
- Cpu* cpu = static_cast<Cpu*>(action.get_variable()->get_constraint(0)->get_id());
- TRACE_surf_host_set_utilization(cpu->get_cname(), action.get_category(), action.get_variable()->get_value(),
- now - delta, delta);
- TRACE_last_timestamp_to_dump = now - delta;
- }
action.update_remains(action.get_variable()->get_value() * delta);
if (TRACE_is_enabled()) {
Cpu* cpu = static_cast<Cpu*>(get_variable()->get_constraint(0)->get_id());
- TRACE_surf_host_set_utilization(cpu->get_cname(), get_category(), get_last_value(), get_last_update(),
- now - get_last_update());
+ TRACE_surf_resource_set_utilization("HOST", "power_used", cpu->get_cname(), get_category(), get_last_value(),
+ get_last_update(), now - get_last_update());
}
XBT_CDEBUG(surf_kernel, "Updating action(%p): remains is now %f", this, get_remains_no_update());
}